加入收藏 | 设为首页 | 会员中心 | 我要投稿 宣城站长网 (https://www.0563zz.cn/)- 数据湖、行业智能、边缘计算、开发、备份!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

TCP 服务器与客户端

发布时间:2021-03-24 13:06:32 所属栏目:外闻 来源:互联网
导读:更好地理解下述过程,对 TCP 协议头的关键区段做以下几点说明: 报文的功能在 TCP 协议头的标记符(Flags)区段中定义,该区段位于第 104~111 比特位,共占 8 比特,每个比特位对应一种功能,置 1 代表开启,置 0 代表关闭。例如,SYN 报文的标记符为 00000010

更好地理解下述过程,对 TCP 协议头的关键区段做以下几点说明:

  • 报文的功能在 TCP 协议头的标记符(Flags)区段中定义,该区段位于第 104~111 比特位,共占 8 比特,每个比特位对应一种功能,置 1 代表开启,置 0 代表关闭。例如,SYN 报文的标记符为 00000010,ACK 报文的标记符为 00010000,ACK + SYN 报文的标记符为 00010010。
  • 报文的序列号在 TCP 协议头的序列号(Sequence Number)区段中定义,该区段位于第 32~63 比特位,共占 32 比特。例如,在「三次握手」过程中,初始序列号 seq 由数据发送方随机生成。
  • 报文的确认号在 TCP 协议头的确认号(Acknowledgement Number)区段中定义,该区段位于第 64~95 比特位,共占 32 比特。例如,在「三次握手」过程中,确认号ack 为前序接收报文的序列号加 1,代表下一次期望接收到的报文序列号。

连接创建

所谓的「三次握手」,即 TCP 服务器与客户端成功建立通信连接必经的三个步骤,共需通过三个报文完成。

一般而言,首先发送 SYN 报文的一方是客户端,服务器则是监听来自客户端的建立连接请求。

Handshake Step 1

客户端向服务器发送 SYN 报文(SYN=1)请求建立连接。

此时报文的初始序列号为 seq = x ,确认号为ack = 0,发送完毕后,客户端进入 SYN_SENT 状态。

Handshake Step 2

服务器接收到客户端的 SYN 报文后,发送 ACK + SYN 报文(ACK=1,SYN=1)确认客户端的建立连接请求,并也向其发起建立连接请求。

此时报文的序列号为 seq = y,确认号为 ack = x+1,发送完毕后,服务器进入 SYN_RCVD状态。

Handshake Step 3

客户端接收到服务器的 SYN 报文后,发送 ACK 报文(ACK=1)确认服务器的建立连接请求。

此时报文的序列号为 seq=x+1,确认号为 ack=y+1。发送完毕后,客户端进入 ESTABLISHED 状态;当服务器接收该报文后,也进入了 ESTABLISHED 状态。

至此,「三次握手」过程全部结束,TCP 通信连接成功建立。

(编辑:宣城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读