运输层的多路复用与多路分解————数据在应用层与运输层间的传递 在叙述数据在应用层与运输层间的传递之前,我们需要先了解什么是
套接字 ?
套接字SOCKET:它相当于从网络向进程传递数据和从进程向网络传递数据的门户,在主
机的运输层中,实际上并没有直接将数据交付给进程,而是将数据交给了中间的一个套
接字,再通过该套接字将数据交给该套接字对应的进程。任意时刻,每个主机可能有多
个套接字,但每个套接字都有唯一的描述符。
多路复用:在源主机从不同套接字中收集数据块,并为每个数据封装上首部信息从而生成报
文段,然后将报文段传递到网络层
首部信息:
源端口号字段、目的端口号字段、其他首部字段(具体见下文UDP、TCP报文段结构)
端口号:一个16比特的数,其大小在0-65535之间
具体介绍:
https://blog.csdn.net/zuyi532/article/details/7731617 多路分解:将运输层报文段中的数据交付到正确的套接字
UDP只提供了运输层协议能够提供的最低限度的功能,除了
复用、分解功能及少量的差错检 测外它几乎没有对IP增加别的东西。
UDP作用过程:UDP从应用进程得到数据,附加上用于多路复用、分解所需的源和目
的地端口号字段,以及两个其他的小字段,然后将形成的报文段交给网络层。
UDP报文结构:
UDP校验和:用于确定UDP报文段从源到目的地的移动时,其中比特是否发生了改变
具体介绍:
www.cnblogs.com/noble/p/4144139.html UDP为何提供校验和?
端到端原则:与在较高级别提供某些功能相比,在较低级别上设置的功能可能是
冗余的或几乎没有价值。
优点: 1.关于何时、发送哪些数据的应用层控制更为精细
2.无需建立连接,因此UDP没有建立连接的时延
3.无连接状态,减少使主机开销
4.分组首部开销小
缺点: 1.UDP没有拥塞控制,可能导致发送方和接收方之间的高丢包率
2.不保证数据传输的可靠性(UDP应用可以通过在应用程序自身中建立可靠性机制来完成
可靠的数据传输)
面向连接的运输:TCP
TCP特点: 1.面向连接
2.全双工
3.提供可靠数据传送
4.拥塞控制
TCP被称为是
面向连接的,这是因为在一个进程可以向另一个进程发送数据之前,这
两个进程必须向相互“握手”,即相互发送某些预备报文段,以确定数据传输的参数。
全双工:如果一台主机上的进程A与另一台主机上的进程B之间存在一条TCP连接,那
么应用层数据就可以在进程B流向进程A的同时,也从进程A流向进程B
TCP传输数据的过程:
一旦建立起一条TCP连接,两个应用进程之间就可以相互发送数据,进程通过
套接字传
递数据流,TCP将这些数据引导进该连接的
发送缓存,TCP从发送缓存中取出数据块发送
TCP可以从缓存中取出并放入报文段中的数据数量受限于
最大报文段长度MSS,MSS通常
根据最初确定的由本地发送主机发送的
最大链路层帧长度(即最大传输单元MTU)确定
需要
注意的是MSS是指报文段中应用层数据的最大长度而不是指包括TCP首部的TCP报文
段的最大长度
TCP连接的建立与终止,在TCP连接终止后,主机中的资源(缓存、变量)都将被释放
TCP报文结构:
在上图中,我们可以看到TCP报文首部中两个最重要的字段是序号字段和确认号字
段,若果主机A向主机B发送一个TCP报文段,主机A填充进报文段的确认号是主机A
期望从主机B收到的下一字节的序号。
TCP的可靠数据传输服务确保一个从其接受缓存中读取的数据流是无损坏、无间隔、
非冗余和按序的数据流,即该字节流与连接的另一端系统发出的字节流时完全相同
那么TCP如何提供可靠地数据传送服务? TCP采用超时/重传机制来处理报文段的丢失问题,那么应该如何设置超时时间? 而TCP又是如何知道丢失了哪些报文段? 我们可能会想到,如果我们可以为每一个已发送但未被确认的TCP报文段设置一个
定时器,这样在判断超时时就会十分方便,但定时器的管理需要相当大的开销,因
此TCP在超时管理时仅使用
单一的重传定时器,即使有多个已发送但未被确认的报
文段。TCP发送方维持一个状态变量SendBase,这是最早已发送未被确认的字节的
序号。
TCP接收方只确认已收到的数据流中至第一个丢失字节为止的字节,所以TCP被称为
提供
累积确认 TCP将ACK的值y与SendBase比较,来确认是否超时。
TCP超时重传机制具体可参考:
https://blog.csdn.net/wdscq1234/article/details/52476231 TCP拥塞控制: TCP使用端到端拥塞控制,让每一个发送方根据感知到的网络拥塞程度来限制其能向
连接发送流量的速率。
1.当TCP发送方出现丢包事件(出现超时或收到接收方的三个冗余ACK)时,发送方就认
为在发送方到接收方的路径上出现了拥塞指示,此时应当降低减小发送方的速率
2.当对先前未确认报文段的确认到达时,能够增加发送方的速率
TCP拥塞控制算法: 慢启动:TCP发送速率起始慢,但在慢启动阶段以指数级增长
拥塞避免:一旦进入拥塞避免状态,即很快可能拥塞
快速恢复
TCP拥塞控制算法详述:
http://www.cnblogs.com/fll/archive/2008/06/10/1217013.html UDP、TCP各自的应用场景: UDP:DNS、远程文件服务器、网络管理、多媒体应用
TCP:电子邮件、远程终端访问、Web、文件传输、多媒体应用