网络编程(学习)2024.9.5

news2024/11/13 8:55:37

目录

网络协议头分析

MTU 

MSS

粘包和拆包

粘包

粘包原因

解决粘包

拆包

包头分析

以太网头

IP头

​编辑

Tcp头

三次握手和四次挥手

三次握手

四次挥手

TCP可靠性的保证

1. 数据包顺序

2. 数据完整性

3.. 确认应答(ACK)

4. 重传机制

5. 流量控制

6. 拥塞控制

7. 连接管理

网络协议头分析

MTU 

Maximum Transmit Unit 最大传输单元

物理接口(数据链路层)提供给上层(网络层(IP层))最大一次传输数据的大小。

规定了数据链路层所能传送最大数据长度

以太网为例,缺省MTU=1500字节,这是以太网接口对IP层的约束

如果IP层<=1500字节需要发送,只需要一个IP包就可以

如果IP层>1500字节需要发送,需要分片才能发送(分片:帧)

限制数据包大小的协议是:MTU  MSS

MSS

Maximum Segment Size 最大报文长度

TCP提交给IP层最大分段大小,指TCP报文所允许传送数据部分最大长度。

不包含TCP头,MSS式TCP来限制应用层最大发送字节数。

如果MTU=1500,MSS=1500-20-20=1460;

如果有2000字节需要发送

第一个 1460 第二个 540--->拆包

以太网帧完整帧格式

粘包和拆包

粘包

粘包原因

带发送的数据太小,远小于协议允许的最大值。

解决粘包

1.设置相同大小的接收发送数组
2.使用sleep(一般不使用)
3.每个包发送前都加一个尾,接收方识别到特殊的尾部就认为这是一个包
4.在包前面加一个头,这个头是此包的长度,然后接收方先读到的的肯定是头,识别包的大小,然后读刚别到的个数

拆包

拆包:包体长度大于协议规定的最大长度,所以必须做出拆分。

包头分析

以太网头

以太网中封装了源mac地址以及目的mac地址,还有ip类型,以太网又称之为mac头

IP头
Tcp头

Seq:序列号,占4个字节,用于给数据段进行编号的。所有非应答包的数据段,都有seq。

Ack:应答号,用于应答非应答包(握手包,挥手包,数据包)。告诉对方下一次从这个seq编号发送数据包。

SYN:握手包,连接的时候产生的包

FIN:挥手包,断开连接产生的包

PSH:数据包,传输数据时候产生的包

ACK:应答包

PSH Ack = Seq+len;

SYN FIN Ack = Seq+1;

UDP头


三次握手和四次挥手

三次握手

发起方肯定是客户端

第一次握手:客户端发送SYN包(SYN=1, seq=0)给服务器,并进入SYN_SENT状态,等待服务器返回确认包。
第二次握手:服务器接收到SYN包,确认客户端的SYN,发送ACK包(ACK=1 , ack=1),同时发送一个SYN包(SYN=1, seq=0),并进入SYN_RCVD状态。
第三次握手:客户端接收到服务器的SYN包,以及ACK包,进入establish状态,同时向服务器发送ACK包(ACK=1, ack=1)。此时三次握手包发送完毕,服务器也进入establish状态

四次挥手

四次挥手的发起方可能是服务器,也可能是客户端

第一次挥手:主动关闭方发送一个FIN包(FIN=1, seq = u)给被动方,进入FIN_WAIT_1状态;
第二次挥手:被动方接收到FIN包,给主动方发送一个ACK包(ACK=1, ack=u+1);并进入CLOKSE_WAIT状态。主动方接受到ACK包后,进入FIN_WAIT_2状态。如果有数据没有发送完毕,则继续发送,直到发送完毕为止;
第三次挥手:被动方发送一个FIN包(FIN=1, seq=w),进入LAST_ACK状态.
第四次挥手:主动关闭方收到FIN包,回复一个ACK包(ACK=1, ack=w+1)。被动关闭方收到主动关闭方的ACK后关闭连接。

TCP可靠性的保证

1. 数据包顺序

TCP会在数据包中添加序列号,以确保接收方能够按照正确的顺序重组数据。即使数据包在网络中以不同的顺序到达,TCP也会重新排序。

2. 数据完整性

TCP使用校验和(Checksum)来确保数据在传输过程中没有损坏。发送方计算数据段的校验和,接收方在接收时进行重新计算并进行比对,确保数据完整。

