zoukankan      html  css  js  c++  java
  • IP报文详解

    IP协议

      IP协议,Internet Protocol ,互联网协议,IP协议位于网络层,主要目的是使得网络间能互联通信

      IP是TCP/IP协议族中得核心协议,所有TCP、UDP、ICMP和IGMP数据都是通过IP数据报传输。

    IP报文

      IP数据报的首部部分长度为20-60个字节

      

      版本号:指IP协议所使用的版本。4个位。版本号为0100,4,即IPv4,版本号为6,即IPv6

      IP首部长度:表示IP包头长度,该字段用4位表示。最常见的报头长度是0101即20位,当IP报头长度不是4字节整数倍时,就需要对填充域填充

      DS位:现在一般用于支持QoS中差分服务模型,实现网络流量优化

      总长度:指IPv4数据报的总长度。数据报的最大长度为:2*16-1=65535字节,当IP数据报超过最大传输单元MTU后,会被分片处理

      标识符:网络中转发的IP报文的长度可以不同,但如果报文长度超过了数据链路所支持的最大长度,则报文就需要分割成若干个小的片段才能在链路上传输。将报文分割成多个片段的过程叫做分片

          主机将数据报分片后,在发送前,会给每一个分片数据报一个ID值,放在16位的标识符字段中。

      标志位:标志字段在IP报头中占3位,

          第1位作为保留,置0;

          第2位,分段,有两个不同的取值:该位置0,表示可以分段;该位置1,表示不能分段;

          第3位,更多分段,同样有两个取值:该位置0,表示这是数据流中的最后一个分段,该位置1,表示数据流未完,后续还有

          当目的主机接收到一个IP数据报时,会首先查看该数据报的标识符,并且检查标志位的第3位是置0或置1,以确定是否还有更多的分段。如果还有后续报文,接收主机则将接收到的报文放在缓存直到接收完所有具有相同标识符的数据报,然后再进行重组。

      偏移量:各个IP分片数据报在发送到目的主机时可能是无序的,所以就需要“偏移量”字段来指明“该分片在原数据报中的位置顺序”

      生存时间:该字段用于设置一个“数据报可经过的路由器数量”的上限。

          报文在网段间转发时,如果网络数设备上的路由规划不合理,就可能出现环路,导致报文在网络中无线循环,无法到达目的端。环路发生后,所有发往这个目的地的报文都会被循环转发,网络将发生拥塞。

          发送方在初始发送时设定某个值(建议为64,、128或255),每台路由器再转发时都将其减一,当字段达到0时,该数据报被丢弃,并使用一个ICMP消息通知发送方。

      协议:8位1个字节,包含一个数字,该数字对应一个“有效载荷部分的数据类型”。比如0x06代表TCP。

      首部校验和:2个字节,该字段“仅计算”IPv4首部。也就是说只“校验”首部。并不检查数据报的“数据部分”。

        首先将“首部校验和”设置为0。然后对首部(整个首部是一个16位字的“序列”)计算16位二进制反码和。该值被存储在首部校验和字段中。当接收方接收到数据报后,也对其首部进行校验计算,如果结果与“首部校验和”的值不同,就丢弃收到的数据报。

      源IP、目的IP:各占4个字节

      可选字段:IP支持很多可选选项。

  • 相关阅读:
    Java JDK在Mac下的配置方法
    Kubernetes 在知乎上的应用
    kubernetes 简介:kube-dns 和服务发现
    CNI:容器网络接口
    SkyDNS试用
    docker 跨主机网络:overlay 简介
    为什么Kubernetes不使用libnetwork
    libnetwork 源码浅析
    NVMe到底是什么?用它的SSD有啥优势?
    TUNING FOR ALL FLASH DEPLOYMENTS
  • 原文地址:https://www.cnblogs.com/juankai/p/11468166.html
Copyright © 2011-2022 走看看