前言:其实之前整理过,但是对于连接释放阶段的细节不太清楚,再写一下加深一些印象。

一、连接建立(三次握手):

SYN:同步位

值为1时表示一个连接请求。

FIN:关闭位

值为1时表示一个关闭请求。

ACK:确认位

值为1时表示确认有效,0表示确认无效。

ack:确认号

一般为对方发送的seq序号加上1

seq:序列号

一般是从某一地址随机开始,然后接着用

image-20230530161538320

二、连接释放(四次挥手):

image-20230530175449497

1)客户端发送FIN=1,序列号seq=u(随机一个数字)

2)服务端发送ACK=1,并确认收到了客户端的序列号,发送ack=u+1,自己也发送序列号seq=v(随机一个数字),此时TCP处于半关闭状态,A对B的通道已经关闭,但B还可给A发送数据

3)服务端发送FIN=1,序列号seq=w(中间存在数据继续发送,因此不能等于v+1),ACK=1,收到确认ack=u+1(A没有对B有新的序列号发送,因此ack不变)

4)客户端发送ACK=1,收到序列号并发送确认ack=w+1,seq=u+1(中间不存在A对B的数据发送,因此序列号可接着用)