zoukankan      html  css  js  c++  java
  • IPv4分析

    IPv4的头部格式:

    image12

    1. Version

    版本号,默认是4。

    2. IHL(Internet Header Length)

    就是IPv4头部长度。这个长度的单位是32bit,一般是5,那么头部的长度就是5x32bit=160bit。

    3. DSCP(Differentiated Services Code Point),ECN(Explicit Congestion Notification)

    原来这8字节是被定义成TOS(Type of Service),现在被RFC2474定义成Differentiated services(差异化服务)和ECN

    背景:随着互联网的发展,各种各样的服务被提供,比如语音、视频、流音乐、网页、邮件等等。原来的TOS定义已经跟不上时代的需要,所以在1998年,IETF发布了RFC 2474,将原来的TOS替换成DSCP和ECN。

    4. Total Length

    整个数据包的长度,含头部,单位为Byte。

    5. Identification

    数据包标识,用来区分相同的包,比如ping包。

    6. Flags

    bit 0 : 保留,总是0

    bit 1 : Don’t Fragment, DF。表示不分片。当需要发送的数据大于最长数据包限制的时候,数据需要分片发送。如果这位置1,IP模块将不会对数据报进行分片。这种情况下,如果IP数据报长度超过MTU,IP模块将丢弃数据报并返回一个ICMP差错报文。

    bit 2 : More Fragment,MF。表示更多分片,除了数据报的最后一个分片外,其他分片都要把它置1.

    7. Fragment Offset

    分片的位移。(2^13 – 1) x 8 = 65528 bytes, 也就是说,最大的IP数据报长度为65528+20=65548字节。

    8. Time to Live, TTL

    防止数据拥塞用的,有一个初始值,比如64,每经过一个路由器自动-1,到0的时候就被销毁。

    9. Protocol

    上层协议号,比如ICMP是1,TCP是6,UDP是17.

    10. Header Checksum

    头部CRC校验,详细可以看这里:http://en.wikipedia.org/wiki/IPv4_header_checksum

    11. Source IP Address

    源IP地址

    12. Destination IP Address

    目标IP地址

    13. Options

    可选,不常用,后面再详细分析。

     

    抓包测试:

    用tcpdump抓包,  sudo tcpdump –ntx –i eth0 icmp

    抓一下ping数据包,我这里ping一下自己的主机craftor.org

    image13

    上面一个包是发送,下面的包是返回。

    0x4 协议版本,v4
    0x5 包头长度,5x32bit
    0x00 参照RFC2474,00是默认包类型
    0x0054 包总长为0x54=84
    0x59b0 ID
    0x4000 不分片,不分包
    0x40 TTL=64
    0x01 ICMP协议,ping属于ICMP协议
    0xbbbc CheckSum
    0xc0a82c81 SourceIP=192.168.44.129
    0xc64a71c8 DestinationIP=198.74.113.200
    0x0800~0x3637 Options
  • 相关阅读:
    杭电1466------简单的dp
    hdu2037-----------贪心, 活动安排问题
    两个钟表问题。
    杭电HDU1042(有点坑的高精度)
    hd1496---->这道题是水水的数论吗?
    LightOJ::1077 -----奇妙的最大公约数
    并查集练兵场
    欧拉函数
    位运算---水题
    矩阵快速幂
  • 原文地址:https://www.cnblogs.com/craftor/p/3811739.html
Copyright © 2011-2022 走看看