1.TCP连接的建立,三次握手
第一次握手:
SYN设置为1,表明是建立连接,此时发送的序号是随机的
第二次握手:
注意:
此时开始分配缓存和变量了
大写的ACK代表的是确认标志位,只要连接上了都得设置为1
小写ack表示下次想收到得序号
大写ACK和小写ack配套出现。
因为上一次握手没有ack,所以seq还是随机的。
第3次握手
此时不再是建立连接或者接受建立连接了,所以SYN设置为0
seq等于上一次握手的ack
ack等于上一次握手发送的seq+1
三次握手的应用:
SYN洪泛攻击
2.TCP连接的释放,四次挥手
过程如下图:
第一次挥手:
FIN=1容易理解,seq=u,代表报文段第一个字节的序号,因为没有这里一般没有数据,所以可以标识这个报文段。
第二次挥手
seq=v,这个和服务器上一次发送的数据的值有关,如果上一次发到了v-1,那么这次seq就为v。
第三次挥手
seq=w,w也取决于上一次发送到哪了
ack=u+1,是因为客户端没有回应,这次还是发送u+1
第四次挥手
这几个字段都很好理解
等待2MSL是因为如果第三次挥手后,客户端给服务器的第四次挥手丢失了,那么如果此时客户端马上关闭,服务器收不到让它关闭的第四次挥手,就不能正常关闭。为了防止这个情况,设置2MSL等待时间,因为服务器在一定时间没收到,会重新进行重传。