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

网络基础-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
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • git 下载openNeuro大文件
  • frida hook微信防撤回(PC端)
  • Rust-03-数据类型
  • 【前端】详解JavaScript事件代理(事件委托)
  • ---java 抽象类 和 接口---
  • 【设计模式】行为型设计模式之 迭代器模式
  • LeetCode 算法:合并区间c++
  • 封装了一个简单理解的iOS竖直文字轮播
  • k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA策略应用案例
  • Wireshark TS | 应用传输丢包问题
  • No ‘ChromeSansMM’ font 错误解决
  • 渗透测试之内核安全系列课程:Rootkit技术初探(一)
  • vue面试题2-根据以下问题回答
  • ChatGP和kimi对比
  • Docker之路(三)docker安装nginx实现对springboot项目的负载均衡
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 08.Android之View事件问题
  • 2019.2.20 c++ 知识梳理
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • Javascript基础之Array数组API
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Linux gpio口使用方法
  • quasar-framework cnodejs社区
  • web标准化(下)
  • 不上全站https的网站你们就等着被恶心死吧
  • 从0到1:PostCSS 插件开发最佳实践
  • 你不可错过的前端面试题(一)
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 【云吞铺子】性能抖动剖析(二)
  • ​520就是要宠粉,你的心头书我买单
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • $$$$GB2312-80区位编码表$$$$
  • (07)Hive——窗口函数详解
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (六)c52学习之旅-独立按键
  • (生成器)yield与(迭代器)generator
  • (四)React组件、useState、组件样式
  • (四)stm32之通信协议
  • (转)socket Aio demo
  • (转)创业的注意事项
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .Net 4.0并行库实用性演练
  • .NET Core引入性能分析引导优化
  • .Net7 环境安装配置
  • 。。。。。
  • /etc/sudoers (root权限管理)
  • @Valid和@NotNull字段校验使用
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)