TCP链接的三次握手与四次断开
一直总觉得三次握手和四次断开,之前老师讲的有问题,经过自己再次琢磨,发现是的,老师讲的没毛病,这次也把自己的理解总结一下,让对这个知识模糊的小伙伴再换种思路去理解
首先看一下TCP三次握手发生了哪些:
TCP三次握手
这是第一次用画图工具画图,有点low,细节处理的不好见谅
这是第一次设计三次握手的过程,实际上发生了四件事,其次你要清楚TCP链接建立的标准是双向的,就像谈恋爱表白一样,你必须俩人相互喜欢才能表白成功啊
白话版:
TCP 链接建立就像谈恋爱一样,互相表白才是表白成功
背景条件:某专业 某低富帅 和 某黑富美 表白过程
1,低富帅向自己爱慕依旧的黑富美表白说:俺喜欢你
2,黑富美听到低富帅的告白,回复:恩
-->到这一阶段,看到这情况也就是说这哥们已经凉了,但是作为上帝的我肯定要他表白成功啊
3,黑富美回答之后,又思考了一下毕竟门当户对,于是随即也向低富帅表白说:俺喜欢你
4,低富帅听到黑富美的告白,激动地回复:恩
-->到此,俩人恩爱的在了一起,就像TCP一样,通讯链接建立成功
但是有一点不好的是TCP三次握手原型要建立四次链接,考虑到Server在第2步和第3步都要向Client分别建立一次请求,那么显然这是浪费流量,后来改良版后的就将三次握手改成了现在的样子,如下:
经过这样的一次裁剪和优化顺利的将四次握手变成了现在的三次握手
TCP四次断开
什么是四次断开呢,那么既然能告白在一起,也能性格不合而分手,而四次断开就是发生在Client和Server数据传输完成时所发生的
白话版:
背景条件:某专业 某渣男 和 某白富美 因xxx事件,分手过程
1,有一天,渣男的主动向白富美说:咱俩分手吧
2,白富美听到渣男的请求,回复:恩,我知道了,你等下吧,我下午吧行李收拾下搬回学校
3,下午白富美搬回学校后,给渣男说,我甩了你,咱俩分手吧
4,渣男收到请求后,恋爱结束
当然可能有吃瓜群众坐不住了,为什么三次握手能压缩成三次,四次断开为什么不能???
四次断开由于服务器传输完毕后并不代表客户端也同时接收完毕,所以emmmm..
完整的TCP通讯和过程状态
对于tcp的通讯过程还有一个重要的点就是通讯状态,每次tcp的交流在系统中都是可以监控的,看看状态有哪些吧
我们来捋一下每一个状态:
三次握手阶段
第一次握手:建立连接时,客户端发送syn包到服务器,并进入SYN_SENT状态,等待服务器确认
第二次握手:服务器收到syn包,必须确认客户的SYN,同时自己也发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RCVD状态;(SYN_RCVD,原名为syn_received有的博客是写SYN_RCVD也有的是RECV,但我理解的是表达的都是一个意思)
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
开始数据传输
...
四次断开阶段
第一次握手: 客户端向服务端发起断开请求,发送FIN,发送seq编号,并回复上次正常数据传输的ack确认,客户端进入FIN_WAIT_1
第二次握手: 服务端收到后,首先回复ack一个确认,进入CLOSE_WAIT状态,而客户端进入FIN_WAIT_2阶段
第三次握手: 服务端向客户端发送FIN断开请求,和seq编号,进入LAST_ACK状态,客户端进入TIME_WAIT状态
第四次握手: 客户端收到FIN请求后,回复ack,则通讯连接断开
其中两个梗
SYN_RCVD:如果你的服务器出现了大量的SYN_RCVD,你可能要留意了可能遭遇了SYN泛洪×××
TCP SYN泛洪发生在OSI第四层,这种方式利用TCP协议的特性,就是三次握手。×××者发送TCP SYN,SYN是TCP三次握手中的第一个数据包,而当服务器返回ACK后,该×××者就不对其进行再确认,那这个TCP连接就处于挂起状态,也就是所谓的半连接状态,服务器收不到再确认的话,还会重复发送ACK给×××者。这样更加会浪费服务器的资源。×××者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。*
TIME_WAIT:如果你的服务器出现大量TIME_WAIT,那么请格外留意你的服务器负载
TIME_WAY是TCP链接的最后一步,大规模的出现说明你的访问量很大,一定要格外的留意资源的消耗,已做好随时增加设备或者调整的准备
baklog什么梗
表示内核为相应套接字排队的最大连接个数。SYN-ACK重传次数服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。
转载于:https://blog.51cto.com/swiki/2166063
TCP链接的三次握手与四次断开的更多相关文章
- 通俗大白话来理解TCP协议的三次握手和四次断开
from : https://blog.csdn.net/Neo233/article/details/72866230?locationNum=15&fps=1%20HTTP%E6%8F%A ...
- TCP/IP协议三次握手、四次断开
1.tcp报文格式 1行代表一个字节: 第一行:代表源端口和目的端口,分别占16位: 第二行:32位序列号:表示客户端向服务端发送的报文的序号是多少,这个序号是计算机随机生成的一个代表该报文的唯一标示 ...
- TCP/IP协议三次握手与四次握手流程解析
原文链接地址:http://www.2cto.com/net/201310/251896.html TCP/IP协议三次握手与四次握手流程解析 TCP/IP协议的详细信息参看<TCP/IP协议详 ...
- TCP/IP协议三次握手和四次挥手大白话解说
前言 昨天晚上被一位师傅问到了TCP/IP的工作机制,心里很清楚三次握手,然而对于四次挥手却忘了,这是大学习里学过的,奋而翻阅书籍和网络对之前所学的做一个温顾,算是夯实自我吧. TCP(Transmi ...
- TCP 中的三次握手和四次挥手
Table of Contents 前言 数据报头部 三次握手 SYN 攻击 四次挥手 半连接 TIME_WAIT 结语 参考链接 前言 TCP 中的三次握手和四次挥手应该是非常著名的两个问题了,一方 ...
- 详解TCP连接的“三次握手”与“四次挥手”(下)
上文链接: 详解TCP连接的"三次握手"与"四次挥手"(上) 四.TCP的四次挥手(Four-Way Wavehand) 0.前言 对于"三次握手&q ...
- TCP/IP协议三次握手与四次握手流程解析(转载及总结)
原文地址:http://www.2cto.com/net/201310/251896.html,转载请注明出处: TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式 TCP/IP协议的详 ...
- TCP/IP协议三次握手与四次握手
TCP/IP协议三次握手与四次握手流程解析 一.TCP报文格式 TCP/IP协议的详细信息参看<TCP/IP协议详解>三卷本.下面是TCP报文格式图:图1 TCP报文格式 上图中有几个 ...
- 白话解说TCP/IP协议三次握手和四次挥手
白话解说TCP/IP协议三次握手和四次挥手 1.背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 1.1.问题 有时候聊天的过程中,我的 ...
随机推荐
- ClickHouse学习系列之三【配置文件说明】
背景 最近花了些时间看了下ClickHouse文档,发现它在OLAP方面表现很优异,而且相对也比较轻量和简单,所以准备入门了解下该数据库系统.在介绍了安装和用户权限管理之后,本文对其配置文件做下相关的 ...
- Html 慕课园编程练习10-1
23:10:25 2019-08-14 自己写的这个好丑.... 题目:利用之前我们学过的JavaScript知识,实现选项卡切换的效果. 效果图: (另外 这个动图是怎么插入的 用url就行 复制就 ...
- Round 1A 2020 - Code Jam 2020
Problem A. Pattern Matching 把每个字符串分成第一个之前,最后一个之后,中间的部分 三个部分 每个字符串的中间的部分可以直接拼接 前后两个部分需要判断下是否合法 #inclu ...
- Vlan间通讯,动态路由
Vlan间通讯,动态路由 案例1:三层交换vlan间通信 案例2:多交换机vlan间通信 案例3:三层交换配置路由 案例4:RIP动态路由配置 案例5:三层交换配置RIP动态路由 1 案例1:三层交换 ...
- Python 类属性和方法
import types class Dog(object): __slots__ = ("name", "color", "info") ...
- String 对象-->fromCharCode() 方法
1.定义和用法 将ASCII码转换成对应的字符 语法: String.fromCharCode(n1, n2, ..., nX) 参数: n1, n2, ..., nX:一个或多个 Unicode 值 ...
- 【乱码问题】IDEA控制台使用了GBK字符集
什么Tomcat乱码设置IDEA的初始编码,瞎搞 终于在这个帖子看到了真相 https://blog.csdn.net/weixin_42617398/article/details/81806438 ...
- Python 输出漂亮的表格的5个案例,实用方便
文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:程序IT圈 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行 ...
- sqli-labs通关教程----41~50关
第四十关 与前几关一样,闭合变成') 插入数据 ?id=1') ;insert into users(id,username,password) values('17','aaa','bbb'); % ...
- JS-Array-新增方法
1. filter( ) var arr = [5,4,3,2,1]; newarr = arr.filter((item)=>{ return item<3 }) ; // => ...