LWIP学习笔记(2)---IP协议

2023-11-20

IP首部

IP首部
最高位在左边记为0bit,最低位在右边,记为31 bit.
传输顺序:先0-7bit,在8-15bit,然后16-13,最后24-31bit
这种方式称为 big endian,也叫网络字节序

版本:4(ipv4) 或 6(ipv6)

首部长度:正常为5(假设可选字段为0),最大15(可选字段全满加上原有字段)

服务类型:3bit优先权字段(现已忽略),4bit TOS字段和1bit未用位但必须置0.
4bit TOS 分别代表:最小时延,最大吞吐量,最高可靠性和最小费用.
4bit 中只能置其中1bit,若均为零,意味着是一般服务.

总长度:IP数据报长度,以字节为单位,最大65535.
大多会进行分片,一般主机也要求不能接收超过576字节的数据报.
根据总长度和首部长度,可知data段大小.

标识: 该字段包含一个唯一值,该值在数据报分片时被复制到每个片中.
每次发送数据报都讲一个“内部计数器”加1,然后将数值复制“标识”字段中。

标志:标志字段用其中一个比特来表示“更多的片”。除了最后一片外,其他每
个组成数据报的片都要把该比特置 1。
标志字段中有一个比特称作“不分片”位。如果将这一比特置 1,I P将不对数据报
进行分片。

片偏移: 该片偏移原始数据报开始处的位置.

生存时间: 该字段用于设置一个“数据报可经过的路由器数量”的上限。TTL
发送方在初始发送时设定某个值(建议为64,、128或255),每台路由器再转发时都将其减一,当字段达到0时,该数据报被丢弃,并使用一个ICMP消息通知发送方。

协议:包含一个数字,该数字对应一个“有效载荷部分的数据类型”。比如17代表UDP,6代表TCP。

首部校验和:根据 I P首部计算的检验和码。它不对首部后面的数据进行计算。

为了计算一份数据报的 I P检验和,首先把检验和字段置为 0。然后,对首部中每个 16 bit进行二进制反码求和(整个首部看成是由一串 16bit的字组成),结果存在检验和字段中。当收到一份 I P数据报后,同样对首部中每个 16bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错,那么接收方计算的结果应该为全1。如果结果不是全 1(即检验和错误),那么I P就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。

选项:
选项很少被使用,并非所有的主机和路由器都支持这些选项。
选项字段一直都是以 32 bit 作为界限,在必要的时候插入值为 0的填充字节。这样就保证I P首部始终是 32 bit 的整数倍(这是首部长度字段所要求的)。

IPV4网络分为5大类:
A类: 0-127
B类: 128-191
C类: 192-223
D类: 240-255

ip地址分成3级:网络号(16位),网络号(8位),主机号(8位)

子网掩码: 根据二进制首位格式判断属于第几类网络

IP转发
参考: https://blog.csdn.net/qq_37653144/article/details/81362254
IP数据经过路由器转发到目的主机.
大多数主机可配置成路由器,也可配置成主机.
区别在于:主机不会转发那些不是自己生成的数据,而路由器会转发.
IP模块收到一个数据包时,先查询目的地址是不是自己(IP),如果不是,且配置为路由器,则根据"转发表"转发该数据; 负责丢弃此数据报,给源节点返回错误.

转发表
包含目的地址,掩码,网关地址(下一跳地址)和接口.

当一台主机或路由器需要向下一跳转发数据报时,它首先检查数据报中的IP地址。在算法表中使用该IP地址来执行最长前缀匹配算法。

收到包---->读取目标的逻辑地址的网络部分,查找路由表
—>找到对应条目---->转发到对应接口
—>没找到 ----> 转发到默认路由
—>没配置默认路由 ---->丢弃

IP分片
参考: https://www.cnblogs.com/red-code/p/7132023.html

标识符:
主机将数据报分片后,在发送前,会给每一个分片数据报一个ID值,放在16位的标识符字段中。
这个ID值可以用来识别哪些分片是属于同一个数据报的,方便重组。

标志:
标志字段在IP报头中占3位,
第1位作为保留,置0;
第2位,分段,有两个不同的取值:该位置0,表示可以分段;该位置1,表示不能分段;
第3位,更多分段,同样有两个取值:该位置0,表示这是数据流中的最后一个分段,该位置1,表示数据流未完,后续还有分段,当一个数据报没有分段时,则该位置0,表示这是唯一的一个分段。
当目的主机接收到一个IP数据报时,会首先查看该数据报的标识符,并且检查标志位的第3位是置0或置1,以确定是否还有更多的分段,如果还有后续报文,接收主机则将接收到的报文放在缓存直到接收完所有具有相同标识符的数据报,然后再进行重组。

偏移量:
指明“该分片在原数据报中的位置顺序”, 字节

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LWIP学习笔记(2)---IP协议 的相关文章

  • JavaScript 节流和防抖

    前言 本文主要记录了JavaScript 节流和防抖 节流和防抖本质上是优化执行高频率代码的一种手段 例如 浏览器的 mousemove resize scroll 等事件在触发时 会不断地调用绑定的事件函数极大地降低了前端的性能 为了性能
  • C#、js如何实现文件上传功能

    上传文件 今天我来讲讲在MVC中如何进行文件的上传 我们逐步深入 一起来看看 我们在默认创建的项目中的控制器下添加如下 第一步创建一个接受文件的实体 创建好后判断一下接受文件的是什么文件类型如txt 然后就是文件名称建好后检查目录文件是否存

