TCP三次握手和四次挥手通俗理解

一、TCP报文格式

 

 

 

 

 

 

 

 

    在了解三次握手和四次挥手之前,先知道TCP报文内部包含了哪些东西。

  1. TCP报头中的源端口号和目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。TCP在发送数据前必须在彼此间建立连接,这里连接意思是:双方需要内保存对方信息(例如:IP,Port…)

  2. 报文主要段的意思

    序号:表示发送的数据字节流,确保TCP传输有序,对每个字节编号

    确认序号:发送方期待接收的下一序列号,接收成功后的数据字节序列号加 1。只有ACK=1时才有效。

    ACK:确认序号的标志,ACK=1表示确认号有效,ACK=0表示报文不含确认序号信息

    SYN:连接请求序号标志,用于建立连接,SYN=1表示请求连接

    FIN:结束标志,用于释放连接,为1表示关闭本方数据流

二、“三次握手”

2.1 三次握手过程

建立TCP连接时,需要客户端和服务器共发送3个包。

  • 第一次:客户端发送初始序号x和syn=1请求标志

  • 第二次:服务器发送请求标志syn,发送确认标志ACK,发送自己的序号seq=y,发送客户端的确认序号ack=x+1

  • 第三次:客户端发送ACK确认号,发送自己的序号seq=x+1,发送对方的确认号ack=y+1

 

 

 2.2 三次握手过程分析:

  • 第一次:客户端发送请求到服务器,服务器知道客户端发送,自己接收正常。SYN=1,seq=x
  • 第二次:服务器发给客户端,客户端知道自己发送、接收正常,服务器接收、发送正常。ACK=1,ack=x+1,SYN=1,seq=y
  • 第三次:客户端发给服务器:服务器知道客户端发送,接收正常,自己接收,发送也正常.seq=x+1,ACK=1,ack=y+1

上面分析过程可以看出,握手两次达不到让双方都得出自己、对方的接收、发送能力都正常的结论的。

 

三、 “四次挥手”

 3.1 四次挥手过程

  • 第一次挥手:客户端发出释放FIN=1,自己序列号seq=u,进入FIN-WAIT-1状态
  • 第二次挥手:服务器收到客户端的后,发出ACK=1确认标志和客户端的确认号ack=u+1,自己的序列号seq=v,进入CLOSE-WAIT状态
  • 第三次挥手:客户端收到服务器确认结果后,进入FIN-WAIT-2状态。此时服务器发送释放FIN=1信号,确认标志ACK=1,确认序号ack=u+1,自己序号seq=w,服务器进入LAST-ACK(最后确认态)
  • 第四次挥手:客户端收到回复后,发送确认ACK=1,ack=w+1,自己的seq=u+1,客户端进入TIME-WAIT(时间等待)。客户端经过2个最长报文段寿命后,客户端CLOSE;服务器收到确认后,立刻进入CLOSE状态。

3.2四次挥手过程分析

  • 第一次:客户端请求断开FIN,seq=u
  • 第二次:服务器确认客户端的断开请求ACK,ack=u+1,seq=v
  • 第三次:服务器请求断开FIN,seq=w,ACK,ack=u+1
  • 第四次:客户端确认服务器的断开ACK,ack=w+1,seq=u+1

四、其他问题

 4.1为什么三次握手和四次挥手?

  • 三次握手时,服务器同时把ACK和SYN放在一起发送到了客户端那里
  • 四次挥手时,当收到对方的 FIN 报文时,仅仅表示对方不再发送数据了但是还能接收数据,己方是否现在关闭发送数据通道,需要上层应用来决定,因此,己方 ACK 和 FIN 一般都会分开发送。

4.2为什么客户端最后还要等待2MSL?

  • 客户端需要保证最后一次发送的ACK报文到服务器,如果服务器未收到,可以请求客户端重发,这样客户端还有时间再发,重启2MSL计时。

 

补充

 

参考:https://blog.csdn.net/u010918487/article/details/87207531

 

转载于:https://www.cnblogs.com/jainszhang/p/10641728.html

通俗易懂理解TCP协议三次握手四次挥手及其常见问题 TCP协议三次握手四次挥手形象比喻三次握手四次挥手 形象比喻 三次握手:将小明当作客户端,小红当作服务器端,两人写信告白: **第一次握手:**小明告诉小红:我喜欢你。 **第二次握手:**小红告诉小明:我知道了,我也喜欢你。 此时小红并不确定小明是否收到了告白信,直到 **第三次握手:**小明回信:我也知道了,我们在一起吧。此时才真正建立连接。 四次挥手:恋爱之后,小明小红煲电话粥。依旧将小明当作客户端,小红当作服务器端。小明跟小红说话, **第一次挥手:**小明说:我说完了。 **第二次挥手:** 阅读详情

相关推荐

飞牛Docker部署Zerotier后无法访问?三步搞定SSH权限配置!

本文详细解析了在飞牛NAS上通过Docker部署Zerotier后无法访问的常见问题及解决方案。重点介绍了SSH权限配置、tun模块加载Docker容器权限设置等关键步骤,帮助用户快速解决虚拟网络接口的权限问题,确保Zerotier节点间的正常通信。

qq_27496129的博客 687

字节流数据解析

在实际开发中,数据通常以字节流形式传输,比如网络编程开发中,TCP传输无边界字节流,嵌入式开发中,串口通讯也是,数据收发也是以字节流形式。如下图所示,通过网络调试助手,网络服务端,收到十六进制格式字节流数据,需要解析字节流数据。

weixin_32026361的博客 801

计算机网络基础:认识网络硬件与传输介质

