文章目录
一、三次握手流程
一开始,客户端和服务端都处于 CLOSED 状态(CLOSED 是一个假想的起始点, 并不是真实状态),先是服务端主动监听某个端口,处于 LISTEN 状态
1、第一次握手
客户端会随机初始化序号(client_isn),然后将其填入 TCP 首部的「序列号」字段中,接着把 SYN 标志位设成 1,最后发送 SYN 报文给服务端,该报文不包含应用层数据,之后客户端处于 SYN_SENT 状态
注意
SYN 会消耗一个序列号
2、第二次握手
服务端收到客户端的 SYN 报文后,也随机初始化自己的序号(server_isn),然后将其填入 TCP 首部的「序列号」字段中,其次将 client_isn + 1 填入 TCP 首部的「确认应答号」字段中,接着把 SYN 和 ACK 标志位都设成 1,最后发送 SYN+ACK 报文给客户端,该报文也不包含应用层数据,之后服务端处于 SYN_RCVD 状态
注意
SYN 会消耗一个序列号