TCP 连接的前世今生
码农突围
共 9273字,需浏览 19分钟
· 2021-06-08
点击上方“码农突围”,马上关注 这里是码农充电第一站,回复“666”,获取一份专属大礼包 真爱,请设置“星标”或点个“在看
前言
缘起
什么是TCP
面向连接:一定是「一对一」才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的。 可靠交付:无论的网络链路中出现了怎样的链路变化,TCP 都可以保证一个报文一定能够到达接收端。 面向字节流:也就是说仅仅把上层协议传递过来的数据当成字节传输。
网络模型
七层模型
应用层报头:Ppplication Header, 简称 AH。 表示层报头:Presentation Header, 简称 PH。 会话层报头:Session Header, 简称 SH。 传输层报头:Transport Header, 简称 TH。 网络层报头:Network Header, 简称 NH。 数据链路层报头:Data link Header, 简称 DH。 应用层协议数据单元:Protocol Data Unit,简称 PDU。 数据链路层报尾:Data link Termination,简称 DT。
五层网络模型
应用层:确定进程之间通信的性质,以满足用户需求。应用层协议有很多。如支持万维网应用的 HTTP 协议、支持电子邮件的 SMTP 协议、等等。 传输层:负责主机间不同进程的通信。这一层中的协议有面向连接的 TCP (传输控制协议)、无连接的 UDP (用户数据报协议);数据传输的单位称为报文段或用户数据报。 网络层:负责分组交换网中不同主机间的通信。作用为:发送数据时,将运输层中的报文段或用户数据报封装成 IP 数据报,并选择合适路由。 数据链路层:负责将网络层的 IP 数据报组装成帧。 物理层 :透明地传输比特流。
四层网络模型
网络接口层:包括用于协作 IP 数据,在已有网络介质上传输的协议。实际上 TCP/IP 标准并不定义与 ISO 数据链路层和物理层相对应的功能 。相反,它定义了像 ARP (地址解析协议)这样的协议,提供 TCP/IP 协议的数据结构和实际物理硬件之间的接口。 网络层:网络层对应于 OSI 七层参考模型的网络层。本层包含 IP 协议、RIP 协议(路由信息协议),负责数据的包装、寻址和路由。同时还包含 ICMP (网间控制报文协议)用来提供网络诊断信息。 传输层:传输层对应于 OSI 七层参考模型的传输层,它提供两种端到端的通信服务。其中 TCP协议提供可靠的数据流运输服务, UDP 协议提供不可靠的用户数据报服务。 应用层:应用层对应于 OSI 七层参考模型的应用层和表示层。因特网的应用层协议包括 FTP (文件传输协议)HTTP (超文本传输协议)、 Telent (远程终端协议)、SMTP (简单邮件传送协议)、 IRC (因特网中继会话)、NNTP (网络新闻传输协议)等。
TCP头格式
URG 标志,表示紧急指针是否有效。 ACK 标志,表示确认号是否有效,一般称携带 ACK 标志的 TCP 报文段为"确认报文段"。 PSH 标志,提示接收端应用程序应该立即从 TCP 接收缓冲区中读走数据,为接收后续数据腾出空间(如果应用程序不将接收到的数据读走,它们就会直停留在 TCP 接收缓冲区中)。 RST 标志,表示要求对方重新建立连接,一般称携带 RST 标志的 TCP 报文段为"复位报文段"。 SYN 标志,表示请求建立 个连接,一般称携带 SYN 标志的 TCP 报文段为"同步报文段"。FIN 标志,表示通知对方本端要关闭连接了,一般称携带 FIN 标志的 TCP 报文段为"结束报文段"。
TCP三次握手
第一次握手:建立连接时,客户端发送 SYN 包到服务器,并进入 SYN_SEND 状态,等待服务器确认。
第二次握手:服务器收到 SYN 包,必须确认客户的 SYN ,同时自己也发送一个 SYN 包,即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态。
第三次握手 :客户端收到服务器的 SYN + ACK 包,向服务器发送确认包 ACK,此包发送完毕,客户端和服务器进入 ESTABLISHE 态。
连接建立中的异常
建连接时SYN超时问题
关于SYN Flood攻击
避免方式
TCP四次挥手
TCP的连接断开
为什么建连接要三次握手,断连接需要四次挥手?
断开连接中的异常
TIME_WAIT数量太多
优化法一:tcp_tw_reuse
优化法二:tcp_max_tw_buckets
TCP状态流转
总结
- END - 最近热文
• 韦神!北大数学系韦东奕爆红!拒绝哈佛offer,留任北大! • 他是世界上最杰出程序员之一,1 个月写了个操作系统,退休后去做飞行员! • 开挂的00后!17岁「天才少女」被8所世界名校录取,最终选择MIT计算机系 • 微信沙雕功能“炸屎”上线!网友:满屏的粑粑真可爱
评论
盘点Lombok的几个骚操作,你绝对没用过!
👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目正在酝酿中
小哈学Java
0
堪称最优秀的Docker可视化管理工具——Portainer你真的会用吗?
来源:blog.csdn.net/shark_chili3007/article/details/123366179👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目
小哈学Java
0
如何计算数据中心的冷却需求?
今日分享 【导读】数据中心的冷却要求受多种因素影响,包括设备的热量输出、占地面积、设施设计和电气系统功率额定值等等……众所周知,环境因素会严重影响数据中心设备。过多的热量积聚会损坏服务器,可能导致其自动关闭。经常在高于可接受的温度下运行服务器会缩短其使用
数据中心运维管理
0
多人同时导出 Excel 干崩服务器!新来的阿里大佬给出的解决方案太优雅了!
点击关注公众号,Java 干货及时推送↓推荐阅读:面试辅导,我们出大成果了!来源:juejin.cn/post/7259249904777838629前言 业务诉求:考虑到数据库数据日渐增多,导出会有全量数据的导出,多人同时导出可以会对服务性能造成影响,导出涉及到mysql查询的io操作,
Java技术栈
1
什么样的冷却方法适合数据中心运营?
冷却数据中心的最简单方法是安装空气交换器,通过服务器室生成冷空气。但是,如果想要节省资金,至少从长远来看,更好的方法可能是在每个机架上安装空气交换器,并使用它们为单个机架的服务器降温。"后机架冷却",与数据中心中更为传统的空气冷却系统相比,特别是在能源效率方面,其具有一些优势。冷却数据中心的最简单
数据中心运维管理
0
大厂都在用的 Git 代码管理规范 !
👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0 版本完结啦, 演示链接:http://116.62.199.48/ ,新项目正在酝酿中
小哈学Java
2
Go 1.22 的新增功能系列之二:reflect.TypeFor
Go 1.22 的第一个候选版本已经发布,这意味着最终版本即将发布,现在是我在博客中介绍我在这个周期中所做工作的时候了。像往常一样,我的贡献很小,但它们是我的,所以我将从幕后的角度来谈谈它们。首先是reflect.TypeFor。这是整个函数:// TypeFor returns the [Type
GoCN
0
10个高级的 SQL 查询技巧
来源:towardsdatascience.com/ten-advanced-sql-concepts-you-should-know-for-data-science-interviews-4d7015ec74b0👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Jav
小哈学Java
0