• IP Fragmentation(IP分片)


    https://www.cisco.com/c/en/us/tech/ip/index.html

    IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组,这一过程称为分片(Fragmentation)。 IP分片(Fragmentation)发生在要传输的IP报文大小超过最大传输单位MTU(Maximum Transmission Unit)的情况。比如说,在以太网(Ethernet)环境中可传输最大IP报文大小(MTU)为1500字节。如果要传输的报文大小超过1500字节,则需要分片之后进行传输。由此可以看出,IP分片在网络环境中是经常发生的事件。

        IP具有一种重要功能,就是当分组过大而不适合在所选硬件接口上发送时,能够对分组进行分片。过大的分组被分成两个或多个大小适合在所选定网络上发送的IP分片。而在去目的主机的路途中,分片还可能被中间的路由器继续分片。在目的主机上,一个IP数据报可能放在一个IP分组内或者多个IP分组内。因为各个分片可能以不同的路径到达目的主机,所以只有目的主机才有机会看到所有分片。因此,也只有目的主机才能把所有分片重装成一个完整的数据报,提交给合适的运输层协议。
        
        IP首部内有三个字段实现分片和重装:
        iphdr->id
        iphdr->frag_off

        标识字段(iphdr->id)、标志字段(iphdr->frag_off的3个高位比特)和偏移字段(iphdr->frag_off的13个低位比特)。标志字段由3个bit标志组成。
        (1) 比特0是保留的,必须为0;
        (2) 比特1是“不分片”(DF -- Don't Fragment)标志,如果将这一比特置1,IP将不对数据报进行分片,这时如果有需要进行分片的数据报到来,会丢弃此数据报并发送一个ICMP差错报文给起始端。
        (3) 比特2是“更多分片”(MF -- More Fragment)标志。除了最后一片外,其他每个组成数据报的片都要把该比特置1。
        片偏移字段(iphdr->frag_off的13个低位比特)指的是该片偏移原始数据报开始处的位置。另外,当数据报被分片后,每个片的总长度值要改为该片的长度值。
        BSD中,标志和偏移字段结合起来,由iphdr->frag_off访问。iphdr->id标识了特定数据报的分片,iphdr->frag_off确定了分片在原始数据报内的位置,除最后一个分片外,MF标识每个分片。

  • 相关阅读:
    3个检测浏览器UserAgent信息的网站
    linux系统下配置网桥(CentOS 5.5)
    squid封禁不带UserAgent的请求
    iptables透明网桥无法使用透明代理错误
    Squid修改用户浏览器的Useragent信息
    MySQL主从复制(MasterSlave)与读写分离(MySQLProxy)实践
    js中格式化时间
    js获取当前月的第一天和最后一天
    JS String.toDate
    Js获取当前日期时间及其它操作
  • 原文地址:https://www.cnblogs.com/jiangzhaowei/p/8954531.html
Copyright © 2020-2023  润新知