【网络协议】精讲TCP通信原理!图解超赞超详细!!!

  亲爱的用户,打开微信,搜索公众号:“风云说通信”,即可免费阅读该文章~~

目录

1. 建立连接

2. 数据传输

3. 断开连接

4. 抓包分析


前言

     TCP 把连接作为最基本的对象,每一条 TCP 连接都有两个端点,这种端点我们叫作套接字(socket),它的定义为端口号拼接到 IP 地址即构成了套接字,例如,若 IP 地址为 192.3.4.16 而端口号为 80,那么得到的套接字为192.3.4.16:80。IP 协议虽然能把数据报文送到目的主机,但是并没有交付给主机的具体应用进程。而端到端的通信才是应用进程之间的通信。

    TCP 报文是 TCP 层传输的数据单元,也叫报文段。TCP 报文的格式如下图所示:

图片

    我们从 TCP 的报文格式中能看到 6 个标志位:URG ACK PSH RST SYN FIN,每一个标志位表示一个控制功能。

  • URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。

  • ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。

  • PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。

  • RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。

  • SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。

  • FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。

TCP 的连接和断开的过程和这几个标志位有关。

1. 建立连接

TCP 的三次握手,意思就是建立连接的时候客户端与服务器之间需要三次数据包的交流

  1. 客户端发送给服务器一个请求连接数据包,即发送了一个指向服务器目标端口的一个 SYN 位为 1 的TCP 报文。

  2. 服务器接收到客户端的连接请求之后,会回应一个 SYN 位为 1 的TCP 报文,表示同意连接。并且,会把 ACK 位也置 1 表示确认收到上次消息。

  3. 客户端接收到服务器的同意连接的数据包之后,还要回复一个 ACK 为 1 的 TCP 报文,表示确认收到。

如下图所示,这就是 TCP 的三次握手:

图片

2. 数据传输

TCP 以段为单位发送数据

  • 在建立 TCP 连接的同时,也可以确定发送数据包的单位,我们也可以称其为“最大消息长度”(MSS:Maximum Segment Size)。最理想的情况是,最大消息长度正好是 IP 中不会被分片处理的最大数据长度。

  • TCP 在传输大量数据时,是以 MSS 的大小将数据进行分割发送的。进行重发时也是以 MSS 为单位。

  • MSS 是在三次握手的时候,在两端主机之间被计算得出。两端的主机在发出建立连接的请求时,会在 TCP 首部中写入 MSS 选项,告诉对方自己的接口能够适应的 MSS 的大小(为附加 MSS 选项,TCP首部将不再是20字节,而是 4 字节的整数倍)。然后会在两者之间选择一个较小的值投入使用(在建立连接时,如果某一方的 MSS 选项被省略,可以选为 IP 包的长度不超过 576 字节的值(IP 首部 20 字节,TCP 首部 20 字节,MSS 536 字节))。

    图片

例如客户端发送一段 3500 长度的数据到服务端,假设确定的 MSS 长度为1000,数据传输的过程如下所示:

图片

3. 断开连接

TCP 的四次挥手,意思就是释放连接的时候客户端与服务器之间需要四次数据包的交流。

  1. 客户端发送给服务器一个请求释放连接的数据包,即发送了一个指向服务器目标端口的一个 FIN 位为 1 的TCP 报文,表示客户端没有数据要发送了,但是仍然可以接收数据;并且 ACK 位也为 1,表示对上次传输数据结果的确认。并且之后处去等待状态,等待服务器的两次回应。

  2. 服务器接收到客户端的释放连接请求之后,会先回应一个 ACK 位为 1 的报文,表示确认收到。但是,这时服务器可能还有数据没有发送完成,继续发送数据。

  3. 服务器发送完数据之后,发送一个 FIN 为 1 的 TCP 报文,表示我也没有要发送的数据了,你可以释放连接了。当然 ACK 位仍然为 1 。

  4. 客户端接收到服务器的同意释放连接的数据包之后,回复一个 ACK 为 1 的 TCP 报文,表示确认收到。

如下图所示,这就是 TCP 的四次挥手:

图片

4. 抓包分析

利用 wireshark 工具抓包分析可以很清晰的看到这两个流程。

  1. 打开 wireshark 软件 开启抓包,过滤规则设置为 tcp 。

  2. 开发板连接上网络后,运行 samples 里面的 tcp client 例程,

这样就可以很方便的看到 TCP 的三次握手与四次挥手的全过程,如下图所示:

图片

数据传输的过程需要在以后用到 http client 传输较大数据的时候才能更好的看出来。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Day02】0基础微信小程序入门-学习笔记

文章目录 模板与配置学习目标WXML 模板语法1.数据绑定(类似于 Vue2 )2. 事件绑定3. 条件渲染4.列表渲染 WXSS模板样式1. rpx尺寸单位2.样式导入3. 全局样式和局部样式 全局配置1. window2. tabBar 页面配置网络数据请求总结 持续更新~ 模板与配置 学习目…

《第一行代码 第3版》学习笔记——第十一章 网络技术

