Chapter5 运输层(二)
可靠传输的工作原理
可靠传输:
- 理想信道:传输信道不产生差错,不管发送速率多快都要来得及接受。
-
不理想信道: 出错,让对方重传,传送速度太快,让对方降速。
使用确认重传机制,就可以在不可靠的传输网络上实现可靠通信。
ARQ(自动重传请求)
连续ARQ协议
- 累积确认:不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,表示到这个分组为止的所有分组都已经正确收到了。优点:易于实现,即使确认丢失也不必重传。缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。
- Go-back-N:表示需要再退回来重传已经发送过的N个分组。
可靠通信的具体实现:
- TCP连接的每一端都设有两个端口,发送端口和接受端口
- TCP的可靠传输机制用字节的序号进行控制。TCP所有的确认都是基于序号而不是基于报文段的。
- 两端的四个窗口经常处于动态变化之中。
- RTT也是动态的。需要使用特定的算法估算较为合理的重传时间。
TCP报文段的首部格式
序号:本报文段发送的数据的第一个字节的序号
确认号:是期望收到对方的下一个报文段的数据的第一个字节的序号。
数据偏移:即TCP报文段首部长度,最大为60字节,选项长度不超过40字节。
紧急URG:URG=1时,有效。告诉系统此报文段中有紧急数据,应尽快传送。
ACK:为1时有效
PSH:PSH = 1时,就尽快地交付接受应用进程,而不是等到缓存填满了再向上交付。
RST:为1时,表明TCP连接出现严重差错,必须释放连接,再重新建立连接。
SYN:为1时表明这是一个连接请求或连接接受报文。
FIN:为1时表明此报文段的发送端数据已经发送完毕,并要求释放运输连接。
窗口字段:占2 字节,用来让对方设置发送窗口的依据,单位为字节,告诉对方接收方目前允许对方发送的数据量。要有限制的原因是接收方数据缓存有限。
检验和:检验范围包括首部和数据两部分。计算检验和时,要在TCP报文段前面加上12字节的伪首部。
紧急指针字段:指出在本报文段中紧急数据共有多少个字节。
选项字段:最大报文段长度MSS,告诉对方TCP,我的缓存能够接受的报文段的数据字段的最大长度是MSS个字节。MSS小,利用率低,MSS大,IP分段增加开销。
TCP可靠传输的实现
(几张图待补)
发送缓存与接收缓存的作用
发送缓存用来暂时存放:发送应用程序传送给发送方TCP准备发送的数据。 TCP已经发送出去但尚未收到确认的数据
接受缓存用来暂时存放:按序到达的,但尚未被接受应用程序读取的数据。不按序到达的数据。
A的发送窗口并不总是和B的接受窗口一样大。TCP标准没有规定对不按序到达的数据应如何处理。要求接收方有累计确认的功能,这样能减少传输开销。
选择确认SACK
(后面琐碎待补)