简述TCP的三次握手和四次挥手

15 篇文章 4 订阅
订阅专栏

TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,其中的过程非常复杂,只简单的描述下这三次对话的简单过程。

简述三次握手过程:

在开始讲解之前,先来讲几个重要字段的全称,方便记忆:

  • seq:sequence number)序号
  • ack:acknowledgement number)确认号
  • 标志位:
    • SYN :(SYNchronization)同步
    • ACK :(ACKnowlegment)确认
    • FIN   :(FINish)终止

先来看个总括图:

                                    

第一次握手:Client将同步标志位SYN置为1(SYN为1就表示要建立连接,连接成功之后该位置会再次被置为0),请求序号seq=x(在所有的字节排列中,申请从哪一个字节开始发送,这个序号就一般表示当前已经发送到哪个序号,服务器同意后将会从下一个序号开始发送,第一次握手只有请求序号没有确认号),并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

第二次握手:Server收到数据包后由同步标志位SYN=1知道Client请求建立连接,确认标志位ACK置为1(这会才有确认标志位,第一次握手并没有确认标志位。当确认标志位为0时,确认号不起作用),ack=x+1(确认序号等于请求序号+1,表示x+1之前的Server都收到了,从Server发送的请求已经收到)。TCP是全双工协议,因此Server有可能也会给Client发送数据,因此Server也会向Client建立连接,Server将同步标志位SYN置为1(Server也要向Client发送请求,因此SYN也要被置为1),seq=y就表示Server给Client发送的数据开始序号。并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

第三次握手:因为连接要是双向的,Server确认后只是Client到Server连通了,因此Client也要确认一下,才能让Server向Client的连接也连通。Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

       

设计这样一个相似的情景:

1、客户端主机C说:“我可以给你发送数据吗?”

2、服务器S说:“可以的,不过我可能也会给你发送数据。”

3、C:“好,那我开始互相发送数据吧。”


简述四次挥手过程:

所谓四次挥手(Four-Way Wavehand)即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端相互总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发。

由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭。这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了。但是在这个TCP连接上仍然能够发送数据,直到另一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。
 

第一次挥手:Client发送一个FIN,以及选择号seq=u(表示:u之前的数据已经全部发送,并且数据发到u就可以截止了,就不再有数据了),用来关闭Client到Server的数据传送。Client进入FIN_WAIT_1状态。


 

第二次挥手:Server收到FIN后,发送一个请求号seq=v和确认序号ack=u+1给Client。Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN,请求号为最新的seq=w和确认序号ack=u+1,用来关闭Server到Client的数据传送。Server进入LAST_ACK状态。


 

第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为w+1。Server进入CLOSED状态,完成四次挥手。

四次挥手的情景大致是这样的:

1、客户端主机C说:“我没有数据了,断开连接吧。 ”

2、服务器S说:“好,但是我还有数据(不断给C发送数据,此时C已经不能给S发送数据了,但是必须要就收S发来的数据)。”

3、(当S给C发完数据后)S说:“我发完了,断开连接吧。”

4、C说:“好,断开连接吧。”

