TCP三次握手的过程

TCP连接释放的过程:

1。为什么两次就建立连接还要三次握手呢?这主要是为了防止已失效的连接请求报文又突然传递服务器。

所谓“防止已失效的连接请求报文又突然传递服务器。”是这样一种情况:

A客户端发出连接请求,因为连接请求报文丢失而未等到确认。于是A再次重传了连接请求,建立了连接。数据传输完毕后,释放了连接。现在假设那第一个请求只是因为网路节点长时间滞留了,使得它在第二个连接释放后才到达B服务器,那么B会以为这是一个新的连接请求,于是就向A发了个连接确认,注意了:如果没有最后一次的确认B会一厢情愿的以为连接已经建立,可人家A同学一看那个B给的是什么呀!跟自己没关系,简单粗暴的丢掉。这时B孩子还傻傻的等着A给他发数据,就这样,B白白浪费的大把的时光和资源。

那B会一直傻等吗?当然不是,它的等待也是有限的,答案就是保活计时器。

2.为什么要有四次挥手的TIME_WAIT的状态?

(1)第一是为了保证最后一个的一个ACK报文能到达B。这个ACK报文有可能丢失,因而使得处在LAST_ACK状态得不到对已发送的FIN+ACK报文的确认,B会超时重传这个FIN+ACk ,而A就能在这TIME_WAIT时间(2MSL)里收到这个重传的报文,A就可以重传一次确认,如果没有这个TIME_WAIT, 那B重传的FIN_ACK,可A早就走了,自然不会再重发确认,这样B就无法按照正常步骤进入CLOSE 状态。

(2)第二是防止“已失效的报文连接请求”,A在TIME_WAIT中,经过这2MSL的时间,就可以使本链接持续的时间内产生的所有连接消失,这样就可以使下一个新的连接中不会出现这样旧的连接请求报文段。

2.2 聪明的你会发现谁先关闭谁就有一个TIME_WAIT的状态;

在linux的网络编程中,如果服务器如果先关闭,你会发现,现在想要立马再次启动服务器,就会报错说这个端口号被占用着,那就是因为有这个TIME_WAIT,2msl的时间.那么怎么解决 ?

解决:setsockopt()函数。在这就不多说了。

为什么只有三次挥手_TCP为什么要三次握手?为什么要有四次挥手?相关推荐

  1. TCP 的三次握手+两次交换+四次挥手

    目录 1.TCP 的三次握手+两次交换+四次挥手 1.1.三次握手 1.1.1.流程 1.1.2.两次握手为什么不可以? 1.1.3.第一次握手是否可以携带数据? 1.1.4.第二次握手是否可以携带数 ...

  2. 三次握手(Three-way Handshake)和四次挥手

    相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助. 而且对于有网络协议工程师之类笔试, ...

  3. 为什么只有三次挥手_TCP为什么是三次握手,为什么不是两次或四次,TCP四次挥手...

    这是一个很有意思的问题~ 首先,我们要知道TCP是全双工的,即客户端在给服务器端发送信息的同时,服务器端也可以给客户端发送信息.而半双工的意思是A可以给B发,B也可以给A发,但是A在给B发的时候,B不 ...

  4. TCP三次握手建立连接和四次挥手关闭连接

    TCP三次握手 是指建立TCP连接协议时,需要在客户端和服务器之间发送三个包,握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据. 第一次握手:客户端发送第一个包,其中S ...

  5. TCP三次握手连接和TCP四次挥手及大量TIME_WAIT解决方法:

    1.TCP建立连接,三次握手 建立的TCP连接可靠的连接,必须经过三次握手建立连接才能正式通信彼此传输数数据. 客户端请求服务端建立连接 第一次握手:客户给服务发送一个请求报文SYN, 客户端的状态置 ...

  6. 三次握手的过程、四次挥手、为什么要进行第三次握手、为什么要进行四次挥手

    首先要了解 TCP的标记 ACK就是确认报文,就是我反馈我收到这个报文了 ** ACK就是确认报文,就是我反馈我收到这个报文了,可以看到第一次握手不用确认,因为是第一个,而第二次三次,都要回复确认 第 ...

  7. 关于TCP连接四次握手(或者叫四次挥手)的详细总结

    四次挥手的过程: (客户端 || 服务器均可主动发起挥手动作. 假设客户端先发起挥手动作(关闭请求).假设将客户端视为主动方,服务器视为被动方.) 第一次挥手 第二次挥手 第三次挥手 第四次挥手 Fr ...

  8. TCP网络那点破事!三次握手、四次挥手、TIME-WAIT、HTTP 2.0 ....

    今天主要给各位分享TCP网络的一些常见知识点,日常工作或面试会经常遇到.考虑内容篇幅不小,建议先收藏,慢慢咀嚼. 如果有帮助,也请转给身边的朋友们,"独乐乐不如众乐乐" 首先,来个 ...

  9. 【Java 网络编程】TCP 连接 断开 机制 ( 三次握手 | 四次挥手 )

    文章目录 I TCP 连接建立流程 ( 三次握手 ) II SYN 和 ACK 中的随机值 III TCP 连接建关闭流程 ( 四次挥手 ) IV TCP 连接断开的保证 V 四次挥手的必要性 I T ...

最新文章

  1. java tcp 三次握手_用Java代码分析TCP的三次握手四次挥手过程
  2. layUI 日期组件单独使用 并且放大
  3. 桔子浏览器电脑版如何登录 桔子浏览器PC版账号登录教程
  4. php数字从大到小生成,php输入几个数从大到小排序的案例
  5. 剑指offer之java缓存总结,从单机缓存到分布式缓存架构
  6. TASKCTL连接不到服务端的几种情况和解决办法
  7. 整理任正非思想:要树立服务意识、品牌意识、群体意识-1996
  8. Java Spring 框架详解
  9. Android.Oldboot.1,腾讯手机管家发布全球首款可根除Oldboot病毒专杀
  10. 一些临时邮箱服务网站
  11. IDEA:Push rejected 解决方式
  12. Windows10关闭自动更新的多种方式
  13. 花一个星期时间呕心沥血整理出高频软件测试/自动化测试面试题和答案
  14. 微信公众号数据2019_数据丨2019年微信公众号文章数据报告!
  15. python3.8 安装fitter包失败,网上所有办法都试过不行之后!
  16. 纪念下大二参加的全国大学生智能汽车竞赛
  17. 基于搜索的贝叶斯网络结构学习算法-K2
  18. 使用docx4j生成指定页码的带水印的空白word文档
  19. 【读书笔记】Haskell函数式编程入门 I 基础篇 2. 类型系统和函数
  20. Vue.config.js开发环境与生产环境配置

热门文章

  1. 个人技术博客--团队Git规范(参考西瓜学长)
  2. git rebase 的使用
  3. JDBC实现用于操作数据库Mysql的工具类JDBCTools
  4. MapReduce三种join实例分析
  5. 初学者python笔记(面向对象编程、类与对象)
  6. cf修复服务器,CF:“卡顿”问题终于得到重视!新版本宣布修复,玩家这下开心了...
  7. c语言分治算法之归并排序,分治算法之归并排序
  8. python38使用_笨方法学Python 习题38:列表的操作
  9. 怎么将py文件转成dll_怎样将PDF文件转成CAD图纸?
  10. c++自学笔记 7.15