当前位置: 首页 > ops >正文

LWIP的IP协议笔记

IP协议简介

IP协议是TCP/IP协议族的基石,它为上层提供无连接、不可靠的服务

无连接:指IP通信双方都不长久的维持对方的任何信息。这表示上层协议每次发送数据,都需要明确指出对方的IP地址

不可靠:指IP协议不能把IP数据报准确到达接收端,只是会尽最大努力。一旦发送失败,就通知上层协议,而不会试图重发

描述:总路线主机H1  到  主机H2

         目的地址IP2 就是主机H2的地址

         源地址IP1 就是主机H1的地址

传输

路径

网络层

写入IP数据报首部地址

数据链路层

写入MAC帧首部地址

源地址

目的地址

源地址

目的地址

H1->R1

IP1

IP2

HA1

HA3

R1->R2

IP1

IP2

HA4

HA5

R2->H2

IP1

IP2

HA6

HA2

为什么需要MAC地址和IP地址?

①数据传输过程中,源IP地址和目标IP不变

②路由器根据目标IP地址的网络号进行路由

IP地址分为ABCDE类地址

总结:

MAC地址用来数据转发,而IP地址用来确认路标

mac的作用则是实现直连的两个设备之间的通信,而IP则负责在没有智联的两个网络之间进行通信传输;

IP分片

MTU最大1500字节;

当数据传输大于1500字节的时候就需要数据分片

一、抓取 IP协议的内容
 

Wireshark抓包工具

可以看到每个数据包的所有bit

并可以分析数据

二、IP协议字段解析

version版本
header length头⻓度
differentiated service field差分服务区域
total length总⻓度
identification标识位
flags标志位
fragment offset偏移量
time to live⽣存周期
Protocol上层协议
Header checksum校验和
Source源IP地址
destination⽬的IP地址

 数据包框图

三、IP协议处理分片
 

3.1、MTU是什么最⼤传输单元,

默认是1500字节

指的是⼀个数据包从⽹卡发出时,最⼤的total length的⻓度

如果⼤于1500字节就会进⾏分⽚

3.2、理解identification 、flags 、fragment offset 这些字段 的作用


1,identification 字段:

⽤来标识⼀个分⽚ ,例如:4000字节(不包含首部的4000字节)需要分⽚,分成1500, 1500, 1060,三⽚ ,这些数据包的identification字段都是⼀致的

多出来的60 是多的三个包控制段3*20

2,flags 字段:

Reserved bit保留位,暂时没作⽤
Don’t fragmentDM位,该位置1,说明该数据包不能被分⽚(⽤来测试接⼝的MTU⼤⼩的)
More fragmentFM位,如果是最后⼀个分⽚,就⽤0来表示,不是最后⼀个分⽚就⽤1来表示
3,fragment offset 字段:

fragment offset也叫偏移量,偏移的计算是payload部分payload指的是去掉⼆层头部和三层头部后的内容1500字节的分⽚,指的是IP+payload的⼤⼩

加上E2,整个数据包抓包看到的⼤⼩是1514字节 ,这点不用理会

下图的数据包,是首部20字节加数据3980的4000字节

888:标识符

0/1:尾部识别

185/370:是整个大包的数据偏移量  185是从3980数据的第185个开始的字节

四、分片原理
 

http://www.xdnf.cn/news/5156.html

相关文章:

  • 通俗的理解MFC消息机制
  • 理解计算机系统_并发编程(2)_基于I/O复用的并发(一):select浅解
  • 如何理解编程中的递归、迭代与回归?
  • Shell 脚本编程1(常用命令+概述)
  • 在 Elasticsearch 中删除文档中的某个字段
  • Web自动化测试入门详解
  • 【深入理解SpringCloud微服务】手写实现一个微服务分布式事务组件
  • 如何阅读、学习 Linux 2 内核源代码 ?
  • ADI ADRV902x的射频模拟信号输入输出端口的巴伦匹配
  • nvme Unable to change power state from D3cold to D0, device inaccessible
  • akshare爬虫限制,pywencai频繁升级个人做量化,稳定数据源和券商的选择
  • HTTP 的发展史:从前端视角看网络协议的演进
  • Java字节缓冲流高效读写文件指南
  • 【论文阅读】——一些小tips和测试
  • DS18B20温度传感器
  • 问题解决思路:numpy:DLL load failed
  • 贪心算法专题(Part2)
  • React Hooks 精要:从入门到精通的进阶之路
  • 单片机-STM32部分:10-2、逻辑分析仪
  • 【软件工程】基于频谱的缺陷定位
  • openlayers利用已知的三个经纬度的坐标点 , 绘制一个贝塞尔曲线
  • LeetCode 39 LeetCode 40 组合总和问题详解:回溯算法与剪枝优化(Java实现)
  • 鸿蒙 所有API缩略图鉴
  • PyTorch API 10 - benchmark、data、批处理、命名张量
  • 如何创建伪服务器,伪接口
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月10日第73弹
  • linux搭建hadoop学习
  • 测试左移系列-产品经理实战-实战认知1
  • 简易图片编辑工具,支持抠图和替换背景
  • 如何启动vue项目及vue语法组件化不同标签应对的作用说明