0%

计算机网络 传输层

传输层就关注两个TCP和UDP。
除此之外我们再关注下多路复用与多路分解。
在对UDP和TCP介绍之前,我们先简要介绍下网络层,网络层协议即IP,IP的服务模型即尽力而为去交付,尽力而为是委婉的说法,直接点说就是网络层是不靠谱的,传输中数据可能丢失、被更改、等等,即IP是不可靠的服务协议。TCP和UDP是建立在IP之上实现的。TCP和UDP的主要职责就是将两个IP之间的数据传输转换到两个进程之间的数据传输,并以此引出多路复用与多路分解。

多路复用与多路分解

什么是多路复用与多路分解呢,就是将网络层两个IP之间的数据传输转换到两个端进程的数据传输。

多路复用其实就是把各端口(进程绑定端口)的数据用端口号包装了下,扔到了网络层。
到了目的传输层后,通过拆解端口的包装来决定分配给哪个socket,这也就是多路分解。
TCP与UDP在多路复用上差不多,在多路分解上会有些差别。
UDP多路分解时仅看目的端口号,这意味着不同源向相同的IP:端口发送,那么将被同一个套接字接收。
而对于tcp而言,他需要源IP:源端口号以及目的IP:目的端口号才能确定要将数据发送给哪个套接字。

以上也是粗略理解,会随着一点点学习来更新以上说法。

UDP

无连接、不可靠的传输协议。

【RFC768】定义UDP仅需要提供传输协议最基本的要求就可以了,所以UDP仅提供了多路分解/多路复用这必要的能力以及基本的差错检测能力。
DNS便使用UDP来请求DNS服务器。

相比TCP,UDP具有更加自由的优势,你可以自己在应用层通过封装UDP来自定义一个可靠传输的协议,从而去除一些不想要的TCP特性,比如拥塞控制等等。

UDP报文段结构

UDP报文段结构

可以看到,UDP的报文段内容是很简单的,首部仅有8个字节,其余就是要传输的数据内容了。

UDP检验和

这里不做详细介绍,传输前UDP对自身报文段进行各种反码补码位数加减操作得到了检验和,然后到达目的地在利用检验和做完成性校验,就完事了。当出现差错时,该报文段就会被丢弃,并提醒应用层:“有个坏了的报文段被我丢弃了,你注意点。”

TCP

有连接、可靠的传输协议。

在不可靠的IP协议上,建立一个可靠的传输协议,TCP应该怎么做呢,这时我们要思以及学习的重点内容。

-------- 本文结束 感谢阅读 --------