9.物联网LWIP,ip数据报,udp数据报,tcp数据报

news2024/11/25 23:25:54

一。ip协议原理(网络层)

1.网络地址转换NAT

        我们上网是通过运营商向我们提供的IP地址来上网的,并不是自身的IP地址,所以这就需要网络地址转换NAT的帮助。即内网访问外网所需要的ip转换装置。

2.ip数据报

(1)版本

         占据4bit空间,定义IPv4与ipv6,对应的值分别为4与6

(2)首部长度

        占4bit空间,单位字,最大记录 60个字节的数据(15*4=60)

(3)服务类型(TOS)

        占据 8bit空间,包含在 IPv4首部中,表示不同类型的ip数据报。通过TOS可以更好的选择数据报的传递路径。

(4)数据报长度

        占据 16bit空间,以字节为单位, IP 数据报的理论最大长度为 65535字节,实际小于1500字节。注意最小需要46字节,所以不够时需要填充字符。

(5)标识

        数据报可能会分片,所以会需要表示是那一片,以便恢复。

(6)标志

        第一位未使用,第二位为0表示允许分片,第三位为0表示整个数据报最后一个分片。

(7)分片偏移量

        占据 13bit空间,表示当前分片所携带的数据在整个 IP 数据报中的相对偏移位置(以 8 字节为单位)

(8)生存空间

        该字段用来确保数据报不会永远在网络中循环,即在路由器中每传递一次TTL减一,如果为零表示数据已到期,需丢弃。

(9)上层协议

        字段的值指示了 IP 数据报的数据部分应交给哪个特定的传输层协议。例如,值为 6表明数据部分要交给 TCP,而值为 17表明数据要交给 UDP。

(10)首部检验和

        占据 16bit空间,判断首部是否出错。

(11)源ip与目标ip

(12)数据区域

        数据字段包含要交付给目标 IP 地址的运输层(TCP 协议或 UDP 协议) ,也可以承载其他类型的报文如,ICMP报文。

如何分析ip数据包?

        使用抓包工具,wireshark

       

二。UDP协议原理(传输层)

1.UDP封装

         传输层就是在网络层ip报的基础上继续封装,类似于快递包装,数据链路层同理。那么到别人的主机下,自然就是拆解的过程。

(1)源端口:在需要对方回信时选用。不需要时可用全0。

(2)目的端口:交付报文需要用到

(3)总长度: UDP用户数据报的长度,其最小值是8(仅有首部),发送一个带0字节数据的UDP数据报是允许的。

(4)校验和:差错检验

三。TCP协议原理

1.报文封装

         同udp,区别在于tcp为可靠传输,所谓的可靠传输,就是在主机向从机发送数据,从机向接受到以后,需要向主机发送一个ACK,确认自己已经收到数据。从机向主机发送数据也是一样的。

2.报文结构

 (1)源端口和目标端口

        TCP 报文段都包含源主机和目标主机的端口号。两个端口号加上两个IP地址就能唯一确定一个TCP连接。

(2)序号

        序号字段用来标识从 TCP发送端向 TCP 接收端发送的数据字节流, TCP 协议会对发送或者接收的数据进行编号(按字节的形式),那么使用序号对每个字节进行计数,就能很轻易管理这些数据。 序号是 32 bit的无符号整数。

(3)首部长度

        首部长度字段占据 4bit空间,它指出了 TCP 报文段首部长度,以字节为单位,最大能记录 15*4=60 字节的首部长度

(4)标注字段

  • URG:首部中的紧急指针字段标志,如果是 1 表示紧急指针字段有效。

  • ACK:首部中的确认序号字段标志,如果是 1 表示确认序号字段有效。

  • PSH:该字段置一表示接收方应该尽快将这个报文段交给应用层。

  • RST:重新建立 TCP 连接。

  • SYN:用同步序号发起连接。

  • FIN:中止连接。

(5)窗口大小

        TCP 的流量控制由连接的每一端通过声明的窗口大小来提供,窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的数据序号,发送方根据窗口大小调整发送数据,以实现流量控制。窗口大小是一个占据 16 bit空间的字段,因而窗口最大为 65535 字节,当接收方告诉发送方一个大小为 0 的窗口时,将完全阻止发送方的数据发送。

(6)校验和

        检验和覆盖了整个的 TCP 报文段:TCP 首部和 TCP 数据区域,由发送端计算和填写,并由接收端进行验证。

(7)紧急字段

        只有当 URG标志置 1 时紧急指针才有效,紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。简单来说,本 TCP 报文段的紧急数据在报文段数据区域中,从序号字段开始,偏移紧急指针的值结束。

