大茂名网

 找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 211|回复: 0

[【编导】] 新闻天下次握手,四次挥手,原来TCP这么有礼貌!2022/12/26 10:04:32

[复制链接]

2万

主题

2万

帖子

9万

积分

钻石元老

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
98065
发表于 2022-12-26 10:04 | 显示全部楼层 |阅读模式

马上注册登陆,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?用户注册

x

我们在和他人谈话时,需要遵循一定的规则,比如确保对方能听懂我的语言。如果跟一个不懂中文的外国人说中文,是不可能很好地进行交流的。ip地址归属地查询的相关知识也可以到网站具体了解一下,有专业的客服人员为您全面解读,相信会有一个好的合作!


计算机之间的通信也是如此,必须遵循一定的规则才能顺利“交流”。



TCP与UDP是什么在TCPIP协议栈(互联协议系列)中,TCP(TCP,传输控制协议)与UDP(UDP,用户数据报协议)是传输层中的两种协议,我们平时刷视频、打游戏、看新闻等都要通过这两种协议进行数据传输。

那么这两种协议有什么区别呢



看完上面的表格,是不是还是有点懵,下面小编用一个比喻来告诉你二者究竟有什么不同。

我们把两个应用之间的通信当作是两个人在通信,在不考虑时间因素的前提下,我们把TCP看成是打,把UDP看成是写信。

两个人打时,需要提前拨通对方的,这就是需要建立连接;通话过程中,双方能及时确认消息,如果听不清楚可以要求对方重新说一次,这就是安全可靠。

写信只需要根据地址把信发出去,这就是不需要建立连接;发出去的信也不知道对方能否收到,这就是不可靠。

TCP为了保证传输文件的完整性,会根据接收方的接收速率控制发送方的发送速率,即行流量控制,所以TCP的传输速度低于UDP。

这两种协议不存在哪个好哪个差,都有着各自适合的应用场景。

比如传输文件时对速度没有要求,但是必须保证文件完整送达,没有数据丢失,这时就应该采用TCP协议,而我们在视频聊天时,时效性要求高而准确性要求略低,这时就采用UDP协议。



TCP是面向连接的协议,正如打时需要提前拨通,结束通话后需要挂断,那么TCP是如何建立连接与断开连接的呢

计算机之间的通信也是如此,必须遵循一定的规则才能顺利“交流”。

TCP的次握手在传输数据前,两台主机需要通过次会话建立连接,这个过程我们称为次握手。

首次握手:客户端向服务端请求建立连接,

SYN=1(建立连接),=(序列号),客户端进入SYN_SENT状态。

第二次握手:服务端向客户端返回确认并请求建立连接,

SYN=1(建立连接),ACK=1(已收到),=+1(确认号为收到的序列号加一),=(序列号),服务端进入SYN_RCVD状态。

第次握手:客户端向服务端发送确认报文,

ACK=1(已收到),=+1(确认号为收到的序列号加一),=+1(序列号),次握手完成以后,2个主机之间,就可以传输数据啦~



TCP的四次挥手当数据传输完成后,两台主机需要通过四次会话断开连接,这个过程我们称为四次挥手。

首次挥手:客户端向服务端请求断开连接,FIN=1(断开连接),=(序列号),客户端进入FIN_WAIT_1状态。第二次挥手:服务端向客户端返回确认报文,ACK=1(已收到),=+1(确认号为收到的序列号加一),=(序列号),服务端进入CLOSE_WAIT状态,客户端进入FIN_WAIT_2状态。第次挥手:服务端完成数据传输后,向客户端发送断开连接请求,FIN=1(断开连接),ACK=1(已收到),=+1(确认号为收到的序列号加一),=(序列号),服务端进入LAST_ACK状态。第四次挥手:客户端向服务端返回确认报文,ACK=1(已收到),=+1(确认号为收到的序列号加一),=+1(序列号),客户端进入TIME_WAIT状态,服务端进入CLOSED状态。客户端处于TIME_WAIT状态时,TCP连接还未释放掉,等待2个MSL(MSL,比较大段生命周期)的时长后,客户端进入CLOSE状态。

看到这里,相信大家还有些疑问,下面就由小编来一一解答。

为什么是次握手,两次握手或者四次握手不可以吗如果是两次握手,就可能出现下面这种情况。

客户端发送建立连接请求,由于络拥塞,迟迟没有得到回应。客户端再次发送连接请求,服务端回应,连接建立。

一段时间后,客户端首次发送的连接请求到达服务端,服务端以为客户端重新请求建立连接(其并没有),此时服务端会返回响应报文并一直处于待连接状态,这就造成了资源浪费,如下图所示。

那为什么不是四次握手呢

四次握手也能达到次握手的效果,也就是将原本的第二次握手拆分成两次,一次发送确认报文,一次分开发送请求建立连接报文,但这同样造成了资源浪费,如下图所示。所以比较终确定通过次握手建立连接。



为什么是四次挥手,次挥手不可以吗不可以。当客户端发送断开连接请求后停止发送数据(客户端还能接收数据),有可能此时服务端还有数据需要发给客户端,所以它先回一个确认报文,等发送完所有数据,再发送断开连接的报文,通知客户端可以断开连接了。

四次挥手结束后,为什么客户端没有立刻关闭呢客户端没有立刻关闭,而是进入TIME_WAIT状态,等待2个MSL的时长后,客户端才进入CLOSE状态,这是为了确保第四次挥手的确认消息到达服务端。

如果服务端在规定时间内未收到比较后的确认消息,会重新进行第次挥手请求断开连接,客户端重新发送确认消息,如下图所示。



MSL是报文的比较长生存时间,2个MSL是在络中来回两个报文所需要的比较长时间,如果超过这个时间,客户端没有重新收到断开连接的请求,说明四次挥手顺利完成,可以断开连接了。

总结今天的内容就到这里了,和小编一起复习一下今天的内容吧:

TCP和UDP是传输层中的两种协议,TCP安全可靠但传输速度慢,UDP传速度但可能丢失数据,这两种协议各有势,适合不同的应用场景。两台主机建立连接和断开连接的过程被称为“次握手”和“四次挥手”。了解了为什么一定是次握手和四次挥手。?
爱上大茂名,喜当大猫友,吃喝玩乐事,天天乐开怀!
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

QQ|客服:0668-2886677QQ:75281068|大茂微博|小黑屋|手机版|Archiver|大茂名网 ( 粤ICP备18149867号 )茂名市大茂科技有限公司 版权所有 

GMT+8, 2024-11-29 14:55 , Processed in 0.096236 second(s), 8 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表