首页 >  正文
三次挥手四次握手通俗易懂 三次握手四次挥手通俗解释

大家好,今天来为大家解答以上的问题。三次挥手四次握手通俗易懂,三次握手四次挥手通俗解释这个很多人还不知道,现在让我们一起来看看吧!

1、建立连接协议(三次握手) (1)客户端发送一个带SYN标志的TCP报文到服务器。

2、这是三次握手过程中的报文1。

3、 (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。

4、因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。

5、 (3) 客户必须再次回应服务段一个ACK报文,这是报文段3。

6、 2、连接终止协议(四次挥手) 由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。

7、这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。

8、收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。

9、首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

10、 (1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送(报文段4)。

11、 (2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。

12、和SYN一样,一个FIN将占用一个序号。

13、 (3) 服务器关闭客户端的连接,发送一个FIN给客户端(报文段6)。

14、 (4) 客户段发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。

15、 CLOSED:这个没什么好说的了,表示初始状态。

16、 LISTEN:这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处于监听状态,可以接受连接了。

17、 SYN_RCVD:这个状态表示接受到了SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat你是很难看到这种状态的,除非你特意写了一个客户端测试程序,故意将三次TCP握手过程中最后一个ACK报文不予发送。

18、因此这种状态时,当收到客户端的ACK报文后,它会进入到ESTABLISHED状态。

19、 SYN_SENT:这个状态与SYN_RCVD遥想呼应,当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文,因此也随即它会进入到了SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。

20、SYN_SENT状态表示客户端已发送SYN报文。

21、 ESTABLISHED:这个容易理解了,表示连接已经建立了。

22、 FIN_WAIT_1:这个状态要好好解释一下,其实FIN_WAIT_1和FIN_WAIT_2状态的真正含义都是表示等待对方的FIN报文。

23、而这两种状态的区别是:FIN_WAIT_1状态实际上是当SOCKET在ESTABLISHED状态时,它想主动关闭连接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状态。

24、而当对方回应ACK报文后,则进入到FIN_WAIT_2状态,当然在实际的正常情况下,无论对方何种情况下,都应该马上回应ACK报文,所以FIN_WAIT_1状态一般是比较难见到的,而FIN_WAIT_2状态还有时常常可以用netstat看到。

25、 FIN_WAIT_2:上面已经详细解释了这种状态,实际上FIN_WAIT_2状态下的SOCKET,表示半连接,也即有一方要求close连接,但另外还告诉对方,我暂时还有点数据需要传送给你,稍后再关闭连接。

26、 TIME_WAIT:表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。

27、如果FIN_WAIT_1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。

28、 CLOSING:这种状态比较特殊,实际情况中应该是很少见,属于一种比较罕见的例外状态。

29、正常情况下,当你发送FIN报文后,按理来说是应该先收到(或同时收到)对方的ACK报文,再收到对方的FIN报文。

30、但是CLOSING状态表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文。

31、什么情况下会出现此种情况呢?其实细想一下,也不难得出结论:那就是如果双方几乎在同时close一个SOCKET的话,那么就出现了双方同时发送FIN报文的情况,也即会出现CLOSING状态,表示双方都正在关闭SOCKET连接。

32、 CLOSE_WAIT:这种状态的含义其实是表示在等待关闭。

33、怎么理解呢?当对方close一个SOCKET后发送FIN报文给自己,你系统毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。

34、接下来呢,实际上你真正需要考虑的事情是察看你是否还有数据发送给对方,如果没有的话,那么你也就可以close这个SOCKET,发送FIN报文给对方,也即关闭连接。

35、所以你在CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。

36、 LAST_ACK:这个状态还是比较容易好理解的,它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。

本文到此分享完毕,希望对大家有所帮助。

猜你喜欢
  小雪节气意味着什么 小雪节气的含义是什么
  满天星的种植方法 满天星怎么种植
  白露代表的寓意 白露代表的寓意是什么
  贝壳什么寓意 贝壳的寓意
  收蒜苔最佳方法 收蒜苔的最佳方法介绍
  给男孩子取什么名字好 适合男孩子的名字
  减肥都有什么运动方法 减肥运动方法类别
  牛奶洗脸怎么洗 牛奶洗脸的方法
  最励志的好句子 励志的好句子举例
  油画直接画法如何做底 油画直接画法需要做什么样的底子
  金刚菩提怎么盘红的快 怎么快速盘红金刚菩提手串
  京剧最基本的两种声腔是哪两种 京剧介绍
  最简单的水种大蒜法 这个方法学会了吗
  草莓入冬前怎么处理 草莓冬天怎么办
  夏季皮肤保养的重点 夏季皮肤保养的重点是什么

热门推荐
  2020年是什么年生肖 2020年出生属什么
  靓仔是哪个地方的方言 靓仔是哪里的方言
  鸡宝宝起名技巧
  企业文化是什么 企业文化包括哪些
  谷歌怎么注册账号 谷歌如何注册账号
  什么叫扇子面交朋友 扇子面交朋友的含义
  灯芯绒是什么 灯芯绒简介
  18岁成人礼父母寄语 18岁成人礼父母寄语有哪些
  大理石划痕修复的方法 怎么修复大理石划痕
  文明城市标语 关于文明城市的标语有哪些
  什么叫平均账面价值 平均账面价值是什么
  微信昵称霸气冷酷 霸气冷酷微信昵大全
  护照办理流程
  2017有寓意的鸡年宝宝名字
  微信红包6.66的寓意 微信红包6.66有什么意义

  • 评论列表