3.. 确认应答(ACK)

每当接收方成功接收到一个数据包时,便会发送一个ACK(确认应答)返回给发送方。发送方在收到ACK后知道数据已被成功接收。

4. 重传机制

如果发送方在一定时间内没有收到ACK,或者接收到的ACK表明数据包丢失或错误,TCP会自动重传这些数据包。这种机制确保了即使在网络中发生丢包,数据仍然能够最终到达。

5. 流量控制

TCP使用滑动窗口(Sliding Window)机制来控制数据流量,确保接收方不会被淹没(overwhelmed)而丢失数据。接收方会告知发送方自己的接收能力,发送方可以根据这个信息调整发送速率。

6. 拥塞控制

TCP还实现了拥塞控制机制,以避免网络拥塞。通过算法(如慢启动、拥塞避免、快重传和快恢复等),TCP可以根据网络的当前状况自适应调整数据发送速率,确保可靠传输。

7. 连接管理

TCP连接的建立(通过三次握手)和关闭(通过四次挥手)也是可靠性的一个方面。这确保了双方在发送和接收数据前都已准备就绪,并能正确地完成数据传输和资源释放。

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

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

相关文章

springboot个性化大学生线上聊天交友系统

基于springbootvue实现的个性化大学生线上聊天交友系统 &#xff08;源码L文ppt&#xff09;4-017 4系统设计 4.1 软件功能模块设计 个性化大学生线上聊天交友分为两个模块&#xff0c;分别是管理员功能模块和用户功能模块。主要功能模块包括&#xff…

探索数据可视化的奥秘:Seaborn库的魔力

文章目录 探索数据可视化的奥秘&#xff1a;Seaborn库的魔力背景&#xff1a;为何选择Seaborn&#xff1f;Seaborn是什么&#xff1f;如何安装Seaborn&#xff1f;简单函数介绍与示例场景应用示例常见问题与解决方案总结 探索数据可视化的奥秘&#xff1a;Seaborn库的魔力 背景…

ApiOps Helper:本地代码智能扫描,API的注册管理自动化

APIOps Helper是什么 APIOps Helper是在IntelliJ IDEA平台上开发的插件&#xff0c;可以自动识别IDEA中Java项目的代码&#xff0c;从中扫描出API并自动生成OpenAPI规范文档。 用户可以选择将API导出为本地OpenAPI规范文档&#xff0c;或者将API同步到APIOps平台上进行API协同…

挑选展厅设计伙伴?这些考量点助你决策

如今&#xff0c;随着数字化技术的快速发展&#xff0c;内容展览展示行业已经脱变为一个汇聚创新与创意的展示空间&#xff0c;并成为企业、文旅等各行业竞相追捧的平台&#xff0c;因此&#xff0c;挑选一家专业的多媒体展厅设计公司显得尤为重要&#xff0c;但是&#xff0c;…

maestro复制

problem&#xff1a;ADE Explore的maestro 里保存了设置的仿真器Analyses和扫描参数 Design Variables&#xff0c;如果要新建一个当前的testbench副本&#xff0c;除了复制schematic还希望能把maestro一起复制过去。但是直接复制maestro后仿真的时候还是对原有的schemetic在仿…

能否使用PLC无线通信模块实现力控与FX5U无线以太网通信?

在实际系统中&#xff0c;车间里分布多台PLC&#xff0c;需要用上位机软件集中控制。通常所有设备距离在几十米到上百米不等。用户会选择以太网方式是因为传输速度有保障&#xff0c;而选择无线以太网方案是因为不想开挖电缆沟&#xff0c;或者布线不方便&#xff0c;不但施工麻…

AR远程协作与Web,视频会议,监控直播融合方案

​​随着全球化的加速和远程工作的普及&#xff0c;团队成员之间的沟通与协作变得更加重要。传统的远程协作方式存在诸多限制&#xff0c;如沟通不畅、信息共享困难等。AR技术以其独特的交互性和沉浸感&#xff0c;为远程协作提供了新的解决方案。 针对视频会议系统在特殊场景…

SprinBoot+Vue兼职发布平台的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质…

开源AI市场情况概览:2024年的现状与发展

开源AI的快速发展 开源AI领域的显著进展:2024年,开源AI迅速发展,带动了生成式AI领域的重大创新。得益于GitHub和Hugging Face等平台,研究与开发者社区推出了许多具有突破性的项目,这些项目取得了令人瞩目的成果。 贡献者与项目增长:2023年,GitHub上的贡献者数量增加了…