计算机网络三次握手四次挥手
07-12 1569
TCP
Tcp三次握手和四次挥手的过程
Littlehero_121的博客
10-24 6675
主要参考博客:https://blog.csdn.net/qq_38950316/article/details/81087809 https://www.cnblogs.com/Andya/p/7272462.html https://blog.csdn.net/qzcsu/article/d...
TCP三次握手
最新发布
codertcm的博客
04-10 662
TCP(Transmission Control Protocol,传输控制协议)的三次握手是建立TCP连接的过程,确保通信双方都能够正常通信。
TCP三次握手四次挥手详解
m0_49137360的博客
01-11 4883
三次握手 三次握手过程: (1)第一次握手:Client将标志位SYN置为1(表示要发起一个连接),随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。 (2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。 (3)...
TCP三次握手详解
学亮编程手记
05-30 3050
TCP(Transmission Control Protocol)是一种可靠的、面向连接的协议,它使用三次握手(Three-Way Handshake)来建立通信连接。三次握手是确保双方都能够正常收发数据的重要过程。下面是TCP三次握手的详细解释:通过三次握手,客户端和服务器彼此确认了对方的能力和准备就绪状态,建立了双向的通信连接。每一次握手都需要对方的确认,确保连接的可靠性。
详解TCP三次握手
罗罗的1024
04-13 9020
前置条件 在开始三次握手之前,我们先看看TCP头部结构,如下 了解一下什么是序列号和确认号 Sequence number 表示的是我方(发送方)这边,这个packet的数据部分的第一位应该在整个data stream中所在的位置。(注意这里使用的是“应该”。因为对于没有数据的传输,如ACK,虽然它有一个seq,但是这次传输在整个data stream中是不占位置的。所以下一个实际有数据的传输,会依旧从上一次发送ACK的数据包的seq开始) Acknowledge number 表示的是期望
【Linux】TCP三次握手四次挥手的过程
01-06
TCP三次握手四次挥手这是一个非常重要的知识点,我也来总结一下。 关于面试最经常问的问题无非就是: 握手为什么是3次? 2次可以吗? 为什么不是4次呢? 你能不能详细的介绍一下TCP三次握手的详细过程? 能不能说...
TCP协议三次握手示意图
02-14
自己动手用viso画了个图
计算机组成原理第四次作业答案.doc
11-26
其中第2小题需要拟定指令流程和操作时间表,其它只需要拟定指令流程。 (1)MOV (R0),(SP)+ (2)MOV (R1)+,X(R0) (3)MOV R2,(PC)+ (4)MOV –(SP),(R3) (5)ADD R1,X(R0) (6)INC X(PC) (7)JMP R0 (8)JMP X(PC) ...
简述以太网的分类和发展
01-19
北京时间6月22日消息,IEEE近日对外宣布,IEEE 802.3ba标准,即40/100G以太网标准已于上周四(6月17日)获批,规范将同时使用两种新的以太网速率。该标准组织称,这一标准的正式批准将为新一波更高速的以太网服务器...
简述LED三原色PWM调光
01-19
PWM Dimming(脉宽调制,脉冲宽度变调)是目前比较... 在三原色设计应用中通常是,通过调节LED电流来达到白平衡和的期望亮度,通过控制PWM来实现灰阶等级。LED领域灰度等级数目分别有7阶、8阶、
【网络基础】TCP协议之三次握手&四次挥手--详解与常见问题解答
不积跬步无以至千里,不积小流无以成江海~
05-14 6148
根本原因: 无法确认客户端的接收能力。如果是两次,你现在发了 SYN 报文想握手,但是这个包滞留在了当前的网络中迟迟没有到达,TCP 以为这是丢了包,于是重传,两次握手建立好了连接。看似没有问题,但是连接关闭后,如果这个滞留在网路中的包到达了服务端呢?这时候由于是两次握手,服务端只要接收到然后发送相应的数据包,就默认建立连接,但是现在客户端已经断开了。看到问题的吧,这就带来了连接资源的浪费。备注:丢包的数据 服务器会根据时间戳或者根据响应时间 判定是否接受 这个请求/数据;
TCP三次握手详解-深入浅出
Dream It Possible
03-29 4041
1. 准备 TCP是属于网络分层中的运输层(有的书也翻译为传输层),因为OSI分为7层,感觉太麻烦了,所以分为四层就好了,简单。 分层以及每层的协议,TCP是属于运输层(有的书也翻译为传输层),如下两张图: TCP三次握手会涉及到状态转换所以这里贴出TCP的状态转换图如下: 2.TCP三次握手简述 要想简单了解TCP三次握手,我们首先要了解TCP头部结构,如下: TCP传递给IP层的信息单位称为报文段或段,下面都用段做单位。 TCP三次握手如图: 2.1 第一次握手...
详解三次握手四次挥手及相关面试题回答
weixin_43757333的博客
05-19 2773
三次握手 含义 三次握手其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。 TCP报文 要想弄懂三次握手,得先从TCP的报文格式入手: 有32位的序号和确认序号。 ACK:置为1便是确认连接。 SYN:置为1代表发起一个新连接。 FIN:置为1代表释放一个连接。 具体过程 标志位的解释 前两次建立连接时.
http三次握手四次挥手详解
chuige2013的博客
01-24 8537
三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。四次挥手:即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。
HTTP三次握手四次挥手简记
AWDSDF的博客
09-19 1862
HTTP三次握手四次挥手简记
TCP三次握手(过程及图示)
C2875845947的博客
08-06 503
TCP三次握手
TCP三次握手和四次挥手 以及相关的问题和面试问题
qq_57653432的博客
03-29 1352
面试的三次握手四次挥手应该怎么回答? 1、第一次握手:客户端给服务器发送一个 SYN 报文。 2、第二次握手:服务器收到 SYN 报文之后,会应答一个 SYN+ACK 报文。 3、第三次握手:客户端收到 SYN+ACK 报文之后,会回应一个 ACK 报文。 4、服务器收到 ACK 报文之后,三次握手建立完成。 作用:是为了确认双方的接收与发送能力是否正常。 为什么是三次握手而不是两次? 第一次握手:客户端发送网络包,...
简明理解三次握手和四次挥手
热门推荐
紫晓暮雾的博客
03-09 5万+
注:三次握手和四次挥手本身并不复杂,但却可以从很多角度理解这两个过程,本文仅取一个视点解读,如有其它看法欢迎留言交流。 三次握手四次挥手分别对应TCP连接建立过程与断开过程,先上TCP报文格式: 三次握手过程: 问题1: 为什么要三次握手? 答:三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自
简述TCP三次握手和四次挥手的过程
06-10
TCP三次握手的过程如下: 1. 客户端向服务器发送SYN包,表示请求连接,并将初始序列号设为x。 2. 服务器收到SYN包后,回应一个SYN+ACK包,表示确认连接请求,并将确认序列号设为x+1,初始序列号设为y。 3. 客户端...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 使用Postman测试接口提示Error: connect ECONNREFUSED 127.0.0.1:4000 230504
  • 简述TCP的三次握手和四次挥手 33954
  • 让HTML img垂直居中的三种办法: 24568
  • 一个http请求就是一个线程吗?Java的服务是每收到一个请求就新开一个线程来处理吗? 9919
  • JS 中的 assign 方法究竟是 “深克隆” 还是 “浅克隆”? 7387

分类专栏

  • React 8篇
  • JavaScript 35篇
  • 前端面试题 38篇
  • TypeScript 8篇
  • 项目总结 12篇
  • 数据结构与算法 23篇
  • 计算机网络 15篇
  • HTML 9篇
  • CSS 9篇
  • Vue 6篇

最新评论

  • 三栏布局的七种实现方式

    HYKANG666888: 佬,我也不懂,你理解了吗?

  • 三栏布局的七种实现方式

    HYKANG666888: “left、right 的高度无法伴随 center 高度的变化而变化”这个缺点不太理解?

  • 前端笔试题总结(一) - JS篇

    麦田里的POLO桔: 是的,已更正

  • 三栏布局的七种实现方式

    zl_666: table 布局left/right高度无法随center高度变化 这个不对吧 给left right加上display:tabel-cell就行了

  • 让HTML img垂直居中的三种办法:

    杨闯今天学习了吗?: 谢谢 讲的很详细

大家在看

  • 等级保护测评中的建设整改要做什么?
  • 【初阶数据结构】深入解析带头双向循环链表:探索底层逻辑
  • misc中隐写概述和工具介绍 706
  • hive优化之逻辑类似重复
  • AdminSDHolder 滥用 534

最新文章

  • 多标签页之间的通信
  • 命令式编程与声明式编程的区别
  • TS如何解决属性在另一个类型中不存在的问题?
2023年2篇
2022年10篇
2021年96篇
2020年2篇

目录

目录

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麦田里的POLO桔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

深圳SEO优化公司石岩标王龙华网站改版松岗企业网站建设盐田建网站石岩网站优化按天收费龙岗设计公司网站盐田模板制作塘坑百度关键词包年推广双龙企业网站改版松岗百姓网标王推广塘坑seo东莞百度关键词包年推广荷坳SEO按天收费罗湖网站推广系统南联英文网站建设民治关键词按天计费东莞seo网站优化深圳推广网站南联百度竞价包年推广广州百度seo东莞标王爱联企业网站设计南山网站优化软件丹竹头SEO按效果付费坂田设计公司网站深圳网站建设设计惠州优化南山seo优化龙岗网站设计模板南山网络营销歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化