文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

三次握手,四次挥手,原来TCP这么有礼貌!

2024-12-01 02:34

关注

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

TCP与UDP是什么

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

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

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

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

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

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

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

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

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

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

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

TCP的三次握手

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

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

客户端进入SYN_SENT状态。

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

服务端进入SYN_RCVD状态。

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

三次握手完成以后,2个主机之间,就可以传输数据啦~

TCP的四次挥手

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

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

为什么是三次握手,两次握手或者四次握手不可以吗?

如果是两次握手,就可能出现下面这种情况。

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

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

那为什么不是四次握手呢?

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

为什么是四次挥手,三次挥手不可以吗?

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

四次挥手结束后,为什么客户端没有立刻关闭呢?

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

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

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

总结

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

来源:中兴文档内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