网络基础-IP协议

文章目录

  • 前言
  • 一、IP报文
  • 二、IP报文分片重组
    • IP分片
    • IP分片示例
    • MTU
    • ping 命令可以验证MTU大小
      • Windows系统:
      • Linux系统:


前言

基础不牢,地动山摇,本节我们详细介绍IP协议的内容。


一、IP报文

在这里插入图片描述
第一行:
4位版本号指定IP协议的版本,有IPv4,SIP,PIP。
4位头部长度是指该IP头部有多少个4字节,因为4位能表示的最大数是15,所以IP头部最长60字节。
8位服务类型,说明了IP数据包的服务需求,包括:最小延时、最大吞吐量、最高可靠性和最小费用。比如ssh和telent这样的登录程序需要的是最小延时服务,文件传输ftp需要最大吞吐量服务。
16为总长度指IP总长度。 MTU(帧的最大传输单元)绝对了1500字节内。
第二行:
16位标识能唯一标识主机发送的每一个数据报,初值随机,每发送一个,其值就加一,用于分片和重组。同一个数据报的所有分片具有相同的标识值。
3位标志字段,第一位保留,第二位可以设置禁止分片DF,第三位标识数据报的更多分片MF。
DF为1:不能分片 MF为1:中间分片
13位分片偏移是指相对于原数据报的偏移。
第三行:
8位生存时间TTL是数据报到达目的地之前允许经过的路由器跳数。
8位协议用来区分上层协议: 1是ICMP 6是TCP 17是UDP
16位头部校验和由发送端填充,接收端用来检查头部是否损坏。
第四行:
32位源端IP地址和目的端IP地址,传输过程中保持不变。
选项字段: 记录路由(记录途径的路由器)、时间戳(测量途径路由器之前数据报传输的时间)松散源路由选择和严格源路由选择(必须经过这些和仅能通过这些)

二、IP报文分片重组

IP分片

IP分片原因:链路层具有最大传输单元MTU这个特性,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的MTU是1500,你可以用 netstat -i 命令查看这个值。如果IP层有数据包要传,而且数据包的长度超过了MTU,那么IP层就要对数据包进行分片(fragmentation)操作,使每一片的长度都小于或等于MTU。我们假设要传输一个UDP数据包,以太网的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象。

# 查看MTU
[root@test-90 data]# netstat -i
Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33            1500    77622      0      0 0         30128      0      0      0 BMRU
lo              65536        0      0      0 0             0      0      0      0 LRU

IP分片示例

在这里插入图片描述

MTU

Maximum Transmission Unit,最大传输单元,指的是数据链路层的最大payload,由硬件网卡设置MTU,是一个硬性限制留给网络层的数据长度(以太网的有效载荷:Payload)

ping 命令可以验证MTU大小

Windows系统:

ping -f -l 1000  www.baidu.com

-f 设置DF标志位为1
-l 指定负载中的数据长度
如图:设置负载2000超过了MTU1500,同时设置DF为1,则提示报错。
在这里插入图片描述

Linux系统:

ping  -M do/want/dont   -s 1000  www.baidu.com

-M 选项通常和 -s 选项结合测试 IP 包的分片情况,do: 禁止分片,即使包被丢弃;want:当包过大时本地分片,dont:不设置分片标志位 DF
在这里插入图片描述

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

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

相关文章

C++使用thread_local实现每个线程下的单例

对于一个类,想要在每个线程种有且只有一个实例对象,且线程之间不共享该实例,可以按照单例模式的写法,同时使用C11提供的thread_local关键字实现。 在单例模式的基础上,使用thread_local关键字修饰单例的instance&…

NineData云原生智能数据管理平台新功能发布|2024年5月版

重点发布​ 数据库 DevOps - 表分组查询​ 在企业用户规模达到一定程度后,分库分表成为一种常见的数据库架构选择。在这种情况下,查询和维护数据需要高效的解决方案,以避免手动逐一查询、变更和汇总多个分库和分表的繁琐操作。 库分组变更…

【JAVA WEB实用技巧与优化方案】如何使用本地.bat/.sh脚本快速将服务发布到测试环境?

文章目录 普通方式的springboot 使用docker打包发布【手动构建镜像模式】1. maven 打包可运行jar包2.手动打包镜像3.运行容器全自动化本地命令发布到远程服务的方式配置ssh信任公钥获取公钥git 获取公钥方式: 桌面右键 -> open git gui here -> help -> show SSH key命…

C++模板知识点总结

C模板知识点总结 模板是C语言中非常强大的特性之一,它允许我们编写泛型代码,从而能够处理不同数据类型的通用算法和数据结构。C模板主要包括函数模板和类模板。以下是对C模板相关知识点的总结。 1. 什么是模板 模板是一种通用的代码结构,能…

LLM中完全消除矩阵乘法,效果惊人!10亿参数在FPGA上运行功耗接近大脑!!

