一文读懂TCP的三次握手(详细图解)

这篇具有很好参考价值的文章主要介绍了一文读懂TCP的三次握手(详细图解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在学习TCP三次握手的过程前,首先熟悉几个缩写简称:

TCB

传输控制块,打开后服务器/客户端进入监听(LISTEN)状态

SYN TCP报文标志位,该位为1时表示发起一个新连接
ACK TCP报文标志位,该位为1时,确认序号有效,确认接收到消息。TCP规定,在连接建立后所有报文的传输都必须把ACK1
seq sequence number,报文初始序列号,代表发送的第一个字节的序号
ack acknowledgement number,报文确认序号,代表希望收到的下一个数据的第一个字节的序号

熟悉上面几个标志位和序列号含义后,下面来看TCP的三次握手过程:

先上几个帮助理解的点:

不管请求还是应答,都是带两种数据:请求号SYN/应答号ACK + 数据包报文号;

请求时要发请求号SYN,应答时要发送应答号ACK;在数据包传送时,发送方要发送当前数据包报文号seq和确认收到上一个数据包的确认报文号ack

下面结合示意图来理解三次握手过程:
一文读懂TCP的三次握手(详细图解)

前期:

TCP服务器创建传输控制块TCB,进入监听LISTEN状态,准备接收请求。

第一次握手:客户端——请求(发送请求SYN+数据包当前序列号seq,无需应答)

客户端创建传输控制块TCB,进入监听LISTEN状态。
设置SYN=1,表示这是握手报文,并发送给服务器
设置发送的数据包序列号seq=x
此时客户端处于同步已发送SYN-SENT
状态

第二次握手:服务器——确认(发送应答ACK+请求SYN+确认收到上一个数据包的确认号ack+ 当前数据包序列号seq)

设置ACK=1,表示确认应答。
设置
ack=x+1,表示已收到客户端x之前的数据,希望下次数据从x+1开始
设置SYN=1
,表示握手报文,并发送给客户端
设置发送的数据包序列号seq=y
此时服务器处于同步已接收SYN-RCVD
状态

第三次握手:客户端——确认服务器的确认(发送应答ACK+确认收到上一个数据包的确认号ack+ 当前数据包序列号seq ,连接已建立,无需请求)

设置ACK=1,表示确认应答。
设置
ack=y+1,表示收到服务器发来的序列号为seq=y的数据包,希望下次数据从y+1开始
设置seq=x+1
,表示接着上一个数据包seq=x继续发送
至此三次握手结束,连接建立

为什么要使用三次握手机制?

1.为了阻止历史连接

若网络状况不好的时候,客户端发送的SYN信号未能及时传输给服务器。当网络恢复时已经失效的SYN信号又到达服务器。如果只有两次握手便可建立连接,那么此时客户端就不知道这个连接是不是已经失效了的历史连接,从而导致错误的发生。三次握手时,客户端便可以根据上下文来判断此次连接是否为历史连接,避免错误的发生。

2. 为了避免服务器开启无用连接增加服务器开销

客户端设置了一个超时时间,超过了就重新发送一个TCP连接请求。如果没有第三次握手的话,服务端是不知道客户端是否收到服务返回的信息的,这样没有给服务器端一个创建还是关闭连接端口的请求,服务器端的端口就一直开着,等到客户端因超时重新发出请求时,服务器就会重新开启一个端口连接。那么服务器端上没有接收到请求数据的上一个端口就一直开着,长此以往,这样的端口多了,就会造成服务器端开销的严重浪费。文章来源地址https://www.toymoban.com/news/detail-494639.html

到了这里,关于一文读懂TCP的三次握手(详细图解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TCP的三次握手,四次挥手

    第一次握手:客户端发送SYN报文,井发送seq为x序列号给服务端,等待服务端的确认 第二次握手:服务端发送SYN+ACK报文,并发送seq为Y的序列号,在确认序列号为x+1 第三次握手:客户端发送ACK报文,并发送seq序列号为z,在确认序列号为y+1 第一次挥手:先由客户端向服务器端发

    2024年01月18日
    浏览(76)
  • TCP的三次握手和4次挥手

    最开始,人们考虑到将网络信息的呼唤与回应进行规范,达成一种公认的协议,就好像没有交通规则的路口设定交通规则。 人们设计出完美的OSI协议,这个协议包含七个层次由下到上分别是: 物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。 大家都觉得很

    2024年03月21日
    浏览(51)
  • TCP的三次握手四次挥手

    TCP的三次握手和四次挥手实质就是TCP通信的连接和断开。 三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。 四次挥手:即终止TCP连接,就是指断开一个T

    2024年02月11日
    浏览(45)
  • Wireshark抓包分析TCP的三次握手

    一、TCP三次握手连接建立过程     Step1:客户端发送一个SYN数据包(SYN=1,Seq=X,ACK=0)给服务端,请求进行连接,这是第一次握手;     Step2:服务端收到请求并且允许连接的话,就会发送一个SYN+ACK的数据包(SYN=1,Seq=Y,ACK=X+1)给发送端,告诉它,可以通讯了,并且让客户

    2024年02月08日
    浏览(45)
  • TCP的三次握手与四次挥手

    参考文章:https://blog.csdn.net/qq_38950316/article/details/81087809 在介绍三次握手与四次挥手之前我们先来了解一下TCP的头部结构是什么样的。 TCP头部的最大长度为60字节,其中包括 TCP报文固定长度20字节+可变字节(最大40字节) ,具体结构如下: 在认识三次握手与四次挥手之前我们必

    2023年04月09日
    浏览(46)
  • TCP的三次握手和四次挥手

    既然我们文章要说的是TCP的三次握手,和四次挥手,那么肯定是说的连接,也不是说的不其他的。那么它这个连接的过程说的是什么呢? 我们还是从图中理解,这样比较好理解, TCP第一次握手:服务端的TCP进程先创建传输控制块TCB,准备接受客户端进程的连接请求,然后服

    2024年02月01日
    浏览(51)
  • TCP 的三次握手和四次挥手

    Java 面试题 第一次握手 :客户端向服务端发送SYN包。报文中标志位SYN=1,序列号seq=x(x为随机整数)。此时客户端进入了  SYN_SEND 同步已发送状态。 第二次握手 :服务端回复客户端SYN+ACK包。报文中标志位SYN=1,标志位ACK=1,序列号seq=y(y为随机整数),确认号ack=x+1(x为客户

    2024年01月20日
    浏览(54)
  • TCP的三次握手以及四次断开

    TCP的三次握手和四次断开,就是TCP通信建立连接以及断开的过程 目录 【1】TCP的三次握手过程  ----  TCP建立连接的过程 【2】TCP的四次挥手  ----  TCP会话的断开 注意: 三次握手的过程 :         通信双方发送请求序列号,并且确认收到序列号的过程 第一次握手 :      

    2024年02月14日
    浏览(45)
  • TCP的三次握手与四次挥手(简述)

    传输控制协议-- 面向连接的可靠传输协议 在完成传输层的基本工作之上,还需要进一步的保障传输的可靠性。和UDP不同的是,TCP提供的是可靠的面向连接传输服务,并且提供了流量控制等功能。   TCP 报文格式中的主要标识标记位   1.SYN同步标记位,SYN = 1,代表这个数据包是

    2024年02月01日
    浏览(40)
  • TCP的三次握手,四次挥手,面试必会

    目录 一、TCP三次握手(建立连接) 二、TCP三次握手细节 三、TCP(四次挥手)断开连接 四、TCP非常重要的协议 🤝🤝握手,单纯就是发一个打招呼的数据,不携带业务信息 那么为什么叫三次握手呢,因为B的中间两次可以合并成一次。 为什么我们要合并呢?💫💫 因为我们的

    2024年02月09日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包