1.tcp三次握手
第一次握手:客户端主动发送链接请求,将SYN序列号置为j,服务器被动打开。
第二次握手:服务器收到SYN请求后,会向客户端发送一个SYN及ACK应答,ACK序列号为j+1,SYN序列号为k。
第三次握手:客户端收到应答后,再回复一个ACK K+1,表示收到了。
2.tcp的拥塞机制
拥塞控制:防止过多的数据注入到网络中,让网络中的设备不至于过载,是一个全局控制。
流量控制:是端到端的,主要是抑制发送端的传输速率,使接收端能来得及接收。
拥塞的标志:重传计时器超时,接收到三个重复确认。
拥塞控制的机制:
慢开始:不是一开始就发送大量数据,而是先探测一下网络的拥塞程度,逐渐增加拥塞窗口CWND的大小。为了防止拥塞窗口CWND增长过大导致拥塞,需要设置一个门限状态变量ssthresh
当CWND<ssthresh时,使用慢开始算法。
当cwnd=ssthresh时,慢开始与拥塞避免算法随意。
当cwnd>ssthresh时,使用拥塞避免算法。
拥塞避免:通过每经过一个往返时间RTT,就把发送方的cwnd加1,而非加倍使得拥塞窗口线性缓慢增长。
无论在哪个阶段,如果发送方没有收到确认ack,就会判断为拥塞,然后将慢开始门限设置为出现拥塞时发送窗口的一半,将拥塞窗口置为1,执行慢开始算法。
快重传与快恢复:当接收方收到失序的报文段后就会立即发出重复确认,发送方收到3个重复确认后就会立即重传未收到的报文段。当发送方收到3个重传确认的同时,会将ssthresh门限减半,将cwnd置为sshresh大小,执行拥塞避免算法(发送方认为能收到重传确认,网络可能没有拥塞)。
3.tcp的标志位
urg:紧急指针 ack:置1时表示确认号 psh:置1时请求的数据段在接收方收到后就会直接送到应用程序,不会等到缓冲区满再送, rst:置1时,重连接。syn:置1,发起一个连接。fin:置1发端完成发送任务,用来释放连接。