慢慢说计网:TCP 和 UDP[亲测有效]

慢慢说计网:TCP 和 UDP[亲测有效]小Q:什么是三次握手?慢慢:TCP 协议是面向连接的协议。于是在连接之前,我们得确保发送主机和接收主机存在且能够连接。三次握手就是解决这个问题的

欢迎大家来到IT世界,在知识的湖畔探索吧!

小Q:什么是三次握手?

慢慢:TCP 协议是面向连接的协议。于是在连接之前,我们得确保发送主机和接收主机存在且能够连接。三次握手就是解决这个问题的关键。

  • 首先客户端先送一条同步报文给服务端,这个报文用 SYN 标注为同步报文并设置一个随机的序列号
  • 服务端收到报文后发送一条同步确认报文,并且 ack = seq+1
  • 客户端收到确认报文后再发送响应报文给服务端,这个时候不是同步状态,且可以携带数据。
慢慢说计网:TCP 和 UDP[亲测有效]

小Q:为什么非得三次握手?

慢慢:握手的目的主要是确认客户端和服务器直接存在且可用。如果只有两次报文的情况下,会出现一种情况:

  • 客户端发送一条连接报文,但报文应网络问题阻塞在路上;
  • 客户端没有收到响应,再次发送连接报文;
  • 服务端收到后发起响应,此时代表连接建立,双方相互通信;
  • 双方通信完毕后,连接断开;
  • 连接断开后服务端又收到客户端第一次发送的报文,开启连接;
  • 但此时客户端已经关闭,不同客户端连接,造成了服务端的资源浪费。

为什么不需要四次握手呢?四次握手也无非是发送确认报文和比较序列号。其实这些步骤在 TCP 的数据发送和响应节点都有做到,笔者认为这些都不应该算是握手阶段,而应该是连接的维护阶段,因为握手阶段是纯粹的确认双方存在的手段。

小Q:什么是四次挥手?

慢慢:当连接关闭时,需要双方都主动提出关闭,并且相应的对方也得发出应答报文。四次挥手的过程主要如下:

  • 客户端发起关闭请求报文(FIN 字段标记),并且将状态改为 fin_wait1;
  • 服务端收到请求后发送确认报文,关闭监听进程,并将状态改为 close_wait;
  • 客户端收到响应后,关闭发送进程,并将状态改为 fin_wait2;
  • 服务端要关闭时向客户端发送关闭请求报文,并将状态改为 last_wait;
  • 客户端收到请求后发送确认报文,关闭监听进程,并将状态改为 close;
  • 服务端收到响应后,关闭发送进程,并将状态改为 close 状态。
慢慢说计网:TCP 和 UDP[亲测有效]

小Q:为什么得要四次挥手呢?

慢慢:因为双方都有发送和监听的进程,每次要关闭一条单向通道,就需要有一应一答来保证双方都能接收到信息。为什么不用五次或以上呢?是因为在关闭的 last_wait 上设置了等待 2MSL,超时则自动关闭。

  • MSL 为报文最大存活时间。为了能够让客户端收到服务端的关闭请求,服务端在发出请求后并不直接关闭连接,而是需要等待 2MSL 才关闭,这时为了防止发送的关闭请求客户端没有收到,从而能够再重复发送一次请求。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/17427.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信