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

路由基础(一):IP地址规划

###IPv4地址

IPv4地址分成网络部分和主机部分
IPv4地址根据定义可分为:

  1. A类地址
    a. 第一字节的第一位为0
    b. 第一字节的数值范围为1-126
  2. B类地址
    a. 第一字节的第一和第二位为10的一组地址
    b. 第一字节的数值范围为128-191
  3. C类地址
    a. 第一字节的第一、第二和第三位为110的一组地址
    b. 第一字节的数值范围192-223

主网以及子网划分

主网采用自然掩码

  1. A类网络中使用8位掩码 1-126 255.0.0.0
  2. B类网络中使用16位掩码 128-191 255.255.0.0
  3. C类网络中使用24位掩码 192-223 255.255.255.0
    子网划分是把整个主类网络地址继续划分为更多的子网地址,属于在主网内部重新划分不同子网行为

IPv4报文

在这里插入图片描述

  1. 版本号(Version):长度4bit 标识目前采用的IP协议和版本号
    a. 0100代表IPv4
    b. 0110代表IPv6
  2. 报文头长度(Header Length):长度4bit 这个字段的作用是为了描述IP报文头的长度
    a. IP报文头的长度最长为60Byte 最小长度为20Byte
  3. 服务类型(Type of Service):长度8bit 用于实施QoS
    a. RFC 791中TOS的IP precedence将数据流分为8个优先级,取值越大优先级越高
    b. RFC 2474中又对TOS进行了重新的定义,把前6位定义成DSCP,可以标识64中等级,后两位保留
  4. 报文总长度(Total length):长度16bit 以Byte为单位计算IP报文的长度(包括报文头部和数据),所以IP报文最大长度位65535Byte
  5. 标识符(identifier):长度16bit 该字段与Flags和Fragment Offset字段联合使用,对较大的上层数据包进行分段操作,路由器将一个包拆分后,所有拆分开的小包被标记相同的值,以便目的端设备能够区分那个包属于被拆分开的包的一部分
  6. 标记(Flags):长度3bit
    a. 该字段第一位不使用
    b. 第二位是DF(Don’t Fragment)位,DF位为1时表明路由器不能对该上层数据包分段。如果一个上层数据包无法在不分段的情况下进行转发,则路由器会丢弃该上层数据包并返回一个ICMP错误信息
    c. 第三位是MF(More Fragment)位,当路由器对一个上层数据包分段,则路由器会在除了最后一个分段的IP报文的头中将MF位设为1
  7. 片偏移(Fragment Offset):长度3bit 表示该IP报文在矮族分片中的位置,接收端靠此来组装还原IP报文
  8. 生存时间(TTL):长度8bit 当IP报文经过每一个沿途的路由器的时候,TTL值减一,如果TTL减少为0,则该IP报文会被丢弃。这个字段可以防止由于路由环路导致IP报文在网络中不停被转发
  9. 协议(Protocol):长度8bit 标识了上层所使用的协议。例如ICMP(协议号为1)、OSPF(协议号89)
  10. 头部校验(Header Checksum):长度16bit 用来做IP头部的正确性检测,但不包含数据部分
  11. 源和目标地址(Source and Destination Address):这两个字段都是32bit 标识了IP报文的源地址和目的地址
  12. 可选项(Options):一个可变长字段,该字段属于可选项
    a. 松散源路由(Loose Source Routing):给出一连串路由器接口的IP地址。IP包必须沿着这些IP地址传送,但是允许在相继的两个IP地址之间跳过多个路由器
    b. 严格源路由(Strict Source Routing):给出一连串路由器接口的IP地址。IP包必须沿着这些IP地址传送,如果下一跳不在IP地址表中表示发生错误
    c. 路有记录(Record Route):当IP包离开每隔路由器的时候记录路由器的出站接口的IP地址
    d. 时间戳(Timestamps):当IP包离开每隔路由器的时候记录时间
  13. 填充(Padding):因为IP报文头长度部分的单位为32bit,所以IP报文头长度必须为32bit的整数倍,因此,在可选项后面,IP协议会填充若干个0,以达到32bit的整数倍
http://www.dtcms.com/a/353448.html

相关文章:

  • 基于单片机空调温度控制测温ds18b20系统Proteus仿真(含全部资料)
  • React 组件命名规范:为什么必须大写首字母蛊傲
  • HarmonyOS安全开发实战:一套好用的数据加密方案
  • SQL Server 批量插入脚本
  • 中資券商櫃台系統搭建與開發技術分析
  • AI 大模型 “幻觉” 难题:为何会 “一本正经地说错话”,如何让它更靠谱?
  • 基于Cursor AI IDE的Vue3留言板系统实战:从零搭建到智能优化全流程
  • java数据类型获取长度方式总结
  • 【C++】C++11新特性第一弹(列表初始化、新式声明、范围for和STL中的变化)
  • Flutter 开发技巧 AI 快速构建 json_annotation model 的提示词
  • 使用git上传项目的步骤
  • 煤矸石检测数据集VOC+YOLO格式3090张2类别
  • This method can cause UI unresponsiveness if invoked on the main thread.
  • week5-[字符数组]数和
  • 【技巧】PostgreSQL自动转换类型 int转bool 转int
  • 苍穹外卖项目实战(日记十一)-记录实战教程及问题的解决方法-(day3-3)完善菜品分页查询功能
  • 怎么理解API?
  • 用户体验设计 | 什么是 AX?从 UX 到 AX 的演进
  • 数据结构——算法效率的度量(时间复杂度与空间复杂度)
  • Elasticsearch 启动反复重启排查实录:从“内存不足”到“vm.max\_map\_count 过小”
  • 图表可视化地理趋势-Telerik WPF Chart
  • 智能汽车制造:海康NVR管理平台/工具EasyNVR多品牌NVR管理工具/设备实现无插件视频监控直播方案
  • R语言贝叶斯方法在生态环境领域中的技术应用
  • 攻克 Java 分布式难题:并发模型优化与分布式事务处理实战指南
  • APP与WEB测试的区别?
  • 人工智能在医疗领域中辅助外科手术的应用综述
  • 【VSCode】使用VSCode创建Java C/S架构项目
  • 如何用Renix实现网络测试自动化: 从配置分离到多厂商设备支持
  • 【网络编程】NtyCo协程服务器的框架(轻量级的协程方案,人称 “小线程”)
  • 从浏览器无法访问到Docker容器的 FastAPI 服务地址【宿主机浏览器和容器不在同一个网络层面:端口映射】