TCP建立/断开连接的过程:三次握手和四次断开

news/2024/5/17 16:57:03 标签: 三次握手, 四次断开, tcp, 网络

三次握手

1、概念

TCP位于传输层,作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP协议采纳三次握手策略。

2、名词解释:

TCP:传输控制协议
报文:(数据单元)各个系统之间进行请求和响应时用来交换信息的,还需要遵守规定好的格式
SYN:建立连接请求
ACK:确认请求
Seq:序列号

3、具体流程:

1)Client端发送连接请求报文,
2)Server段接受连接后回复ACK报文,并为这次连接分配资源。
3)Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。

4、流程图:
在这里插入图片描述
简单来说就是:客户端和服务端都要确认对方能收、发消息。
第一步是服务端知道了客户端能发消息,
第二步是客户端知道了服务端能收能发消息,
第三步是服务端知道了客户端能收消息,这样关系就建立好了。

四次挥手

1、概念:

当被动方收到主动方的FIN报文通知时,它仅仅表示主动方没有数据再发送给被动方了。但未必被动方所有的数据都完整的发送给了主动方,所以被动方不会马上关闭SOCKET,它可能还需要发送一些数据给主动方后,再发送FIN报文给主动方,告诉主动方同意关闭连接,所以这里的ACK报文和FIN报文多数情况下都是分开发送的。

2、具体流程:

中断连接端可以是Client端,也可以是Server端。

1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。

2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。

3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

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

3、流程图:
在这里插入图片描述
简单来说
1)Client:我所有东西都说完了

2)Server:我已经全部听到了,但是等等我,我还没说完

3)Server:好了,我已经说完了

4)Client:好的,那我们的通信结束

4、为什么握手是三次,挥手是四次

因为挥手过程有半关闭状态,在这个状态下,比如客户端没有请求/数据需要向服务端传输,但是服务端需要持续的连接客户端,下载数据,所以,在客户端申请了断开连接的请求后,会等待服务端确认并且提出断开请求后,才会断联,所以,在服务端下载完数据前,不会发送断开请求,这是挥手需要四次的原因。


http://www.niftyadmin.cn/n/836807.html

相关文章

CDH使用秘籍(一):Cloudera Manager和Managed Service的数据库

文章来源:http://blog.csdn.net/shifenglov/article/details/41115001CDH使用秘籍(一文章来源):Cloudera Manager和Managed Service的数据库 分类: Hadoop2014-11-14 10:51 1130人阅读 评论(0) 收藏 举报CDHCloudera M…

NLP领域中更有效的迁移学习方法

在深度学习领域,迁移学习(transfer learning)是应用比较广的方法之一。该方法允许我们构建模型时候不光能够借鉴一些其它科研人员的设计的模型,还可以借用类似结构的模型参数,有些类似于站在巨人的肩膀上进行深入开发。…

SQL给有相同列的 数据添加一个递增的编号

参考于:https://zhidao.baidu.com/question/229402549.html 1、表中有自增列row:select (select count(*) from table1 where [user]t1.[user] and row>t1.row) as id,[user] from table1 as t1order by [user],id2、表中没有自增列,但有…

[转]SQLite与SQLserver差异

SQLite在线教程:http://www.runoob.com/sqlite/sqlite-syntax.html 与SQLserver区别:https://www.cnblogs.com/tianboblog/p/4200685.html 主要是: 查询时把两个字段拼接在一起 --sqlserver-- select Filed1Filed2 from table--sqlite-- …

hdu2021 11页水题

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2021暴力出解&#xff0c;可能数多了就不行了题解&#xff1a;#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<math.h> using namespa…

NVMe概述

目前企业SSD市场按照接口协议主要分为SATA SSD&#xff0c;PCIe SSD和NVMe SSD&#xff0c;其中SATA SSD沿用了传统的HDD使用的SATA协议&#xff0c;在企业应用和服务器兼容性上具有优势&#xff1b;而PCIe SSD则一般使用私有协议&#xff0c;目前已经处于比较小众的产品&#…

题解 洛谷P1239 【计数器】

找规律是最强的 本蒟蒻不会数位DP&#xff0c;不会数学方法&#xff0c;决定重拾起自己小学时学习的——找规律&#xff01;&#xff01;&#xff01; 先上结构体&#xff1a; struct Count {int a[10];Count operator (const Count x) const{Count ans;memset(ans.a,0,sizeof…

CDH使用秘籍(二):cloudera Manager中监控数据的存储

文章来源&#xff1a;http://blog.csdn.net/shifenglov/article/details/41281399CDH使用秘籍&#xff08;二&#xff09;&#xff1a;cloudera Manager中监控数据的存储 分类&#xff1a; Hadoop2014-11-19 14:18 1951人阅读 评论(0) 收藏 举报CDHCloudera ManagerManaged Ser…