【计算机网络】三次握手 四次挥手

这篇具有很好参考价值的文章主要介绍了【计算机网络】三次握手 四次挥手。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.三次握手

2.四次挥手

3.总结


三次握手和四次挥手是有连接特有的。三次握手,四次挥手指的是TCP有连接特点的中的步骤。建立连接(三次握手),断开连接(四次挥手)。建立连接操作一般都是客户端主动发起,断开连接操作客户端和服务器都可以主动发起。

1.三次握手

举个例子:如下图:A先向B发送 对于客户端,服务器而言,一般是客户端发起。

【计算机网络】三次握手 四次挥手,习题总结,计算机概述,计算机网络,网络

  1. 第一次握手A向B发送你好,B收到后 B就会知道A的发送和自己的接收功能是没问题的,但是A还不知道。
  2. 第二次握手B向A发送回复收到,A收到后,A就知道,B已经收到自己发送的信息了,,所以A就知道自己的发送和B的发送和接收功能是好的,但是B这这边还不知道A有没有收到自己的回复也就是不知道A的接收功能是否完好。
  3. 第三次握手A再次向B发送一下回应,B收到后,B就知道A的接收和自己的发送也是好的。至此,A,B都知道自己和对方的接受和发送是正常的。三次握手完成。建立连接完成。

 【计算机网络】三次握手 四次挥手,习题总结,计算机概述,计算机网络,网络

两边closed,listen,syn_ack是TCP的状态。建立连接阶段,主要有两个状态:

1.listen 服务器的状态 表示服务器已经准备就绪,客户端随时都可以连接。

2.established 客户端和服务器都有。表示建立连接完成,三次握手完成。

 三次握手的核心作用:

  1. 双方建立对对方的认同。(即保存对方的信息)。
  2. 验证通信双方各自的发送能力和接收能力是否正常。
  3. 让通信双方,在握手的过程中,针对一些重要的参数,进行协商。

 区分确认应答和三次握手的区别?

TCP的特点有可靠性传输,有连接。UDP的特点是不可靠传输,无连接。

确认应答是可靠性传输的核心,而三次握手是有连接中的步骤,有连接包含连接的建立(三次握手),断开(四次挥手),维护等等。确认应答和三次握手虽然过程很相似,但其实毫无联系。确认应答体现的是"可靠性传输",与连接不连接无关系。就算不连接也能可靠性传输。比如企业微信发一条消息,会出现已读,这个过程没有建立连接,也是可靠性传输,"已读"相当于ack(应答报文)。

【计算机网络】三次握手 四次挥手,习题总结,计算机概述,计算机网络,网络


2.四次挥手

如下图:可以是A先跟B说,也可以是B先跟A说。这个客户端和服务器都可以发起。

比如下面:A先跟B说:我要删除你了(1)。B回复说:好的(2)。然后B又跟A说:我也要删除你了(3)。A回复说:好的(4)。

【计算机网络】三次握手 四次挥手,习题总结,计算机概述,计算机网络,网络

【计算机网络】三次握手 四次挥手,习题总结,计算机概述,计算机网络,网络

四次挥手中有两个主要的状态

1.CLOSE_WAIT 等待关闭 出现在被动断开连接的一方。

2.TIME_WAIT 出现在主动断开连接的一方。意味着主动断开连接的这一方的所做的事基本已做完,但还不能立即close,等待一定时间后(等待是为了保证客户端这边最后发送的ack能够达到对面,防止ack丢包),然后才进行close操作。丢包就会引发超时重传,假设最后一次的ack丢包了,那么服务器这边在过了一定时间后,发现ack没来,就会猜测是客户端发来的ack丢了,还是我刚才发送的fin丢了。在不确定的情况下,服务器这边就会重新发送fin请求。客户端再回传ack。

                     【计算机网络】三次握手 四次挥手,习题总结,计算机概述,计算机网络,网络

那么TIME_WAIT具体保持多长时间呢,才真正释放呢?

假设网络上两个节点通信消耗的最大时间为MSL(可配置的参数),此时TIME_WAIT的保持时间最多为2MSL。MSL这个值一般是60s。以上面图为例,如果客户端这边等待了2MSL,还没收到服务器那边传来的FIN,就会认为服务器那边已经成功接收到自己的ack,进行close了,客户端这边也就不等待了,也会进行close。

ACK:确认序号是否有效。

SYN:请求建立连接,携带这个标识的称为同步报文段。synchronize,有点像锁,但这里翻译为同步,毫无关联。

FIN:通知对方,本端要关闭了。携带FIN标识的称为结束报文段


3.总结

面试画图

1.为啥会有三次握手,四次挥手?

原因是TCP是一个有连接的协议。其中连接建立的过程是三次握手,连接断开的过程是四次挥手。

2.三次握手的意义:

  1. 通信双方互相保存对方的信息。
  2. 验证通信双方得发送和接收能力。
  3. 协商一些关键参数。

4.三次握手中间两次能够合并的原因?四次握手中间两次不能合并的原因?

能不能合并主要看两个数据发送的时机相不相同。相同才能合并。

三次握手这三次交互过程( ack的发送,syn的发送 )是纯内核中完成的。应用程序感知不到,干预不了。服务器的内核系统收到syn后,就会立即发送ack,并且立即发送syn。所以中间这两次可以合并发送,其实也可以不合并,但合并会提高效率。所以就合并了。

