文章详情

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

请输入下面的图形验证码

提交验证

短信预约提醒成功

学习关闭TCP连接的相关知识

马六甲海峡

马六甲海峡

2024-04-18 00:11

关注

  在因特网协议族中,TCP层是位于IP层之上,应用层之下的传输层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。今天小编要给大家分享一篇教程,那就是:学习关闭TCP连接的相关知识。

  传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transportlayer)通信协议,由IETF的RFC793说明(specified)。从TCP协议这一个角度来看的话,一个已经建立的TCP连接有两种关闭方式,一种是正常关闭,也就是四次挥手关闭连接;另外还有一种就是异常关闭,一般情况下我们都会将其称之为连接重置(也就是RESET)。

  一、四次挥手的状态变迁

  首先小编先和大家说一下正常关闭的时候四次挥手的状态变迁,关闭连接的主动方状态变迁如下所示:FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT,而关闭连接的被动方的状态变迁如下所示:CLOSE_WAIT->LAST_ACK->TIME_WAIT.在四次挥手过程里面ACK包都是由协议栈(协议栈是指网络中各层协议的总和,其形象的反映了一个网络中文件传输的过程:由上层协议到底层协议,再由底层协议到上层协议)自动完成的,然而FIN包就一定要由应用层通过closesocket或者是shutdown主动发送。

  一般情况下连接正常关闭以后,recv就会得到返回值0,另外一个方面send也会得到错误码10058。除此之外,在我们的日常应用里面,连接异常关闭的情况也非常多。就比如说:应用程序被强行关闭、本地网络突然中断(也就是禁用网卡、网线拔出)、应用程序处理不当等等都会导致连接重置的情况发生,大家在连接重置的时候将会产生RST包,同一时间网络缓冲区里面未接收(或者是发送)的数据都将会丢失。当连接重置以后,本方send或者是recv就会得到错误码10053(closesocket的时候是10038),对方recv会得到错误码10054,send则得到错误码10053(closesocket的时候是10054)。

  二、关闭TCP连接

学习关闭TCP连接的相关知识_思科认证_HSRP_Voip_编程学习网

  在这里大家可以看到,操作系统为我们提供了两个函数来关闭一个TCP连接,这两个函数分别是closesocket以及shutdown.。在一般情况下面,closesocket就会向对方发送一个FIN包,但是也会有例外的哟。就比如说:有一个工作线程正在调用recv接收数据,在这个时候外部调用closesocket,就会导致连接重置的情况出现,同一时间向对方发送一个RST包,这一个RST包正正就是由本方主动产生的。

  另外一个方面shutdown能够直接用来关闭指定方向的连接,这一个函数接收两个参数,一个参数是套接字,另外一个参数就是关闭的方向,可用值为SD_SEND,SD_RECEIVE以及SD_BOTH这两者方向取值为SD_SEND的时候,无论socket处于什么状态(recv阻塞,或者是空闲状态),都会向对方发送一个FIN包,在这里大家都需要注意这一点与closesocket之间的区别。在这个时候本方进入FIN_WAIT_2状态,那么对方就会进入到CLOSE_WAIT这一个状态了,本方依然能够直接调用recv接收数据;方向取值为SD_RECEIVE的时候,大家可以发现双发连接状态依然还是没有任何的改变,还是处于ESTABLISHED的状态,本方依然能够直接send数据。但是小编想说的是,假如说对方再一次调用send方法的话,那么连接就会被立即重置,同一时间还会向对方发送一个RST包,这一个RST包就是被动产生的,但是在这里的话,大家依然还是需要注意这与closesocket之间的区别哟。

  小编结语:

  通过这篇考试认证教程,不知道大家是否已经学会了关闭TCP连接的相关知识呢?如果还是不太懂,可以看多几遍教程哟,毕竟思科认证还是一种较为受欢迎的考试认证。编程学习网教育每天更新不同的教程,一起来学习吧。

阅读原文内容投诉

免责声明:

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

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

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

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

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

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

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

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-考试认证-考试信息-考试报考
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