• IPv4数据报格式


    • IPv4是IP协议的第四个版本(版本1-3和版本5都未曾使用过)
    • IP地址不能反映任何有关主机位置的地理信息
    • 以前还有个逆地址解析协议RAPR(Reverse APR),它的作用是使只知道自己MAC地址的主机能通过RAPR找到其IP地址,而现在的DHCP(Dynamic Host Configuration Protocol)协议已经包含了RARP的功能,所以RARP已淘汰不用了
    • 在Internet中,允许一台主机有两个或两个以上IP地址,这两个IP地址的网络号必然不同。如果一台主机有两个或两个以上IP地址,说明这个主机属于两个或两个以上的逻辑网络。同一时刻一个合法的内网IP地址只能分配给一台主机,否则会引起IP地址冲突

    IP数据报的格式

    当IP数据报每经过一个路由器,生存时间TTL就减1,并重新计算首部检验和

    • 版本:占4位,IP协议的版本
    • 首部长度:占4位,以4字节为单位,0101就代表5个4字节,即20字节(不使用可选字段)
    • 区分服务:占8位,一般情况不使用这个字段
    • 总长度:占16位,指首部和数据之和的长度,以字节为单位,因此数据报最大长度为65535B。以太帧的最大传送单元为1500B,因此当一个IP数据报封装成帧时,总长度超过了1500B,就要分片(一片就是一个帧的数据部分)(每一片都有首部,并且都是20字节)

    • 标识(identification):占16位,是一个计数器。每产生一个数据报就+1,并赋值给标识字段,但它并不是“序号”(因为IP是无连接服务),同属一个数据报的数据报片用相同的标识,以便最后重装成原来的数据报。(目的主机根据IP首部中的标识、标志、片偏移字段来完成对片的重组)
    • 标志(flag):占3位,目前只有两位有意义。最低位是MF(more fragment),MF=1表示后面还有分片,MF=0表示最后一个分片,中间一位是DF(don't fragment),DF=0时才允许分片
    • 片偏移:占13位,指出较长的分组在分片后,某片在原分组的相对位置(相对于数据报的数据字段的起点),以8个字节为偏移单位,除了最后一个分片外,每个分片的长度一定是8B的整数倍
    • 生存时间(Time To Live,TTL):占8位,是数据报在网络中可通过的路由器数量的最大值(跳数限制),路由器在转发分组前,把TTL减1,若TTL被减为0,则该分组必须丢弃
    • 协议:占8位,指出分组携带的数据部分使用何种协议,即分组数据应上交给哪个协议处理。值为6表示TCP,为17表示UDP,1表示ICMP,89表示OSPF
    • 首部检验和:占16位,只检验分组首部(不是CRC检验码,是反码求和运算),不检验分组数据部分
    • 源地址字段:占4B,标识发送方的IP地址
    • 目的地址字段:占4B,标识接收方的IP地址
    • 选项字段:动态增加IP数据报功能,但实际上很少被使用,因此IPv6的IP数据报的首部长度(指的是基本首部)就做成固定的了
    • 填充:当IP分组首部长度不是4字节整数倍时,用填充字段填充

    路由器转发分组的过程

    网络利用率并非越高越好。根据排队论,网络利用率增大时,所引起的时延也会迅速增加

    转发表里的两种特殊路由

    主机路由的子网掩码是255.255.255.255

    默认路由的子网掩码是0.0.0.0

  • 相关阅读:
    使用modinfo对比内核版本号
    【黑马-SpringCloud技术栈】【02】服务拆分及远程调用_服务提供者与消费者
    掌握Pytorch模型 压缩 裁剪与量化
    带你了解基于Ploto构建自动驾驶平台
    Github每日精选(第20期):Python 的交互式图形库plotly.py
    TensorFlow入门(十一、图的基本操作)
    【STM32快速上手】点灯只需4步
    vue2知识点————(父子通信)
    用 docker 创建 jmeter 容器, 实现性能测试,该如何下手?
    (六)React Ant Design Pro + .Net5 WebApi:后端环境搭建-EF Core
  • 原文地址:https://blog.csdn.net/Listennnn/article/details/134481364