TCP连接管理
本节将介绍一条TCP连接是如何建立和拆除的。此处假设客户机A上面的一个进程想要和服务
器B上的一个进程建立一条TCP连接。本文前面介绍的是比较正常的连接和拆除,特殊的会在后面介绍。
TCP连接建立
第一步
客户机A的TCP会向服务器的TCP发送一个不包含应用层数据的数据的TCP报文段。该报文段中首部标志位S YN被置为1,此报文段也被叫做SYN报文段。并且A会随机地选择一个初始序号(client_isn),将其填入首部中的序号字段(注意为了避免某些安全性的攻击,此处的随机化选择有着不少研究,后面会补充)。然后,该报文被封装进IP数据报,发送给服务器。
第二步
一旦TCP SYN报文段的IP数据包到达服务器后,服务器就会从IP数据包中提取出TCP SYN报文段,为该TCP连接分配TCP缓存和变量,并向客户机发送允许TCP连接的报文段,这个报文段也不包含应用层数据。(这里需要注意如果在完成三次握手的第三步之前分配缓存和变量会使得TCP易受到称为SYN洪泛的拒绝服务攻击服务)
在发送的报文中,标志位SYN被置为1,确认序号被置为client_isn+1,
服务器也会选用一个初始序号将其放入报文中的序号字段。这个报文有时也会被称为SYNACK报文段(SYNACK segment)。
第三步
在收到SYNACK报文段后,客户也要给这个连接分配缓存和变量。然后,