随机推荐

  • CVPR2017-如何在无标签数据集上训练模型

    论文 Fine tuning Convolutional Neural Networks for Biomedical Image Analysis Actively and Incrementally 论文链接 http openacce
  • 深入解析Spring Boot中最常用注解的使用方式(下篇)

    摘要 本文是 深入解析Spring Boot中最常用注解的使用方式 的下篇内容 将继续介绍Spring Boot中其他常用的注解的使用方式 并通过代码示例进行说明 帮助读者更好地理解和运用Spring Boot框架 目录 第二部分 常见的容
  • 全国职业技能大赛云计算--高职组赛题卷④(容器云)

    全国职业技能大赛云计算 高职组赛题卷 容器云 第二场次题目 容器云平台部署与运维 任务1 Docker CE及私有仓库安装任务 5分 任务2 基于容器的web应用系统部署任务 15分 任务3 基于容器的持续集成部署任务 15分 任务4 Ku
  • 哈希表的设计

    概念 顺序结构以及平衡树 中 元素关键码与其存储位置之间没有对应的关系 因此在 查找一个元素时 必须要经过关键 码的多次比较 顺序查找时间复杂度为 O N 平衡树中为树的高度 即 O 搜索的效率取决于搜索过程中 元素的比较次数 理想的搜索方
  • 主页自定义可拖动组件 2.0版本 (portlet)

    首先 我是从下面这个页面抠出来的 http wrapbootstrap com preview WB00958H8 效果 在这个页面直接右键查看源代码 就可以看到了 非常清楚 因为我就只用这么一个portlet功能 我就给抠下来了 原来的代
  • webservice ajax课程,net webservice ajax访问

    function getdata click function ajax type Post url http localhost 65497 WebSite1 WebService asmx GetAge id 3344 data id
  • onload和ready的区别

    三个方面 window onload document ready 执行时机 必须等待网页全部加载完毕 包括图片等 然后再执行包裹代码 只需要等待网页中DOM结构加载完毕 就能执行包裹的代码 执行次数 只能执行一次 如果第二次 那么第一次的
  • 性能优化——设计更优的分布式锁?

    那什么是分布式锁呢 它又是用来解决哪些问题的呢 在 JVM 中 在多线程并发的情况下 我们可以使用同步锁或 Lock 锁 保证在同一时间内 只能有一个线程修改共享变量或执行代码块 但现在我们的服务基本都是基于分布式集群来实现部署的 对于一些
  • 主力吸筹猛攻指标源码_通达信指标——一目了然,简单易懂的变色成交量副图指标...

    大家好 这期给大家分享的变色成交量副图指标看量柱颜色变化 一目了然 换手率 VOL CAPITAL 100 主力吸筹 换手率 gt 3 AND 换手率 lt 5 COLORFF00FF 加快吸筹 换手率 gt 5 AND 换手率 lt 7
  • 智能指针之与shared_ptr有关的enable_shared_from_this类模板04

    一 enable shared from this模板类详解 什么时候该使用enable shared from this模板类 当我们需要一个类对象返回本身并且该类使用了shared ptr智能指针时 就需要使用enable shared
  • Ubuntu20中,rosdep init失败,无法rosdep update问题的解决。百分百有效。

    一 进入到 sources list d 文件夹 修改 gedit 20 default list cd etc ros rosdep sources list d sudo gedit 20 default list 将里面所有的 raw
  • gdb attach 进程调试

    gdb调试正在运行的进程 GDB可以对正在执行的程序进行调度 它允许开发人员中断程序 并查看其状态 之后还能让这个程序正常地继续执行 gdb attach xxxxx xxxxx为利用ps命令获得的子进程process
  • interview

    收割机博客 https blog csdn net DERRANTCM article details 73456550 查找算法 https blog csdn net derrantcm article details 51534498
  • sqlite升级

    最近开发中遇到了需要改变项目数据库的表中字段 添加新表等需求 而又需要保证原有数据不变 这就涉及到数据库升级 现在就来总结记录一下 包含原表中增加字段 删除字段 修改字段 添加新表等四种升级操作 SQLiteOpenHelper类中有两个方
  • 华为校招机试题-猜字谜-2023年

    题目描述 小王设计了一个简单的猜字谜游戏 游戏的谜面是一个错误的单词 比如nesw 玩家需要猜出谜底库中正确的单词 猜中的要求如下 对于某个谜面和谜底单词 满足下面任一条件都表示猜中 1 变换顺序以后一样的 比如通过变换w和e的顺序 nwe
  • App隐私监管新规实施 隐私合规检测要注意这几点?

    5月1日 国家四部委联合制定的 常见类型移动互联网应用程序必要个人信息范围规定 简称 规定 将正式实施 规定 明确移动互联网应用程序 App 运营者不得因用户不同意收集非必要个人信息 而拒绝用户使用App基本功能服务 要求各地各相关单位督促
  • Linux创建文件的5种方式

    Linux创建文件的5种方式 1 touch 1 1 创建一个文件 touch yyTest ini 1 2 同时创建两个文件 touch test1 txt test2 txt 1 3 批量创建文件 如创建2000个文件 touch te
  • 自定义modal转场动画,滑动手势控制 dismiss 过程

    效果 假设有 1 两个视图控制器 presentingVC presentedVC 2 一个继承于UIPercentDrivenInteractiveTransition 并遵守协议UIViewControllerAnimatedTrans
  • java上传Base64编码格式的图片

    工具类 public class ImageBase64Converter 本地文件 图片 excel等 转换成Base64字符串 param imgPath public static String convertFileToBase64
  • LWIP学习笔记(2)---IP协议

    IP首部 最高位在左边记为 bit 最低位在右边 记为31 bit 传输顺序 先0 7bit 在8 15bit 然后16 13 最后24 31bit 这种方式称为 big endian 也叫网络字节序 版本 ipv4 或 6 ipv6 首部