而四次挥手中FIN的发送不是内核控制的,而是由应用程序(代码)控制的,当其调用socket的close方法或者进程结束,才会触发FIN。ACK是由内核控制的,收到FIN后,就会立即返回ACK。所以应用程序发生的时机会与你代码里的逻辑相关。代码越逻辑复杂(从接收到FIN还要执行其他代码逻辑才close操作),一个是立即返回,另一个是还要执行耗时。这两步操作完成的间隔越大,这种情况下合并就会等待另一个完成。若是时间长了,还会引发不必要的超时重传。所以通常情况下都是分开发送的。不过特殊情况下也是可以的,比如代码逻辑简单的时候。

上面实际上也回答了握手为啥是三次,挥手为啥是四次。

5.三次握手为啥不能是四次?或者不能是两次?

5.四次挥手为啥是四次?

6.TIME_WAIT的意义和作用。文章来源地址https://www.toymoban.com/news/detail-713190.html

到了这里,关于【计算机网络】三次握手 四次挥手的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络—TCP和UDP、输入url之后显示主页过程、TCP三次握手和四次挥手

    TCP是面向连接的、可靠的,基于字节流的传输层通信协议 。 图片来源小林coding 序号:传输方向上字节流的字节编号。初始时序号会被设置一个随机的初始值(ISN),之后每次发送数据时,序号值 = ISN + 数据在整个字节流中的偏移。假设A - B且ISN = 1024,第一段数据512字节已经

    2024年02月14日
    浏览(33)
  • 计算机网络——三次握⼿、四次挥手

    1、 第⼀个SYN报⽂ : 客户端 随机初始化序列号client_isn ,放进TCP⾸部序列号段, 然后把 SYN置1 。把SYN报⽂发送给服务端,表⽰发起连接, 之后 客户端处于SYN-SENT状态。 2、 第⼆个报⽂SYN+ACK报⽂ : 服务端收到客户端的SYN报⽂,把 ⾃⼰的序号server_isn放进TCP⾸部序列号 段,

    2024年02月15日
    浏览(26)
  • 【计算机网络】 TCP——四次挥手

    主动方打算关闭连接,此时会发送一个TCP首部FIN标志位被置为1的报文,也即FIN报文,之后主动方进入FIN_WAIT_1状态。 被动方收到该报文后,就向主动方发送ACK应答报文,接着被动方进入CLOSE_WAIT状态。 主动方收到被动方的ACK应答报文后,进入FIN_WAIT_2状态。 等待被动方处理完数

    2024年02月09日
    浏览(28)
  • 计算机网络之TCP四次挥手

    定义:建立一个连接需要三次握手,而终止一个连接要经过四次挥手;这由TCP的半关闭(half-close)造成的。所谓的半关闭,其实就是TCP提供了连接的一端在结束它的发送后还能接收来自另一端数据的能力 刚开始双方都处于ESTABLISHED 状态,假如是客户端先发起关闭请求。四次

    2024年02月13日
    浏览(19)
  • 【计算机网络】TCP传输控制协议——三次握手

    一开始,客户端和服务端都处于CLOSE状态,先是服务端监听某个端口,处于LISTEN状态。 然后客户端主动发起连接SYN,之后处于SYN-SEND状态。 服务端收到发起的连接,返回SYN,并且ACK客户端的SYN,之后处于SYN-RECV状态。 客户端收到服务端发送的SYN和ACK之后,发送ACK的ACK,之后处

    2024年02月09日
    浏览(29)
  • 【计算机网络】TCP握手与挥手:三步奏和四步曲

    TCP(传输控制协议)是一种面向连接的可靠的传输协议。在建立连接和关闭连接时,TCP使用了三次握手和四次挥手的机制来确保通信的可靠性。 TCP是一种非常重要的传输层协议,被广泛应用于各种网络通信场景中。无论是企业内部的数据传输,还是互联网上的数据交换,都离

    2024年01月21日
    浏览(24)
  • Linux网络编程:三次握手 & 四次挥手

    建立TCP可靠连接,只能是客户端先发起。   (1)SYN标志位为1,表示请求建立连接;ACK标志位为1,表示确认收到对方报文。 (2)seq为数据包序列号,ack为确认序列号。 (3)ack确认序列号含义:                 a)确认收到对方报文;                 b)希望收到

    2024年02月03日
    浏览(32)
  • 【网络知识点】三次握手和四次挥手

    三次握手的原理如下: 客户端向服务器发送一个SYN(同步)包,其中包含一个随机生成的初始序列号(ISN)。 服务器收到SYN包后,会发送一个SYN+ACK(同步+确认)包作为响应,其中包含确认号(ACK)和自己的随机生成的ISN。 客户端收到服务器的SYN+ACK包后,会发送一个ACK(确

    2024年02月09日
    浏览(29)
  • 【Linux网络】TCP/IP三次握手、四次挥手流程

    目录 一、三次握手,建立连接 二、四次挥手,断开连接 三、主要字段  1、标志位(Flags)  2、序号(sequence number)  3、确认号(acknowledgement number) 四、三次握手的报文变化 五、四次挥手的报文变化 六、面试题 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手,

    2024年02月08日
    浏览(36)
  • 【网络原理】TCP连接管理机制(三次握手四次挥手)

    🥊作者:一只爱打拳的程序猿,Java领域新星创作者,CSDN、阿里云社区优质创作者。 🤼专栏收录于:计算机网络原理 在使用TCP协议进行网络交互时,TCP会进行三次握手即建立连接,TCP四次挥手即断开连接。三次握手与四次挥手后就完成了网络交互,这样的操作也叫TCP的连接

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包