UNP——第二章,TCP状态,TIME_WAIT

状态可以用 netstat 验证

加粗线为 数据交换。
可以看出,TCP在 建立连接和 关闭连接,耗费资源,
因为UDP只需要两次数据通信即可。
但UDP没有可靠传输,和流量控制。
上面协商的MSS为,两者最小值,即小于536
注释:
MSS时SYN的一个选项,用于告诉对方 它的最大分节大小,即在本次连接中,它愿意接受的最大数据量。
2.TIME_WAIT
TIME_WAIT 是主动关闭方,发送最后一个ACK进行的状态。
需要等待 2MSL
TIME_WAIT的意义:
(1)可靠的实现TCP全双工连接终止
如果 没有TIME_WAIT,且最后一个ACK未抵达,
被动关闭端,会再次发送FIN,而对端已经处于其他状态,则会回复RST,
被动关闭端,收到RST,会异常报错。
即TCP全双工连接没有正常关闭。
(2)允许老的重复分节在网络中消逝
如果两端都已关闭,但分组仍在网络中转发(由于暂时的网络异常)
但建立新的连接,新的连接使用了和老的连接一样的IP和port。
新的连接就可能接受到老的连接的分组。
所以只要有 TIME_WAIT,且时间为2MSL,则能保证 接受或发送的分组一定消失于网络。
注释:
MSL是 分组在网络最长的生命时间,
分组的生命时间由两点决定:MSL和TTL,只要有一点超了,就被丢弃。
UNP——第二章,TCP状态,TIME_WAIT的更多相关文章
- 第二章 TCP/IP 基础知识
第二章 TCP/IP 基础知识 TCP/IP transmission control protocol and ip internet protocol 是互联网众多通信协议中最为著名的. ...
- tcp状态-TIME_WAIT与CLOSE_WAIT带来的坑
tcp状态: http://www.cnblogs.com/DengGao/p/tcp_state.html 1. tcp连接会占用系统资源(文件描述符), 有时候甚至会导致系统假死(不能发起或者处理 ...
- UNP——第二章,端口号,套接字对,TCP,UDP输出
1.端口号 端口号用于区分使用相同协议的进程. TCP69 与 UDP69 是不同的. 端口号范围 0 - 65535, 其中 0- 1023 是保留端口. 2.套接字对 TCP服务通过套接字对,唯一 ...
- UNP——第二章,TCP握手与挥手分析
1.握手 说明: 下面涉及 FIN,SYN,ACK之类数据时,都是由TCP服务收发, 涉及 accept, listen 之类api,都是 应用进程 完成. 都统一使用 客户端,服务端描述,请自行分辨 ...
- 关于TCP状态TIME_WAIT的理解
1.TIME_WAIT的作用: TIME_WAIT状态存在的理由:1)可靠地实现TCP全双工连接的终止 在进行关闭连接四次挥手协议时,最后的ACK是由主动关闭端发出的,如果这个最终的ACK丢失,服务器 ...
- CCNA第二章TCP/IP简介考试要点学习笔记
1.描述网络是如何工作的 DoD过程/应用层 -- OSI应用.表示和会话层(定义了结点到结点的应用通信协议以及对用户界面规范的控制): DoD主机到主机层 -- OSI传输层(保证了数据包的 ...
- UNP——第二章,常见协议概述
1.为什么要了解协议 程序员与协议合作,完成应用. 了解协议是为了了解协议完成了什么,提供了什么服务,自己还应该做什么. 2.从协议的角度,套接字是什么 套接字是协议的接口, IP套接字,代表可使用I ...
- UNP学习笔记(第二章:传输层)
本章的焦点是传输层,包括TCP.UDP和SCTP. 绝大多数客户/服务器网络应用使用TCP或UDP.SCTP是一个较新的协议. UDP是一个简单的.不可靠的数据报协议.而TCP是一个复杂.可靠的字节流 ...
- TCP/IP TIME_WAIT状态原理
原文转载:http://elf8848.iteye.com/blog/1739571 IME_WAIT状态原理 ---------------------------- 通信双方建立TCP连接后,主动 ...
随机推荐
- 无法访问GitHub
我们开发者经常用的最大的同性交流平台--GitHub忽然访问不了了,很尴尬 可以打开控制台 ping一下 github.com 果不其然 不通 不过幸运的是里面有github的ip地址,好像是美国某个 ...
- swoole热启动
通过扫描指定的要扫描的目录,把所有文件找出来,分别md5 连接字符串,最后再md5返回 启动定时器,扫描,当前的加密值和以前一样不管,否则就重启服务,把当前赋值给旧值 . httpServer.php ...
- spring boot:shardingsphere+druid多数据源整合seata分布式事务(spring boot 2.3.3)
一,为什么要给shardingsphere配置多数据源? 1,shardingjdbc默认接管了所有的数据源, 如果我们有多个非分表的库时,则最多只能设置一个为默认数据库, 其他的非分表数据库不能访问 ...
- Vue踩坑日记-You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignore all warnings in a file.
记录时间:2019年4月24日16:55:54 在build/webpack.base.conf.js文件中,注释或者删除掉:module->rules中有关eslint的规则
- 如何使用FastCGI处理自定义HTTP头
对于如何使用FastCGI处理自定义HTTP头这里记录一下注意事项: 在FastCGI中,自定义头可以从环境变量获得: 获取时名字前面要加HTTP_,字母要全部大写: 发送头不能有下划线_,否则该字段 ...
- 一文快速入门分库分表中间件 Sharding-JDBC (必修课)
书接上文 <一文快速入门分库分表(必修课)>,这篇拖了好长的时间,本来计划在一周前就该写完的,结果家庭内部突然人事调整,领导层进行权利交接,随之宣布我正式当爹,紧接着家庭地位滑落至第三名, ...
- Sec-Fetch-*请求头,了解下?
如果你使用76+版本的chrome浏览器,通过开发者面板查看每个网络请求,会发现都有几个Sec-Fetch开头的请求头,例如访问百度首页https://www.baidu.com/的请求: Sec-F ...
- 【转】Setting up SDL Extension Libraries on MinGW
FROM:http://lazyfoo.net/tutorials/SDL/06_extension_libraries_and_loading_other_image_formats/windows ...
- Java学习的第二十一天
1.综合实例 error异常:error指的是错误,通常是程序员不可能通过代码来解决的问题,底层环境或硬件问题,也就是说在程序中用户不用捕获error及任何error子类的异常. exception指 ...
- 在IIS中部署前后端应用,多么痛的领悟!
目前手上的Web项目是前后端分离的,所以有时也会倒腾Vue框架. 前后端应用最终以容器形态.在k8s中部署, 为此我搭建了基于Gitlab flow的Devops流程. 在Devops实践中,容器部署 ...