TCP三次握手(待细研究)

xu言:

  看到一张不错清晰的Tcp三次握手图,收藏

 

Initiator  发起人

Receiver  接收者

 

LISTENING 状态
xx服务启动后首先处于侦听(LISTENING)状态。

 

ESTABLISHED 状态
ESTABLISHED的意思是建立连接。表示两台机器正在通信。

 

CLOSE_WAIT 状态
对方主动关闭连接或者网络异常导致连接中断,这时我方的状态会变成CLOSE_WAIT 此时我方要调用close()来使得连接正确关闭

TIME_WAIT 状态
我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分 段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情 况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。

 

SYN_SENT 状态
SYN_SENT状态表示请求连接,当你要访问其它的计算机的服务时首先要发个同步信号给该端口,此时状态为SYN_SENT,如果连接成功了就变为 ESTABLISHED,此时SYN_SENT状态非常短暂。但如果发现SYN_SENT非常多且在向不同的机器发出,那你的机器可能中了冲击波或震荡波 之类的病毒了。这类病毒为了感染别的计算机,它就要扫描别的计算机,在扫描的过程中对每个要扫描的计算机都要发出了同步请求,这也是出现许多 SYN_SENT的原因。

 

  根据TCP协议定义的3次握手断开连接规定,发起socket主动关闭的一方 socket将进入TIME_WAIT状态,TIME_WAIT状态将持续2个MSL(Max Segment Lifetime),在Windows下默认为4分钟,即240秒,TIME_WAIT状态下的socket不能被回收使用. 具体现象是对于一个处理大量短连接的服务器,如果是由服务器主动关闭客户端的连接,将导致服务器端存在大量的处于TIME_WAIT状态的socket, 甚至比处于Established状态下的socket多的多,严重影响服务器的处理能力,甚至耗尽可用的socket,停止服务. TIME_WAIT是TCP协议用以保证被重新分配的socket不会受到之前残留的延迟重发报文影响的机制,是必要的逻辑保证.

 

位码即tcp标志位,有6种标示:
SYN(synchronous建立联机)
ACK(acknowledgement 确认)
PSH(push传送)
FIN(finish结束)
RST(reset重置)
URG(urgent紧急)
Sequence number(顺序号码)
Acknowledge number(确认号码)

 

参考资料:

https://baike.baidu.com/item/%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B/5111559?fr=aladdin

https://blog.csdn.net/zdwzzu2006/article/details/7713499

https://www.cnblogs.com/sunxucool/p/3449068.html

https://www.cnblogs.com/shenlinken/p/6571789.html

https://www.cnblogs.com/qq78292959/p/3922231.html

 

转载于:https://www.cnblogs.com/Cong0ks/p/9339962.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427381.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu20.04下安装vmshare tools_Go语言的安装与配置-vscode

vscode是比较好用的,虽然goland自带插件但是收费,所以配置vscode虽然麻烦但是也值得。Step1.下载安装vscode和golangDownload Visual Studio Code - Mac, Linux, Windows​code.visualstudio.comThe Go Programming Language​golang.google.cnnext step…

小说中人称转换作用_长篇儿童小说《合欢》:一树红绒落马缨

浙江少年儿童出版社出版肖复兴的第二部长篇儿童小说《合欢》,因对儿童独立人格的自觉尊重与强调,以及对人物复杂内心世界的深度开掘与勘探,回应了“儿童的被发现”这一重要课题。《合欢》不仅是作者对“远逝的童年”的一次深情回眸&#xff0…

内置函数之sorted,filter,map

# 4,用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb # name[oldboy,alex,wusir] # print(list(map(lambda i:i"_sb",name))) #5,用map来处理下述l,然后用list得到一个新的列表,列表中每个人的名字都是sb结尾…

asp按时间自动递增编号_约束力最强的手铐——美国ASP钢性手铐

美国ASP公司生产的钢性手铐,是目前为止世界上约束力最大的手铐。这种手铐的最初设计,是借鉴了中国古代的刑具——枷。钢性的手铐链接,非常好的约束罪犯的双手,使其没有任何活动的空间。而且最大的好处就是,执法人员只要…

python按行读取文件取消空白行_在Python中读取文件时忽略空行的最简单方法

我将堆栈生成器表达式:with open(filename) as f_in: lines (line.rstrip() for line in f_in) # All lines including the blank ones lines (line for line in lines if line) # Non-blank lines 现在,lines都是非空行。这样你就不用在电话线上打两次…

SQL Server2012如何导出sql脚本并且还原数据库

一 备份数据库 1 选择某一个数据库,右键依次选择:任务》生成脚本; 2 选择要编写脚本的数据库对象,注意此处可以选择特定的数据库对象,我们可以选择我们需要备份的数据表。 3 在当前页面下面第一步选择高级选项&am…

脚本启动慢_Linux 常用运维脚本,建议收藏

同步本机时间ntpdate 210.72.145.44清除系统缓存,空出更多内存free && sync && echo 3 > /proc/sys/vm/drop_caches && free杀掉僵尸进程kill $(ps -A -ostat,ppid | awk /[zZ]/ && !a[$2] {print $2})显示全部arp解析tcpdump a…