1 webview用法 class MainActivity : ComponentActivity() {SuppressLint("SetJavaScriptEnabled")override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContent {NetWorkDemoTheme {// A surface container using the bac…

GandCrab5.2勒索病毒复现

GandCrab第一代勒索病毒首次出现于2018年1月,后面经历了五个大版本的更新迭代,该系列病毒特征是采用RSAAES加密算法,从算法上分析解密难度较大,会将系统中的大部分文件加密为随机后缀名的文件,然后对用户进行勒索。本实…

国内邮件推送如何避免拦截?内容优化技巧?

国内邮件推送的平台怎么选择?如何提高邮件推送效果? 邮件营销是企业与客户沟通的重要方式,但在国内邮件推送过程中,邮件被拦截的问题屡见不鲜。为了确保邮件能够顺利送达目标用户,AokSend将探讨一些有效的策略&#x…

【亲测好用】神级PSAI插件大揭秘:三款创成式修图神器,让你解放双手

PsBeta被停用后,小编一直想找到能够平替PsBeta创成式填充功能的插件。 功夫不负有心,终于被我找到啦,现在就给大家揭秘这三款宝藏修图神器,希望能够帮到大家。 1.插件名称:Starai 无需科学上网,还自带提示…

wireshark常用过滤命令

wireshark常用过滤命令 wireshark抓包介绍单机单点:单机多点:双机并行: wireshark界面认识默认布局调整布局(常用)显示FCS错误 wireshark常见列Time回包数据报对应网络模型 wireshark基本操作结束抓包再次开始抓包 **wireshark常用过滤命令**…

乐鑫云方案研讨会回顾|ESP RainMaker® 引领创业潮,赋能科创企业

近日,乐鑫信息科技 (688018.SH) ESP RainMaker 云生态方案线下研讨会和技术沙龙在深圳成功举办,吸引了众多来自照明电工、新能源、安防、宠物等垂类领域的客户与合作伙伴。活动现场,与会嘉宾围绕产品研发、测试认证、品牌构建、跨境电商等多维…

揭秘循环购:消费即收益,如何助力商家月销百万?

大家好,我是吴军,今天要和大家分享一种颠覆性的商业模式——循环购。你是否听说过“消费1000送2000”这样的促销活动?是不是觉得太不可思议,商家岂不是在“送钱”?别急,让我为你揭开这背后的秘密。 循环购&…

路由器ARP和ARP-proxy(华为)

#交换设备 路由器ARP和ARP-proxy(华为) 当一个广播域中的主机想要访问另外一个广播域的主机时,会广播ARP报文,询问目标IP地址所对应的MAC地址,默认情况下,arp记录是设备自动生成的,但是这样会容易受到ARP欺骗攻击&am…

基础入门篇 | YOLOv10 项目【训练】【验证】【推理】最简单教程 | YOLOv10必看 | 最新更新,直接打印 FPS,mAP50,75,95

文章目录 训练 --train.py推理 --detect.py验证 --val.py不训练,只查看模型结构/参数量/计算量 --test.pyYOLOv10 是基于 YOLOv8 项目的改进版本,目前已经被 YOLOv8 项目合并,所以两个算法使用方法完全一致~ 今天我给大家展示一种非常方便的使用过程,包含【训练】【验证】…

盘立方期货Kdj幅图指标公式源码

盘立方期货Kdj幅图指标公式源码&#xff1a; N:250; WR1:100-100*(HHV(HIGH,N)-CLOSE)/(HHV(HIGH,N)-LLV(LOW,N)),DOT,COLORLIGHTGREEN; EW:EMA(WR1,5); STICKLINE(WR1<20,WR1,20,1,0),COLORYELLOW; STICKLINE(WR1>80,WR1,80,1,0),COLORYELLOW; RSV:(CLOSE-LLV(LOW…

2024CICE电博会·以“链主”企业为核心,推动产业链协同发展

随着全球科技日新月异的发展&#xff0c;消费电子产业已成为推动经济增长、改善人民生活的重要力量。中国国际消费电子博览会&#xff08;简称CICE电博会&#xff09;自2001年创办以来&#xff0c;已经走过了二十余个春秋&#xff0c;凭借其独特的地理位置优势、专业的组织策划…

MAC Address

文章目录 1. 前言2. MAC Address2.1 MAC 地址格式2.2 Locally Administered MAC Address2.3 MAC 单播 和 多播 3. 参考资料 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给读者带来的损失&#xff0c;作者不做任何承诺。 2. MAC Address 2.1 MA…

《2024云安全资源池 能力指南》

《2024云安全资源池 能力指南》这份报告不仅梳理了云安全资源池的发展历程,还深入探讨了其在当前云计算环境下的重要性和必要性。报告详细分析了云安全资源池的市场需求、技术架构、关键技术以及行业应用案例,为政企用户提供了全面的云安全解决方案。通过资料收集、问卷调研、企…

0624_ARM1

思维导图&#xff1a;

揭秘红酒酿造魔法:看葡萄如何华丽变身酿成

红酒&#xff0c;这一液体中的诗篇&#xff0c;从葡萄园中的翠绿到酒窖里的深沉&#xff0c;每一滴都蕴含着大自然的恩赐与酿酒师的智慧。今天&#xff0c;就让我们一起揭开红酒酿造的神秘面纱&#xff0c;探寻从葡萄到佳酿的魔法之旅&#xff0c;并特别聚焦在备受赞誉的雷盛红…

java安全必学之Javassist 学习

Javassist 学习 环境搭建 这个非常简单&#xff0c;只需要你自己加一个依赖 <!-- https://mvnrepository.com/artifact/javassist/javassist --><dependency><groupId>javassist</groupId><artifactId>javassist</artifactId><versi…

光伏能源圈

2021年&#xff0c;新型电力系统之下&#xff0c;中国已形成了两网五大六小的电力新格局&#xff1a; 两大电网&#xff1a;国家电网、南方电网 五大电力央企&#xff1a;国家能源投资集团、中国华能集团、中国华电集团、中国大唐集团、国家电力投资集团。 六小豪门&#xf…

使用Leaflet和瓦片地图实现离线地图的技术指南

引言 在现代的Web应用中&#xff0c;地图服务扮演着越来越重要的角色。然而&#xff0c;在一些特殊环境下&#xff0c;如偏远地区或网络环境不稳定的情况下&#xff0c;依赖在线地图服务可能会受到限制。因此&#xff0c;实现离线地图功能成为了一个重要的需求。本文将介绍如何…