(8)选择字段

 kind=2,最大报文段长度(MSS)选项

        TCP连接初始化时,通信双方使用该选项来协商最大报文段长度。TCP模块通常将MSS设置为(MTU-40)字节(减掉的这40字节包括20字节的TCP头部和20字节的IP头部)。这样携带TCP报文段的IP数据报的长度就不会超过MTU(假设TCP头部和IP头部都不包含选项字段,并且这也是一般情况),从而避免本机发生IP分片。对以太网而言,MSS值是1460(1500-40)字节

kind=3,窗口扩大因子选项

        TCP连接初始化时,通信双方使用该选项来协商接收窗口的扩大因子。在TCP的头部中,接收窗口大小是用16位表示的,故最大为65535字节,但实际上TCP模块允许的接收窗口大小远不止这个数(为了提高TCP通信的吞吐量)。窗口扩大因子解决了这个问题。
假设TCP头部中的接收通告窗口大小是N,窗口扩大因子(移位数)是M,那么TCP报文段的实际接收通告窗口大小是N*2M,或者说N左移M位。

四。tcp的握手与重发

 观察上述图片,我们得到以下结论。

1.一共有十条线,每条线都是一次t数据报发送。

2.包括SYN开始连接,ACK确认码,FIN关闭连接字段,mss窗口最大尺寸(单位不是字节)。

具体解释每一条数据流的功能

(1)client向server发送SYN开始连接字段,标号为1000

(2)server向client发送SYN开始连接字段,标号为8000,并返回ACK=1001(表示标号1000已经接受,下一次请发送1001标号)

(3)client发送ACK=8001表示已经接受8000标号的数据

注意:这就是tcp连接的三次握手

(4)-(6)client与server相互发送数据,每次都需要发送ack表示接受到的数据标号

(7)client向server发送FIN字段(表示连接结束),ACK8011(表示已经接受8011)

(8)server向client发送ACK1022(表示已经接受1021)

(9)server端如果有数据要发送,会继续发送,如果没有,那么发送FIN字段(表示连接结束)

(10)client向server发送ack8012表示接受,tcp连接结束。

五。TCP流控机制

1.滑动窗口时序

1.TCP报头有个字段叫window,表示自己还有多少缓存区。不可超发数据。

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

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

相关文章

延长Flash存储器使用寿命的研究

发布时间:2009年12月15日   引 言 随着嵌入式系统在数码相机、数字摄像机、移动电话、MP3音乐播放器等移动设备中越来越广泛的应用,Flash存储器已经逐步取代其他半导体存储元件,成为嵌入式系统中主要数据和程序载体。Flash存储器又称闪存&…

黑马最新MybatisPlus教程!帮你实现快速开发

天下武功,唯快不破。在互联网世界中,更甚。产品更新要快、迭代要快、开发速度那必须得快。 在追求“快”的这条路上,大佬们都会使用上好的开发工具,来帮助自己实现高效开发,其中MybatisPlus便是提速的重要角色。 我们…

selenium+find_elements用法

1、假如我们遇到多个标签的class一样,比如像下面这样的 我们可以采用js语法去定位,比如: document.getElementsByClassName("ant-calendar-picker-input ant-input")[0]

【Vue3 知识第二讲】Vue3新特性、vue-devtools 调试工具、脚手架搭建

文章目录 一、Vue3 新特性1.1 重写双向数据绑定1.1.1 Vue2 基于Object.defineProperty() 实现1.1.2 Vue3 基于Proxy 实现 1.2 优化 虚拟DOM1.3 Fragments1.4 Tree shaking1.5 Composition API 二、 vue-devtools 调试工具三、环境配置四、脚手架目录介绍五、SFC 语法规范解析附…

打包——使用pyinstaller打包解决dll丢失问题

我们通常使用pyinstaller或者其对应的图形化的auto-py-to-exe来生成exe可执行文件时,换了一个电脑经常会出现报错,特别是我们当前开发大多数使用温室操作系统,而很多用户使用的是win7操作系统,这就造成了会提示缺少dll文件。如下图: 笔者总结了解决此问题的经验总结如下。…

做外贸的时候意见不被上级采纳真的错了吗

某日晚上,听了一场直播,然后有一个小伙伴在直播间里说自己很苦恼,为什么自己所有的意见老板都不采纳,都要给否决掉,感觉老板是故意针对她自己的。 事情的起因是因为这个业务员自己通过社媒开发出了一个客户&#xff0…

为什么选择搭建虚拟展会?如何搭建虚拟展会能给企业带来帮助