eclipse maven项目 class类部署不到tomcat下_Servlet tomcat部署

网上搜到的很多利用eclipse结合tomcat开发servlet的教程都要修改server.xml感觉这种方式太粗暴了,server.xml最好是与应用无关的,这里比较推荐export war的方式进行部署先记录一下环境配置过程我的系统是ubuntu 14.04;下载eclipse for javaee…

JS数组遍历

### 三 数组的遍历( 1 ) for 循环 let ary [a, b, c, d, 12, 3, 4, f]; for (let i 0; i < ary.length; i) { console.log(ary[i]); }( 2 ) for of &#xff08;ES6 &#xff09; let ary [a, b, c, d, 12, 3, 4, f]; for(let item of ary){ console.log(…

python多线程并发写入_Python多线程并发的简单测试

之前也写了一些简单的Python程序&#xff0c;对于多线程的并发一直没有涉及&#xff0c;今天决定先突破一下&#xff0c;把这个部分的内容先快速的掌握&#xff0c;然后在这个基础上细化改进。我的好友冰川擅长Python技术&#xff0c;所以就拿来主义&#xff0c;参考了他的文章…

tensorflow 指定cpu 但是还会运行 gpu_PyTorch VS TensorFlow 谁最强?这是标星 15000+ Transformers 库的运行结果...

点击上方“AI有道”&#xff0c;选择“星标”公众号重磅干货&#xff0c;第一时间送达作者 | Lysandre Debut译者 | 陆离出品 | AI科技大本营(ID: rgznai100)【导语】自然语言处理预训练模型库 Transformers 实现了几种用于 NLP 任务的最先进的 Transformer 架构&#xff0c;如…

CSS 组合选择符

CSS 组合选择符 一、简介 组合选择符说明了两个选择器直接的关系. CSS组合选择符包括各种简单选择符的组合方式。 在 CSS3 中包含了四种组合方式: 后代选择器(以空格分隔)子元素选择器(以大于号分隔&#xff09;相邻兄弟选择器&#xff08;以加号分隔&#xff09;普通兄弟选择器…

python爬取知乎live_python爬虫——xml数据爬取

回想去年写毕业论文时候需要数据&#xff0c;虽然数据量不大&#xff0c;但是手工录入&#xff0c;也是颇费眼神。现在自学了Python&#xff0c;就拿曾经的需求当做案例吧&#xff01; 爬取目标&#xff1a;最近20年每个月的仔猪价格&#xff0c;生猪价格和猪肉价格 爬取软件&a…

after不显示_web前端入门到实战:css实现单行、多行文本超出显示省略号

前言&#xff1a;项目中我们经常遇到这种需求&#xff0c;需要对单行、多行文本超出显示为省略号。这篇文章主要总结了小编解决此问题的方法&#xff0c;有不足之处欢迎大家指正。单行文本省略.ellipsis-line {border: 1px solid #f70505;padding: 8px;width: 400px;overflow: …

linux下查看内存使用情况

基本内存术语解读 1> free -m 同样是做为缓存&#xff0c;buffers和cache又有啥区别呢&#xff1f; 于是又查了些资料&#xff0c;发现buffers实际应该是叫“缓冲”&#xff0c;其英文解释是&#xff1a;A buffer is something that has yet to be "written" to d…

redistemplate使用_如何使用 SpringBoot + Redis 优雅的解决接口幂等性问题

# 前言在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求&#xff0c;我们来解释一下幂等的概念&#xff1a;任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义&#xff0c;最终的含义就是 对数据库的影响只能是一次性的&#xff0c;不能重复处理。如何…

python 创建类_python 用type()创建类

type()可以查看一个类型&#xff0c;也可以查看变量的类型class Hello1(object):def hello(self, name world):print(Hello, %s % name)h1 Hello1()h1.hello()print(type(Hello1))print(type(h1))输出&#xff1a;Hello, world#Hello是一个class&#xff0c; 它的类型就是typ…

关于c语言中如何四舍五入(圆整)的问题!

关于c语言中如何四舍五入(圆整)的问题! 在c语言中,用70.0/6得到的值赋给一个浮点变量,只会得到11.666667(因为浮点型只留下小数点后六位),而如果我们想输出结果的约数,必须要对结果进行四舍五入. 一般来说,在c语言中,如果想要对一个结果进行四舍五入,我们通常会先将需要圆整的…

图像的灰度级和动态范围(转)

学习笔记&#xff08;一&#xff09;——图像的灰度级和动态范围转载于:https://www.cnblogs.com/LittleTiger/p/9359712.html

jdbctemplate 开启事务_SpringBoot 系列教程之事务隔离级别知识点小结

上一篇博文介绍了声明式事务Transactional的简单使用姿势&#xff0c;最文章的最后给出了这个注解的多个属性&#xff0c;本文将着重放在事务隔离级别的知识点上&#xff0c;并通过实例演示不同的事务隔离级别下&#xff0c;脏读、不可重复读、幻读的具体场景I. 基础知识在进入…