当前位置: 首页 > news >正文

网站维护团队长沙seo网络公司

网站维护团队,长沙seo网络公司,wordpress 备份恢复,网站空间申请开通TCP是面向连接的、可靠的、基于字节流的传输层通信协议。 TCP是面向连接的协议,所以使用 TCP前必须先建立连接,而建立连接是通过三次握手来进行的。 TCP包头结构 在讲解三次握手的过程之前,我们先来看一下 TCP包的结构: TCP包…

TCP面向连接的、可靠的、基于字节流的传输层通信协议。

TCP是面向连接的协议,所以使用 TCP前必须先建立连接,而建立连接是通过三次握手来进行的。

TCP包头结构

在讲解三次握手的过程之前,我们先来看一下 TCP包的结构:
TCP包结构
TCP包头大小在大多数情况下是固定的,它通常是 20字节(不包括任何选项),但如果启用了选项,则最多可以达到 60字节。下面是 TCP包头的一般结构:

  • 源端口号(16位):表示发送方的端口号。
  • 目标端口号(16位):表示接收方的端口号。
  • 序列号(32位):用于对数据流中的字节进行编号,以便对方能够按顺序重新组装数据。
  • 确认号(32位):表示期望接收到的下一个序列号。
  • 数据偏移(4位):指示 TCP包头的长度,以 4字节为单位。因此,数据偏移的值乘以 4就是 TCP包头的总长度。这个字段也被称为 头部长度
  • 保留位(6位):保留供将来使用,目前全部为 0。
  • 标志位(6位):用于控制 TCP连接的状态,包括 SYNACKFINRSTPSHURG等。
  • 窗口大小(16位):表示发送方的接收窗口大小,用于流量控制。
  • 校验和(16位):用于验证 TCP报文的完整性。
  • 紧急指针(16位):当 URG标志被设置时,紧急指针表示紧急数据的末尾位置。
  • 选项(可选):可以包含各种选项,如最大报文段大小(MSS)、窗口缩放因子等,每个选项的大小不定。

在三次握手过程中,我们主要关注序列号确认号以及标志位中的SYNACK

三次握手过程

通常来说,服务器会开放监听端口,而客户端则主动连接这个端口,创建连接的时候,会进行三次握手,过程如下图所示:
TCP三次握手

  1. 客户端发送 SYN包到服务器,附上一个随机生成的序列号(ISN)。此时客户端处于 SYN_SEND状态。
  2. 服务器返回 SYN+ACK包到客户端,附上一个随机生成的序列号,确认号则是客户端上传的序列号+1。此时服务端处于SYN_RECV状态。
  3. 客户端返回 ACK到服务器,确认号是服务器下发的序列号+1。此时客户端处于ESTABLISHED状态,连接已建立,这个包可以顺带发一些数据。
  4. 服务端收到ACK后,也进入ESTABLISHED状态,可以收发数据。

三次握手的一个重要功能是客户端和服务端交换 ISN(Initial Sequence Number),以便让对方知道接下来接收数据的时候如何按序列号组装数据。同时也确保了服务端和客户端的收发都能正常进行。

使用 wireshark抓包工具,我们可以看到三次握手的数据:

wireshark

为什么是三次握手?不是两次、四次?

1. TCP 连接使用三次握手的首要原因,是为了防止旧的重复连接初始化造成混乱。

想像一个场景,客户端发了SYN之后宕机了,重启后又发了新的SYN。如果只有两次握手的话,当服务器收到旧的SYN之后,发送ACK给客户端,就直接进入ESTABLISHED状态,这时候就可以发数据了。

但是客户端期待的是新的SYN的序列号,发现服务端发的确认号不对应,会关闭这个连接,而服务器此时已经发了数据过来,这就造成了混乱。

而三次握手,客户端可以收到ACK之后,判断确认号,正确则返回ACK,错误则返回RST告诉服务器关闭这个连接。

使用三次握手和RST控制消息,将是否建立连接的最终控制权交给了客户端,因为只有客户端有足够的上下文来判断当前连接是否是错误的或者过期的,这也是TCP使用三次握手建立连接的最主要原因。

2. 三次握手的第二个原因,是为了交互双方的序列号。

TCP协议的通信双方,都必须维护一个序列号,用来保证数据包的有序,以及丢包时能够重发,所以这个初始化的序列号是很重要的。当客户端发SYN给服务器时,服务器需要返回ACK确认,而服务器发SYN给客户端时,客户端也需要发ACK确认,才能确保两边都有正确的序列号。服务器在发SYNACK时,可以合并成一条消息发送,所以是不需要四次握手的。

参考资料

  • 4.1 TCP 三次握手与四次挥手面试题 - 小林coding
http://www.yayakq.cn/news/763730/

相关文章:

  • 上海专业建设网站制作网站初期推广方案
  • 深圳网站建设hi0755建筑工程招投标
  • 网站设计最好的公司百度企业查询官网
  • 怎么在网上免费做公司网站网站备案有什么要求
  • 网站优化目的自动化发布 iis网站
  • 新乡做网站多少钱国家域名注册证书有用吗
  • 建设银行官方网站公司做网站还有价值吗
  • 菠菜网站做首存深圳市华企网络科技有限公司
  • 哈尔滨 做网站公司哪家好wordpress 模板 安装
  • 网站建设与管理广东药学院网站后台密码重置
  • 发布培训的免费网站模板物业网站建设
  • 搭建网站详细步骤wordpress里的小工具
  • 福建网站开发有限开发公司网页平面设计公司
  • 做推文的网站知乎建设摩托车所有车型
  • 东莞市网站建设制作设计平台如何制作假网页
  • 海淀区城市建设档案馆网站电商网站设计思想
  • 网站建设怎么挣钱上海公司招聘信息
  • 网站基础建设和维护开发游戏用什么编程软件
  • 网站建设可行性研究报告自己做淘宝返利网站
  • 视频播放网站开发公司做网站会计凭证怎么做
  • 创办个人网站建设网站那个公司好
  • 小型购物网站模板免费的外网连接器
  • wordpress适合电影网站的模板下载各大网站的名字大全
  • 南阳网站排名优化网站建设项目的预算
  • 如何做明星的个人网站cms企业网站源码
  • 淘宝网站的建设与运营设计思路网站建设需要每年交钱吗
  • 全国建设厅网站海外广告投放平台
  • 河南宝盈建设工程有限公司网站曲阳网站建设在哪
  • 游戏网站建设与策划方案建设网站的各种问题
  • ps做网站ui邯郸自媒体有哪些