计算机网络基础:认识网络硬件与传输介质,在计算机网络的庞大体系中,网络硬件与传输介质犹如坚实的骨架与脉络,支撑并承载着信息的流动。从家庭中的小型网络,到企业复杂的办公网络,再到覆盖全球的互联网,各类网络硬件设备各司其职,不同的传输介质发挥着独特的传输作用。它们相互协作,使得数据能够在不同设备之间快速、准确地传输,为人们的日常沟通、工作办公、娱乐休闲等活动提供了基础保障。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 3万+

TCP数据传输协议详解

1、点对点一个发送方,一个接收方2、可靠地,按顺序的字节流没有报文边界3、管道化(流水线)TCP拥塞控制流量控制设置窗口大小4、发送接收缓存5、全双工数据在同一连接中数据流双向流动MSS:最大报文段大小在数据交换之前,通过握手(交换控制报文)初始化发送方、接收方的状态变量7、有流量控制发送方不会淹没接收方。

java123456111的博客 7257

TCP协议易懂

TCP三次握手 客户端向服务端发送链接请求数据包SYN询问能否建立连接。如果对端同意连接则回复一个SYN+ACK包。客户端收到之后回复一包ACK包连接建立。因为这个过程中互相发送了三包数据所以称之为三次握手。 为什么是三次握手而不是两次握手 这是为了防止因为已失效的请求报文突然又传到服务器引起错误 假设两次握手建立连接:客户端向服务端发起连接请求,因为某些原因引起SNY包在网络中传输阻塞滞留。为了建立连接客户端会重发SYN包,重发的数据包正常送达,服务端回复SYN+ACK包之后建立连接。但是第一包数据阻塞的

weixin_48358407的博客 1865

UDP/TCP协议解析

我最近开了几个专栏,诚信互三!====> |||::刷题教程来自网站。|||====> |||::记录我学习C++的经历,看完你一定会有收获。|||====> |||::记录我学习Linux的经历,看完你一定会有收获。|||====> |||::记录我复习C#的经历,,不定期更新。|||====> |||::记录我学习计算机网络,看完你一定会有收获。|||

reyas的博客 1760

通俗理解TCP三次握手四次挥手

TCP的协议负责计算机之间的网络连接,下面就以一个客户端一个服务器为例子记录它们之间传输的步骤(类比男女朋友之间通信)。 三次握手: 1.第一次握手是客户端发送SYN数据包,并设置seq序列号为j,客户端进入SYNC_SENT状态。 (小扎给小美写信表白) 2.第二次握手是服务器端收到数据包后,返回一个SYN包设置seq=k,同时返回一个ACK的包设置seq=j+1,进入SYN_RCVD状态。 (小美给小扎回信同意建立恋爱关系,小扎收到信后,确认他们之间的通信没有问题) 3.第三次握手是客户端收到ACK

放牛娃的博客 770

tcp 四次挥手_TCP三次握手四次挥手通俗理解

一、TCP报文格式  在了解三次握手四次挥手之前,先知道TCP报文内部包含了哪些东西。TCP报头中的源端口号目的端口号同IP数据报中的源IP与目的IP唯一确定一条TCP连接。TCP在发送数据前必须在彼此间建立连接,这里连接意思是:双方需要内保存对方信息(例如:IP,Port…)报文主要段的意思    序号:表示发送的数据字节流,确保TCP传输有序,对每个字节编号    确认序号:发...

weixin_39620653的博客 435

通俗理解 TCP三次握手 四次挥手

本文对 TCP三次握手四次挥手做一个通俗解释,不会介绍细节,只会进行场景化的描述,让人容易理解

tzy233的专栏 399

用最通俗的语言帮你真正理解什么是TCP三次握手四次挥手

之所以写这篇博客,是因为网上介绍三次握手四次挥手的概念已经看了无数遍,但总是过一段时间就忘记,最主要的原因是网上所有的文章基本只介绍原理,而不介绍为什么,导致自己没有真正理解其中的含义。 本文不再介绍三次握手四次挥手的概念,而只回答几个问题: 1、TCP建立连接为什么要三次握手三次握手的目的就是客户端服务端双方都需要确认我能连接对方: (1)客户端必须确认他能连接服务端,那他要干的事...

maidabu的博客 289

从打电话角度通俗理解TCP协议的三次握手四次挥手

2、B收到了A的断开请求,但是B还有话没说完,就对A说“好的,我知道你要挂电话了,但是我这边还有点话要说”,相当于第二次挥手,B向A继续发送剩余数据确认报文(ACK)4、A收到了B的断开请求,说了一句“好的,那挂了”,相当于第四次挥手,A发送了确认报文(ACK)然后A挂断了电话,B收到了确认之后也挂断了电话。1、A认为该说的话已经说完了,想要挂断电话,对B说“我这边已经说完了,准备挂电话了”,相当于第一次挥手,A发送断开请求(FIN)三次握手:建立同步连接通信。至此,同步通信建立。

weixin_57945376的博客 231

YOLO交通标志识别数据集(含1000张图片)+对应voc、cocoyolo三种格式标签+划分脚本+训练教程.rar

1、YOLO交通标志识别数据集,真实场景的高质量图片数据,数据场景丰富。使用lableimg标注软件标注,标注框质量高,含voc(xml)、coco(json)yolo(txt)三种格式标签,分别存放在不同文件夹下,可以直接用于YOLO系列的目标检测。2、附赠YOLO环境搭建、训练案例教程数据集划分脚本,可以根据需求自行划分训练集、验证集、测试集。3、数据集详情展示更多数据集下载:https://blog.csdn.net/m0_64879847/article/details/132301975

上一篇: 【Luogu4916】魔力环(Burnside引理,组合计数)
下一篇: sql中日期转换
相太阳
博客等级 码龄11年 143粉丝 1391原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值