一直以来,矩阵乘法(MatMul)在神经网络操作中占据主导地位,主要因为GPU针对MatMul进行了优化。 老黄一举揭秘三代GPU!打破摩尔定律,打造AI帝国,量产Blackwell解决ChatGPT全球耗电难题 这种优化使…

【适配鸿蒙next】Flutter 新一代混合栈管理框架

前言 据最新消息显示,华为今年下半年将全面转向其自主平台HarmonyOS,放弃Android系统。 报道中提到,下一版HarmonyOS预计将随华为即将推出的Mate 70旗舰系列一起发布。 据悉,HarmonyOS Next 已经扩展到4000个应用程序,…

C++【STL】改造红黑树简单模拟实现set map(带你了解set map的底层实现结构)

目录 一、学前铺垫(泛型编程) 二、改造红黑树 1.红黑树节点的改造 2.insert的改造 3.迭代器的实现 4.完整改造代码 三、set的模拟实现封装 四、map的模拟实现封装 五、完结撒❀ 前言: 下面为了简单模拟实现set map所出现的代码是以…

Tensorflow入门实战 P03-天气识别

目录 1、完整代码 2、运行结果 2.1 查看20张图片 2.2 程序运行 2.3 运行结果 3、小结 ① 代码运行过程中有报错: ② 修改代码如下: ③ 分析原因: 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者&…

NDIS Filter开发-PNP响应和安装

NDIS filter驱动可能是最容易生成的驱动之一,如果你安装了VS 2015 WDK之后,你可以直接生成一个能运行的Filter驱动,它一般是ndislwf。 和大部分硬件不同,NDIS Filter驱动介于软件和硬件抽象层之上,它和硬件相关&…

SpringCloud Gateway中Route Predicate Factories详细说明

官网地址:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#gateway-request-predicates-factories Spring Cloud Gateway将路由匹配作为Spring WebFlux HandlerMapping基础架构的一部分。 Spring Cloud Gateway …

使用 GPT-4 创作高考作文 2024年

使用 GPT-4 创作高考作文 2024年 使用 GPT-4 创作高考作文:技术博客指南 🤔✨摘要引言正文内容(详细介绍) 📚💡什么是 GPT-4?高考作文题目分析 ✍️🧐新课标I卷 人类智慧的进步&…

Linux网络安全

文章目录 一、网络安全概述二、常用服务端口三、 ping命令的使用3.1、ping命令的简单概述3.2、ping命令的使用 四、资源限制4.1、查看系统资源限制4.2、临时修改资源限制4.3、永久修改资源限制 五、网络安全服务工具介绍5.1、ClamAV5.2、Nmap5.3、Wireshark5.4、Netcat5.5、Sno…

【C51】C51单片机实现的 抽奖机 设计与编程指南

文章目录 前言:1. 实现效果2. 准备工作3. 编写代码总结: 前言: 在本文中,我们将介绍如何使用C51单片机来实现一个简单的抽奖机。这个项目不仅能够展示C51单片机的基本应用,还能让我们了解如何通过编程来控制硬件&…

9.3 Go 接口的多态性

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Django 视图类

在Django框架中,视图类(Class-based views,简称CBVs)提供了一个面向对象的方式来定义视图。这种方式可以让你通过创建类来组织视图逻辑,而不是使用基于函数的视图(Function-based views,简称FBV…

Python中的贪婪算法详解与应用

关于Python中的贪婪算法 在计算机科学和算法设计中,贪婪算法是一种构建近似解法的重要策略。贪婪算法的核心思想在于每一步都选择当前状态下最优的解,以期通过一系列局部最优解最终达到全局最优。尽管贪婪算法并不总是能够找到全局最优解,但…

详解FedAvg:联邦学习的开山之作

FedAvg:2017年 开山之作 论文地址:https://proceedings.mlr.press/v54/mcmahan17a/mcmahan17a.pdf 源码地址:https://github.com/shaoxiongji/federated-learning 针对的问题:移动设备中有大量的数据,但显然我们不能收…

minio的一个基础使用案例:用户头像上传

文章目录 一、minio下载安装(Windows)二、案例需求分析三、后端接口开发 一、minio下载安装(Windows) 1. 下载minio服务端和客户端 minio下载地址 2. 手动搭建目录 /minio/binmc.exeminio.exe/data/logs手动创建minio应用程序目…

面试 Redis 八股文十问十答第五期

面试 Redis 八股文十问十答第五期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)如何用 Redis 统计海量 UV…

vivado HW_DEVICE

硬件设备 描述 在Vivado Design Suite的硬件管理器功能中,每个硬件目标都可以 具有一个或多个Xilinx FPGA设备进行编程或用于调试目的。这个 hw_device对象是通过hw_server打开的hw_target上的物理部分。这个 current_hw_device命令指定或返回当前设备。 相关对象 硬…