1 预备知识
要了解TCP通信,必须得对TCP报文格式熟悉,下图是TCP报文格式,简单说下跟TCP连接三次握手和TCP断开三次握手及半关闭的四向握手有关的几个字段,
分别是:SYN、ACK、FIN以及序号和确认号字段。
image以下假设客户端A想跟服务器B通信
2 TCP连接三次握手
step1 A发出一个TCP报文,其中置SYN=1,并随机初始化一个数给序号字段,假设是x;
step2 B收到请求后回复一个报文,置SYN=1,ACK=1,确认号为x+1,序号也是一个随机值,假设为y;
step3 A收到报文后回复B,置ACK=1,序号仍为x,确认号为y+1.
3 TCP断开三次握手
step1 A发出一个TCP报文,置FIN=1,假设此时的序号为x,确认号为y;
step2 B回复A,置FIN=1,ACK=1,序号为y,确认号为x+1;
step3 A回复B,置ACK=1,序号为x,确认号为y+1
4 TCP半关闭的四次握手
step1 A发出一个TCP报文,置FIN=1,假设此时的序号为x,确认号为y;
step2 B回复A,置ACK=1,序号为y-1,确认号为x+1;
...(B给A发数据阶段)
step3 B发出报文给A,置FIN=1,序号假设为z,确认号为x+1;
step4 A回复B,置ACK=1,序号为x,确认号为z+1
网友评论