注:数据链路层的SAP为MAC地址,网络层的SAP为IP地址
即接收端窗口rwnd
的大小
TCP报文段作为IP数据报的数据部分封装在IP数据报中,TCP报文段既可以用来运载数据也可以用来建立、释放连接和应答TCP首部的长度必需是4字节的整数倍
seq=x
seq=y
,同样不包含应用层数据seq=u
,TCP是全双工的,当发送FIN报文时,发送的那一端就不能再发送数据了,而接收的那一段此时仍可以发送数据seq=u+1
,此时TCP连接没有被释放掉,等待2MSL后客户端关闭连接TCP连接的端口为套接字,主动发起连接的为客户机,被动等待连接的为服务器MSL为最长报文段寿命,一般为2分钟
rwnd
和拥塞窗口cwnd
的最小值发送窗口的单位是字节数,比如发送窗口值为2000,意思为发送端在收到一个确认之前最多还可以发送2000字节
cwnd=1
(即1个最大报文段的长度MSS),每经过一个传输轮次(即一个往返时延RTT),拥塞窗口cwnd
就开始加倍,当其增大到一个规定的阈值ssthresh
之后,改用拥塞避免算法cwnd
每经过一个RTT就增加一个MSS的大小,使其加法增大,每当出现一次超时时,令慢开始门限ssthresh
等于当前cwnd
的一半,即乘法减小,然后比较cwnd
和ssthresh
的大小:cwnd < ssthresh
时,使用慢开始算法cwnd > ssthresh
时,使用拥塞避免算法cwnd = ssthresh
时,通常使用拥塞避免算法,也可以使用慢开始算法ssthresh
设置为cwnd
的一半,然后把cwnd
重新设置为1,重新开始慢开始算法
好好体会上图的过程并且要注意发送窗口的取值为拥塞窗口和接收窗口的最小值拥塞窗口是由发送端根据网络拥塞情况确定的窗口值,初始的拥塞窗口的大小为最大报文段的长度。如果当前cwnd
为4而ssthresh
为6,那么从4的下一个即为6(直接上升到门限值),然后开始往后为加法增大
ssthresh
设置为cwnd
的一半,然后将cwnd
设置为改变后的ssthresh
的值,然后执行加法增大的拥塞避免算法TFTP指的是小文本传送协议,RTP为实时协议
UDP没有拥塞控制,因此网络拥塞也不会影响UDP的发送效率,某些应用中要求数据以稳定的速度发送,可以容忍一些数据的丢失,所以适合选择UDP,例如电话会议直播等