引言: 在当今数字化时代,宣传策略正在不断演变,企业需要跟上时代的脚步,这为企业带来了更多的机会和挑战。虚拟展会作为一种创新性的宣传手段,正逐渐受到企业的重视和青睐。 一.为什么选择搭建虚拟展会&am…

循环购模式:白酒企业的电商新机遇

白酒是中国传统的酒类,也是社交场合的必备佳品。白酒的品牌众多,竞争激烈,如何在电商市场中脱颖而出,提升销量和品牌影响力呢?循环购模式或许是一个新的答案。 循环购模式是一种新型的电商营销方式,它让消费…

day 44 | ● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费

309.最佳买卖股票时机含冷冻期 此外,在返回的时候,由于状态234都是卖出的状态,所以要比较其最大值进行返回。 func maxProfit(prices []int) int {dp : make([][]int, len(prices))dp[0] make([]int, 4)dp[0][0] -prices[0]for i : 1; i &…

经纬恒润预期功能安全(SOTIF)解决方案为自动驾驶安全保驾护航

近年来,“安全”被普遍认为是智能驾驶汽车被用户接受或者得到商业应用最大的问题,ISO26262功能安全旨在避免由E/E系统功能失效导致的不可接受的风险,主要是针对系统性失效/随机硬件失效导致的风险进行分析和控制,然而传感器和感知…

安防监控/视频存储/视频汇聚平台EasyCVR接入海康Ehome车载设备出现收流超时的原因排查

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。视频汇聚平台既具…

2024河南太阳能光伏展览会|郑州光伏展会|郑州太阳能展会

2024第四届中国(郑州)太阳能光伏及储能产业展览会 时间:2024年2月26-28日 地点:郑州.中原国际博览中心 太阳能光伏及储能产业是未来能源发展的趋势,随着全球气候变化和能源危机的加剧,越来越多的国家开始…

ExpressLRS开源代码之工程结构

ExpressLRS开源代码之工程结构 1. 源由2. 工程3. 开发环境安装4. pio命令5. ExpressLRS配置6. 硬件认证过程7. 参考资料 1. 源由 ExpressLRS开源代码基于Arduino框架设计,在所支持的硬件环境下,提供900/2400发射机和接收机硬件方案。 该设计提供了一个…

25.选择排序,归并排序,基数排序

目录 一. 选择排序 (1)简单选择排序 (2)堆排序 二. 归并排序 三. 基数排序 四. 各种排序方法的比较 (1)时间性能 (2)空间性能 (3)排序方法的稳定性能…

港联证券|股票过户费是什么意思?

股票过户费是指在股票商场中,由于股份所有权的转让,双方需求付出的一种买卖费用。这种费用首要是为了付出证券公司和证券中介机构转让股票所发生的各项费用,如代理费、登记费、买卖税等。股票过户费的数额一般是按照股票的数量和买卖金额来核…

ffmpeg 配合Fiddler抓包获取视频操作

一.获取普通网站视频 1.安装Fiddler软件,直接点击绿色软件中Fiddler.exe,打开即可 2.打开后需要设置一下https解码 3.打开普通视频,获取视频链接在网页打开即可 二.获取一级反爬网站视频 1.随便找一个video/mp…

Redis主从复制的搭建及原理分析

目录 一、Redis主从复制 1.1 搭建主从复制架构 1.1.1 主从复制架构简介 1.1.2 搭建主从复制架构 1.2 主从复制工作流程 1.2.1 建立连接阶段 1.2.2 数据同步阶段 1.2.2.1 工作流程 1.2.2.2 增量同步原理 1.2.3 命令传播阶段 1.2.3.1 偏移量(offset&#xf…

固定资产太多怎么管理好

固定资产太多时,可以采取以下措施进行管理:  分类管理:将固定资产按照种类、用途等进行分类,便于管理和查询。  建立台账:建立固定资产台账,记录每项资产的名称、编号、购置日期、购买价格、使用部门、…

keil在点击debug无法运行(全速运行)

1、今天发现我之前可以debug的程序,在板子上无法debug了,打断点完全没用 2、换了电脑,带板子过去也这样,之前可以运行的代码都debug不了 3、按照网上的方法,都不行,全速运行,单步执行都是灰色…

nodejs pkg打包生成exe,设置自定义图标和产品信息

一、使用node开发应用程序,通常采用express框架进行功能扩展,当系统开发完成后,直接的方式就是采用gulp压缩后,在服务端运行node app.js命令执行,to C的系统这样开发部署没有问题。 二、而在to B,to G的项目中,采用源码的方式运行,一方面部署不太友好,需要拷贝的文件很…