赞
踩
TCP数据被封装在一个IP数据包中
TCP首部的数据格式,前20个字节。
URG 紧急指针(urgent pointer)有效。
ACK 确认序号有效。
PSH 接收方应该尽快将这个报文段交给应用层。
RST 重建连接。
SYN 同步序号用来发起一个连接。
FIN 发端完成发送任务。
TCP正常连接建立和终止所对应的状态
在FIN _ WAIT _ 2状态我们已经发出了 FIN,并且另一端也已对它进行确认。除非我们在实行半关闭,否则将等待另一端的应用层意识到它已收到一个文件结束符说明,并向我们发一个FIN来关闭另一方向的连接。只有当另一端的进程完成这个关闭,我们这端才会从FIN _ WAIT _ 2状态进入TIME _ WAIT状态。这意味着我们这端可能永远保持这个状态。另一端也将处于 CLOSE _ WAIT状态,并一直保持这个状态直到应用层决定进行关闭。
许多伯克利实现采用如下方式来防止这种在FIN _ WAIT _ 2状态的无限等待。如果执行主动关闭的应用层将进行全关闭,而不是半关闭来说明它还想接收数据,就设置一个定时器。如果这个连接空闲10分钟75秒,TCP将进入CLOSED状态。
称窗口左边沿向有边沿靠近称为窗口合拢。这种现象发生在数据被发送和确认但没有被应用进程读走时。
当窗口右边沿向右移动时将允许发送更多的数据,我们称之为窗口张开。这种现象发生在另一端的接收进程读取已经确认的数据并释放了TCP的接受缓存时。
如果左边沿到达右边沿,则称其为一个零窗口,此时发送方不能发送任何数据。
TCP的四种拥塞控制算法
拥塞窗口cwnd的维护原则:只要网络没有出现拥塞,拥塞窗口就再增大一些;但只要网络出现拥塞,拥塞窗口就减少一些。
判断网络出现拥塞的依据:没要按时收到应当到达的确认报文(即发生超时重传)
当cwnd<ssthresh时:使用慢开始算法
当cwnd>ssthresh时:停止使用慢开始算法而改用拥塞避免算法
当cwnd=ssthresh时:既可以使用慢开始算法也可以使用拥塞避免算法
快重传
有时,个别报文段会在网络中丢失,但实际上网络并未发生拥塞
这将导致发送方超时重传,并误认为网络发生了拥塞
发送方把拥塞窗口cwnd又设置为1,并错误地启动慢开始算法,因而降低了传输效率
要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认
即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认
发送发一旦收到了3个连续的重复确认,就将相应的报文段立即重传,而不是等待该报文段的超时重传计数器超时再重传。
快恢复
发送方一旦收到3个重复确认,就知道现在只是丢失了个别的报文段。于是不启动慢开始算法,而执行快恢复算法。
发送方将慢开始门限ssthresh值和拥塞窗口cwnd值调整为当前窗口的一半;开始执行拥塞避免算法
也有的快恢复实现是把快恢复开始时的拥塞窗口cwnd值再增大一些,即等于新的ssthresh + 3
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。