IP协议:IP数据报解析以及IP数据传输

来源:互联网 发布:古罗马怎么灭亡的 知乎 编辑:程序博客网 时间:2024/04/28 03:45

IP数据报解析

转载:点击打开链接

        TCP/IP协议定义了一个在局域网上传输的包,称为IP数据报(IP Datagram)。IP数据报由首部和数据两部分组成,首部部分包括版本,长度,IP地址等信息。数据部分一般用来存储上层协议其他的协议,如TCP,UDP和ICMP协议等。

(2)IP数据报首部格式

        

     版本:     指IP协议所使用的的版本。目前广泛使用的IP协议版本号为4

    首部长度:  IP首部长度,可表示的最大十进制数值是15。注意:该字段表示首部占32bit(4个字节)的数目。因为最大只能表示15个,所以首部长度最大为60字节

    服务类型: 优先级标志位(3bit)和服务类型标志位(4bit分别表示最小时延,最大吞吐量,最高可靠性,最小费用)以及1bit未用位(置0)

    总长度:    指IP的首部和数据部分的长度,单位为字节。总长度为16位,因此最大长度为2^16- 1 = 65536字节。知道首部长度以及总长度可以得到数据部分的起始位置以及数据长度。

    标识:  一个唯一的标识数字,用来标识一个数据报或者被分片数据报的次序

    标志:   用来标识一个数据包是否是一组分片数据包的一部分。 最低位MF(More Fragment)。当MF=1表示后面“还有分片”的数据包,MF=0表示这已经是最后一个分片数据了,中间位DF(Dont Fragment)不能分片,只有当DF=0时,才允许分片

    片偏移: 一个数据包其中的分片,用于重新组装数据用

    生存时间(TTL): 用来定义数据包的生存周期(初始值由源主机设置通常为32/64),经过一个路由器-1。

    协议: 用来识别上层协议数据包所属类型

    首部检验和: 一个错误的检测机制,确保IP头部没有被修改

   源地址: 发送端的IP地址

   目的地址:数据包目的的IP地址

    可选字段:保留作额外的IP选项

    数据部分:需要IP传递的实体数据

(3)分析IP数据报

     在本地主机上ping  www.baidu.com,使用wireshark获取数据

    

    

 (4)先分析29帧,也就是请求帧

     选中29帧,查看包的详细信息

    

  (5)分析30帧,也就是回应帧

    

     

     其中明显的不同的是生存时间发了变化,也就是从我本地到百度之间总共经过了64-55=9个路由。当然每次可能经过的路径是不一样的。我们可以通过tracert命令查看。

    

    可以看到经过了11个路由,显然每次路径是不一样的。

关于TTL分析链接:点击打开链接

分片标志位分析链接:点击打开链接

IP路由选择

当一个IP数据包准备好了的时候,IP数据包(或者说是路由器)是如何将数据包送到目的地的呢?它是怎么选择一个合适的路径来"送货"的呢?

最特殊的情况是目的主机和主机直连,那么主机根本不用寻找路由,直接把数据传递过去就可以了。至于是怎么直接传递的,这就要靠ARP协议了,后面会讲到。

稍微一般一点的情况是,主机通过若干个路由器(router)和目的主机连接。那么路由器就要通过ip包的信息来为ip包寻找到一个合适的目标来进行传递,比如合适的主机,或者合适的路由。路由器或者主机将会用如下的方式来处理某一个IP数据包

  1. 如果IP数据包的TTL(生命周期)以到,则该IP数据包就被抛弃。
  2. 搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机
  3. 搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“子网掩码(1.3.)”的协助。如果找到路由器,则将该包发向路由器。
  4. 搜索路由表,如果匹配同子网路由器失败,则匹配同网号(第一章有讲解)路由器,如果找到路由器,则将该包发向路由器。
  5. 搜索陆游表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包
  6. 如果都失败了,就丢掉这个包。

这再一次证明了,ip包是不可靠的。因为它不保证送达。

子网寻址

IP地址的定义是网络号+主机号。但是现在所有的主机都要求子网编址,也就是说,把主机号在细分成子网号+主机号。最终一个IP地址就成为 网络号码+子网号+主机号。例如一个B类地址:210.30.109.134。一般情况下,这个IP地址的红色部分就是网络号,而蓝色部分就是子网号,绿色部分就是主机号。至于有多少位代表子网号这个问题上,这没有一个硬性的规定,取而代之的则是子网掩码(两种1.子网8bit,主机8bit  255.255.255.0 2.子网10bit,主机6bit  255.255.255.192),校园网相信大多数人都用过,在校园网的设定里面有一个255.255.255.0的东西,这就是子网掩码。子网掩码是由32bit的二进制数字序列,形式为是一连串的1和一连串的0,例如:255.255.255.0(二进制就是11111111.11111111.11111111.00000000)对于刚才的那个B类地址,因为210.30是网络号,那么后面的109.134就是子网号和主机号的组合,又因为子网掩码只有后八bit为0,所以主机号就是IP地址的后八个bit,就是134,而剩下的就是子网号码--109。


0 0
原创粉丝点击