美文网首页
简单讲讲前端TCP协议三次握手和四次挥手

简单讲讲前端TCP协议三次握手和四次挥手

作者: 邪七 | 来源:发表于2022-07-18 12:09 被阅读0次

先上一张形象图:


微信图片_20220719114547.png

正图:


20210330174258408.png

三次握手过程简述:
  1:客户端发起请求建立连接,数据报文中标志位SYN=1(表示建立连接),同时要生成一个随机的32位序列号seq=x。
  2:服务端serve收到后就知道,客户端想要建立连接,于是发送一个数据报文,其中SYN=1,也会生成一个序列号seq=y,还会有一个标志位ACK=1(表示确认号有效),同时还有一个ack(确认号)=x+1,此时表示服务端告诉客户端,接下来你给我发的数据报文要从x+1开始。
(此时,对于客户端而言,我给服务端发送信息,服务端回复我了,同时我能收到服务端的信息,说明客户端这边是没问题的。但是服务端发给客户端的报文,客户端一定能收到吗?)
  3:为了安全,为了可靠,显然两次握手达不到这个目的,服务端只能知道我能收到客户端信息,但是客户端能不能收到我的信息还不确定。所以客户端在收到服务端的消息后,立马返回给服务端一个信息,其中ACK=1,ack=y+1,道理同上,至此两方面通信都可以进行。
  4:(上图中,ACK为标志位,seq为序号,ack为确认号序列)。

四次挥手过程简述:
  1:服务端要断开连接,发送报文中的标志位FIN=1,seq也是有的但不是随机生成的,而是随着通信的进行不断叠加的,假设到seq=x+2。
  2:服务端进行应答,其中标志位ACK=1,ack=y+1,于是客户端就知道服务端已经收到了我的消息
  3:服务端向客户端发送报文消息,其中FIN=1,seq=,此时服务端得到的消息是,客户端不会在向我发送数据报文了,客户端已经准备好断开了,但是服务端可能还有消息给客户端?所以2.3次握手是不能合并的。
  4:客户端同理进行应答,其中ACK=1,ack=
*,至此成功的断开连接。
注意:TCP/IP连接是安全的,是建立在连接上的。TCP 使用四次挥手的原因是因为 TCP 的连接是全双工的,所以需要双方分别释放到对方的连接,单独一方的连接释放,只代 表不能再向对方发送数据,连接处于的是半释放的状态。

为什么是要三次握手,不是二次四次。
  简单来说,两次不够安全,四次过于浪费。
严格来说可以从三次握手过程来看,客户端发起请求建立连接必须要发送标识码,服务端收到客户端想要连接的标识码后,也会发返回一个确认号,并且告诉客户端接下来你发给我的数据报文要从X+1开始。此时服务端不知道客户端是否收到这个消息。所以两次握手是不够的。因此在客户端收到服务端的响应后,会再次发送新的报文。通过这三次链接,不管是客户端还是服务端,都知道要给对方发消息,也能收到对方的响应。所以这个链接就已经被安全的建立了。

面试场景:(建议梳理成自己的方式,熟悉表达)
  TCP/IP 协议是传输层的一个面向连接的安全可靠的一个传输协议,三次握手的机制是为了保证能建立一个安全可靠的连接,那么第一次握手是由客户端发起的,客户端会向服务端发送一个报文,告诉服务端我要发起链接了。服务端收到这个报文后,知道客户端要和我建立连接,于是服务端就会向客户端发送一个确认消息,表示确认客户端发起第一次链接请求。经过以上两次握手之后,对于客户端而言,已经明确了能给服务端发送成功消息,也能收到服务端的响应,但是对于服务端来说是不够的。因为两次握手服务器知道了客户端要向我链接,我响应给客户端的消息客户端是否能收到,服务端不确定的。所以此时还需要第三次握手。第三次握手就是当客户端收到我的确认消息后,还要继续给服务端进行回应。通过以上3次链接,不管是客户端还是服务端都知道既能给对方发送消息,也能收到对方的响应,那么这个连接就被安全的建立了。
  因为TCP协议是通讯双方的,所以断开连接也需要四次挥手。四次挥手也是有客户端发起的,客户端会发送一个我要断开连接的报文发给服务端,服务端此时不一定做好准备了,因为当客户端发起断开连接这个消息的时候,服务端可能还有未发送完的消息,服务端还要继续发送。所以服务端会告诉客户端,我还没做好准备,你还要等我一下。等服务端完全准备好后,就会发一个新的消息给客户端,告诉客户端,我准备好了。你可以断开连接了。客户端收到后,会发送一个包给服务端,好的,那我这边就断开了。不用回复了。通过这四次的相互连接,不管是服务端还是客户端度一斤刚做好了断开连接的准备,于是连接就断开了。
  以上就是我个人对三次握手和四次挥手的一个理解。

相关文章

  • 网络编程10_图解TCP连接中的3次握手和4次挥手

    TCP三次握手,四次挥手 什么是“三次握手,四次挥手”? TCP 是一种面向连接的单播协议,在发送数据前,通信双方...

  • 图解TCP:三次握手,四次挥手

    TCP三次握手,四次挥手 什么是“三次握手,四次挥手”? TCP 是一种面向连接的单播协议,在发送数据前,通信双方...

  • 不积跬步--TCP三次握手和四次挥手过程

    本文来至转载TCP三次握手和四次挥手过程 TCP三次握手和四次挥手过程 1、三次握手 (1)三次握手的详述 首先C...

  • TCP/IP基础

    1.网络分层及对应的协议 3.TCP协议的三次握手及四次挥手三次握手及四次挥手的简图如下: 三次握手的过程: 第三...

  • TCP的三次握手和四次挥手

    参考资料:[1].【TCP】详解TCP 三次握手和四次挥手[2]. iOS:为什么TCP连接要三次握手,四次挥手[...

  • TCP/IP协议

    TCP/IP协议三次握手与四次握手流程解析 HTTP协议—— 简单认识TCP/IP协议 TCP/IP协议入门(一)...

  • 计算机网络知识目录

    · TCP/IP协议模型 TCP 三次握手四次挥手 四元组 · Http · Https

  • 2018-03-20

    TCP协议中的三次握手和四次挥手 SYN(synchronous建立联机)ACK(acknowledgement ...

  • day 27 操作系统基础网络章节

    TCP/UDP协议说明 TCP协议三次握手过程原理 TCP协议四次挥手过程原理 问题: TCP十一种状态集转换 三...

  • TCP、IP、DNS协议

    目录 •IP 协议• TCP 协议 及 TCP协议的连接与释放(三次握手,四次挥手)•DNS协议• 各种协议与Ht...

网友评论

      本文标题:简单讲讲前端TCP协议三次握手和四次挥手

      本文链接:https://www.haomeiwen.com/subject/zuwjirtx.html