一、TCP报文格式:
(1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
(2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效, Ack=Seq+1。
(3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
(A)URG:紧急指针(urgent pointer)有效。
(B)ACK:确认序号有效。
(C)PSH:接收方应该尽快将这个报文交给应用层。
(D)RST:重置连接。
(E)SYN:发起一个新连接。
(F)FIN:释放一个连接。
二、三次握手
为什么要三次而不是两次呢,我的理解是这样的:
1、客户端想要连接服务器,对服务器发起请求
2、服务器同意连接,并发回同意的响应
如果这个时候,没有三次握手,服务器同意的响应在网络上丢包了,客户端会认为服务器拒绝了请求,而服务器则一直在等待客户端发来的数据。
三、四次挥手
TCP连接的释放一共需要四步,因此称为四次挥手,我们知道,TCP连接是双向的,因此在四次挥手中,前两次挥手用于断开一个方向的连接,后两次挥手用于断开另一方向的连接。