传输层 - 图3

1.概述

传输层为应用层提供通信服务,使用网络层的服务。
传输层功能:
1.传输层提供进程和进程之间的逻辑通信。
2.复用和分用
3.传输层对接收到的报文进行差错检测。
4.传输层的两种协议(TCP和UDP)

1.两个协议

image.png

2.寻址与端口

image.png
image.png

2.UDP协议

UDP只在IP数据报服务上增加了很少功能,即复用分用和差错检测功能。

1.UDP特点

UDP的主要特点:
1.UDP是无连接的,减少开销和发送数据之前的时延。
2.UDP使用最大努力交付,即不保证可靠交付。
3.UDP是面向报文的,适合一次性传输少量数据的网络应用。
4.UDP无拥塞控制,适合很多实时应用。
5.UDO首部开销小8B,TCP为20B。
image.png

2.UDP首部格式

image.png

3.UDP校验

image.png
image.png

3.TCP协议

1.TCP特点

TCP特点:
1.TCP是面向连接(虚连接)的传输层协议。
2.每一条TCP连接只能有两个端点,每一条TCP连接是点对点的。
3.TCP提供可靠交付的服务,无差错,不丢失,不重复,按序到达。
4.TCP提供全双工通信。(发送缓存和接收缓存)
5.TCP面向字节流。

2.TCP首部格式

1.16位端口号
6个控制位(URG,ACK,PSH,RST,SYN,FIN)
image.png
image.png

3.TCP连接管理

TCP连接采用客户服务器方式,主动发送连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫做服务器。

1.三次握手(建立连接请求)

ROUND1:SYN=1 , seq=x(随机) (SYN=1表明一个连接请求/连接接收报文[连接请求],seq表示所发送报文的序号)
ROUND2:SYN=1 , ACK=1, seq = y(随机) , ack=x+1 (连接接收 , ACK=1连接建立后所有传输的报文字段都必须为1 , seq表示接收方所发送报文的序号 , ack=x+1表示希望收到的下一个确认是x+1)
ROUND3: ACK=1, seq = x+1 , ack=y+1 (ACK=1连接建立后所有传输的报文字段都必须为1 , seq=x+1表示发送方所发送报文的序号 , ack=y+1表示希望收到的下一个确认是y+1)[连接建立后就不需要SYN位了]
image.png

2.四次握手(释放连接请求)

ROUND1:FIN=1 , seq=u (FIN=1表示该报文段要发送的数据已全部发完,要求释放连接)
ROUND2:ACK=1 , seq=v , ack=u+1 (ACK=1连接建立后所有传输的报文字段都必须为1,希望接收到的是u+1)
ROUND3:FIN=1 , ACK=1 , seq=w , ack=u+1 (FIN=1表示该报文段要发送的数据已全部发完,要求释放连接)
ROUND4: ACK=1 , seq=u+1 , ack=w+1 ()
image.png

4.TCP可靠传输

可靠:保证接收方进程从缓存区域独处的字节流与发送方发出的字节流是完全一样的。

1.校验

与UDP一样,增加伪首部。

2.序号

以报文段为单位为报文段增加序号。
image.png

3.确认

接收方在接收到报文后,返回确认已发送报文段。
image.png

4.重传(超时&冗余确认)

确认重传不分家,TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段。(超时重传)
TCP采用自适应的算法,动态的改变重传时间RTTs(加权平均往返时间)。

冗余ACK(冗余确认)
image.png

5.TCP流量控制

流量控制:让发送方慢点,要让接收方来得及接收。
TCP利用滑动窗口机制实现流量控制。
在通信过程中,接收方根据自己接收缓存的大小,动态的调整发送方的发送窗口大小,即接收窗口rwnd(接收方设置确认报文段的窗口字段来将rwnd通知给发送方),发送方的发送窗口取决接收窗口rwnd和拥塞窗口cwnd的大小值

image.png

6.TCP拥塞控制

出现拥塞的条件:
对资源需求的总和 > 可用资源

接收方并不知道是哪几个发送方发送过快造成的拥塞。
image.png

image.png

1.慢开始&拥塞避免

image.png
1.慢开始 开始时设置cwnd=1,慢慢发送,接着按指数形式增大发送窗口,门限值为16。(0-4)
2.拥塞避免 发送窗口过大时,开始按线性增长形式增大发送窗口,在发生网络拥塞时减小门限值为12(4-13)

2.快重传&快恢复

image.png
1.快重传 当收到三个重复确认帧(冗余ack)的时候,在超时计时器到期之前,马上执行快重传。
2.快恢复 出现重复确认帧后,不是把窗口门限值降为1,而是,而是将当前门限降为一半。