加入收藏 | 设为首页 | 会员中心 | 我要投稿 济源站长网 (https://www.0391zz.cn/)- 数据工具、数据仓库、行业智能、CDN、运营!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

握手挥手不是你想的那么简单

发布时间:2021-03-05 15:47:38 所属栏目:外闻 来源:互联网
导读:点是需要注意的: TCP 协议需要一个四元组(源IP,源端口,目的IP,目的端口)来确定连接,这要和 UDP 协议区分开。多说一句,IP 地址位于 IP 报文段,TCP 报文段是不含 IP 地址信息的。 基本 TCP 头部的长度是 20 字节,但是由于「选项」的长度是不确定的,所

点是需要注意的:

  • TCP 协议需要一个四元组(源IP,源端口,目的IP,目的端口)来确定连接,这要和 UDP 协议区分开。多说一句,IP 地址位于 IP 报文段,TCP 报文段是不含 IP 地址信息的。
  • 基本 TCP 头部的长度是 20 字节,但是由于「选项」的长度是不确定的,所以需要「首部长度」字段明确给出头部长度。这里要注意的是,首部长度字段的单位是 32bit,也就是 4 字节,所以该字段的最小值是 5。
  • 标橙色的字段(确认序号,接收窗口大小,ECE,ACK)用于「回复」对方,举个例子,服务器收到对方的数据包后,不单独发一个数据包来回应,而是稍微等一下,把确认信息附在下一个发往客户端的数据帧上,也就是捎带技术。
  • 窗口大小是一个 16 位无符号数,也就是说窗口被限制在了 65535 字节,也就限制了 TCP 的吞吐量性能,这对一些高速以及高延迟的网络不太友好(可以想想为什么)。所幸 TCP 额外提供了窗口缩放(Window Scale)选项,允许对这个值进行缩放。

下面是 8 个标志位的含义,有的协议比较旧,可能没有前两个标志位:



 

这张图就是握手的过程,可以看到客户端与服务器之间一共传递了三次消息,这三次握手其实就是两台机器之间互相确认状态,我们来一点一点看。

1. 第一次握手

首先是客户端发起连接,第一个数据包将 SYN 置位(也就是 SYN = 1),表明这个数据包是 SYN 报文段(也被称为段 1)。这一次发送的目的是告诉服务器,自己的初始序列号是 client_isn ,还有一个隐含的信息在图里没有表现出来,那就是告知服务端自己想连接的端口号。除了这些,客户端还会发送一些选项,不过这跟三次握手没多大关系,暂且按下不表。

段 1 里最需要注意的就是这个client_isn ,也就是初始序列号。「RFC0793^1」指出

(编辑:济源站长网)

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

    热点阅读