大屏地图区域显示、复选框多选打点,自定义窗体信息(vue3+TS)

效果图&#xff1a; NPM 安装 Loader&#xff1a; npm i amap/amap-jsapi-loader --save 并设置 key 和安全密钥&#xff1a; import AMapLoader from amap/amap-jsapi-loader;//引入高德地图window._AMapSecurityConfig {securityJsCode: "「你申请的安全密钥」"…

dp算法练习题【8】

不同二叉搜索树 96. 不同的二叉搜索树 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5示例 2&#xff1a; 输…

idea控制台中文乱码问题解决方法(UTF-8 编码)

设置 IDEA 编码格式 打开 IntelliJ IDEA>File>Setting>Editor>File Encodings&#xff0c;将 Global Encoding、Project Encoding、Default encodeing for properties files 这三项都设置成 UTF-8 设置vm option 参数 将 vm option 参数改为&#xff1a; -Dfile.…

828华为云征文|部署全自动追番整理下载工具 AutoBangumi

828华为云征文&#xff5c;部署全自动追番整理下载工具 AutoBangumi 一、Flexus云服务器X实例介绍1.1 云服务器介绍1.2 性能模式1.3 产品优势 二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 AutoBangumi3.1 AutoBangumi 介绍3.2 Docker 环境搭…

构建数字生态,布局智能未来——驱动PCB行业新质生产力发展的引擎

2024年&#xff0c;PCB行业在全球经济复苏与新兴技术驱动的双重作用下&#xff0c;展现出强劲的发展势头。根据权威机构Prismark的预测&#xff0c;2024年全球PCB产值将同比增长5.0%&#xff0c;达到730.26亿美元。面对新兴技术的不断涌现和市场需求的快速变化&#xff0c;PCB行…

循环购模式!结合引流和复购于一体的商业模型!

欢迎各位朋友&#xff0c;我是你们的电商策略顾问吴军。今天&#xff0c;我将向大家介绍一种新颖的商业模式——循环购模式&#xff0c;它将如何改变我们的消费和收益方式。你是否好奇&#xff0c;为何商家会提供如此慷慨的优惠&#xff1f;消费一千元&#xff0c;不仅能够得到…

Adaptive Residual Interpolation for Color andMultispectral Image Demosaicking

Abstract: 摘要&#xff1a;拜耳滤色器阵列的彩色图像去马赛克是获取高质量彩色图像的重要图像处理操作。 最近&#xff0c;基于残差插值&#xff08;RI&#xff09;的算法已经证明了比传统的基于色差插值的算法更优越的去马赛克性能。 在本文中&#xff0c;我们提出了自适应残…

构建数字化工厂的智能制造-数字化智能制造(82页PPT下载)

方案介绍&#xff1a; 智能制造是指通过信息技术的应用&#xff0c;将传统制造业转变为基于数据和智能化决策的现代化制造方式。它以数字化技术为基础&#xff0c;实现了生产流程的数字化、信息化和自动化。智能制造不仅提升了生产效率和质量&#xff0c;还促进了资源的有效利…

开放式耳机对耳朵伤害大吗?超舒适开放式耳机推荐!

开放式耳机通常被认为对耳朵的伤害相对较小。这种耳机的设计不深入耳道&#xff0c;允许空气流通&#xff0c;减少了耳道内潮湿和细菌滋生的风险&#xff0c;同时也降低了因耳道封闭造成的不适和炎症可能性。开放式耳机的佩戴方式通常更为舒适&#xff0c;减少了对耳道的摩擦和…

基于组织图像预测基因表达

论文&#xff1a;Gene Expression Prediction from Histology Images via Hypergraph Neural Networks 代码&#xff1a;https://github.com/QSong-github/HGGEP 关键点&#xff1a; 开发了一种新颖的基于组织学图像的基因预测模型&#xff0c;命名为 HGGEP。该模型展示了卓越…

emlogpro插件-优雅的时间进度侧边栏小工具插件

插件介绍 最早是在wordpress建站看见的&#xff0c;一款非常优雅的时间进度小工具&#xff0c;为了方便emlog使用&#xff0c;集成了一个插件。 使用步骤 已经熟悉使用emlog的可以略过了 下载插件&#xff0c;后台激活使用 进入插件的设置页面可以进行这个时间进度小工具的…