TCP报文:

1.win=x 是接收窗口,向对方说明自己接收窗口大小
2.MSS:最大报文段长度(maximum segment size),单位:字节,每个TCP报文数据部分的最大
3.发送窗口 :决定一次发送的字节数,MSS决定这些字节分几个包传输
发送窗口
由发送方维护,受接收窗口
和网络
影响
4.拥塞点:导致网络拥塞的数据量
难点:要尽可能避免达到拥塞点,解决办法(现有的最好的):拥塞窗口
5.拥塞窗口过程:
- 第一版
(1)慢开始:刚建立时,先把拥塞窗口 设置较小,试探一下
(2)没问题,逐步增大,翻倍,慢启动/慢开始
,到达初始门限,
(3)拥塞避免:每个往返+1,拥塞避免
(4)出现网络拥塞(超时重传),到达拥塞点,门限减半(乘法减小
),拥塞窗口变为1MMS,再次进入慢开始。 - 第二版
(1)慢开始:刚建立时,先把拥塞窗口 设置较小,试探一下
(2)没问题,逐步增大,翻倍,慢启动/慢开始
,到达初始门限,
(3)拥塞避免:每个往返+1,拥塞避免
(4)启动快速重传,进入快恢复阶段。 - 超时重传对传输性能有严重影响。 原因之一是在RTO阶段不能传数据, 相当于浪费了一段时间; 原因之二 是拥塞窗口的急剧减小, 相当于接来传得慢多了。
改进:快速重传
,接收方每接收到一个未按序到达的报文就发出确认,当发送方收到三个连续确认就立即重传而不必等到超时重传
。
超时重传:慢开始+慢开始(门限减半,拥塞窗口为1)
快速重传:慢开始+快恢复 (门限减半,拥塞窗口也为减半后的门限)
6.RTO: 丢包等待时间, 超时重传
,少量丢包不会启动超时重传
,因为少量丢包后续的到达的包会使接收方发送Ack包说明自发生了丢包,从而启动 快速重传
。在调整拥塞窗口时使用快恢复。
丢包时,发送方在一段时间内没有收到确认包时,会启动超时重传,而导致丢包的原因很大可能是网络拥塞,即发送方发送的数据量太大,因此需要传输控制。
-
三次握手
TCP三次握手
初始状态:
A:closed,B:closed
第一次握手:A发送SYN包给B发起建立连接的请求后进入SYN-SENT阶段
第二次握手:B发送ACK-SYN给A,ACK是对A的SYN包的确认,SYN是B给A发的建立连接的请求(可以认为把两个动作合在一个包里),B进去SYN-RCVD阶段(半打开状态)。
第三次握手:A收到B的ACK-SYN报文,其中的ACK让B进入ESTAB-LISTED 阶段,同时发送ACK报文对B的连接请求进行确认。
B收到A的ACK报文后也进入ESTAB-LISTED。
- 为什么要进行三次握手?
加入只有两次即B接收到A的SYN报文并回复ACK-SYN报文后就建立连接,而不等到A的确认,那么考虑一种情况,即A之前发的SYN报文在网络中阻塞,当AB已经建立好了连接后,阻塞的报文又到了B,假如只有两次握手那么B就会同意建立连接,这会浪费资源。而如果是三次握手,B需要A的确认,而A是不会确认的,因此这个无效的SYN报文就无法建立连接。
-
四次挥手
TCP四次挥手
网友评论