zoukankan      html  css  js  c++  java
  • 第7章 网络层协议(1)_网络层首部

    1. 网络层首部

    1.1 网络层协议

     

    (1)TCP/IP协议栈网络层的4个协议IP协议、ICMP协议、IGMP协议和ARP协议

    (2)IP协议:动态路上协议的统称,包括RIP和OSPF协议

    (3)TCP/IP协议分成四层:应用层定义了客户端和服务器通信规范,传输层实现可靠传输,网络层负责为数据包选择转发路径,数据链路层负责将数据包封装成帧发送到数字链路上。

    1.2 查看网络层首部

     

    1.3 网络层首部格式

     

    (1)版本:占4位,指IP协议的版本。目前有两个版本IPv4和IPv6

    (2)首部长度:占4位,能表示的最大十进制数值为15(60个字节,即固定部分+可变部分的最大长度为60字节)(注意,该字段的单位为4个字节)。当IP分组的长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。

    (3)区分服务:占8位,配置计算机给特定应用的数据包添加一个标志,然后再配置网络中的路由器优先转发这些带标志的数据包。在网络带宽比较紧张的情况下,这种区分服务能确保服务质量(Quality of Service,QoS)。只有在使用区分服务时,该字段才起作用。

    (4)总长度:指IP首部和数据之和的长度,也就是数据包的长度,单位为字节该字段能表示的最大长度为65535字节。但数据链路层以太网所能封装的数据包最大为1500字节,这就意味着一个IP数据包长度大于链路层的MTU时,需要将该数据包分片传输。网络中的标只、标志和片偏移都是和数据包分片相关的字段。

     

    (5)标识:占16位。IP软件在存储器中维持一个计数器,每产生一个数据包,计数器加1,并将此值赋给标识字段。这个计数器会达到最大值后会回零循环使用。当数据包由于长度超过网络的MTU而必须分片时,同一个数据包被分成多个片,这些片的标识都一样,这样接收端才能将这些分片重装成原来的数据包。

     

    (6)标志:占3位。目前只有两位有意义。

      ①最低位记为MF(More Fragment),当MF=1表示后面“还有分片”的数据包。MF=0时表示这巳是若干数据包中的最后一个。

      ②标志字段中间的一位记为DF(Don’t Fragment)。意思是“不能分片”。只有DF=0时才允许分片。

    (7)片偏移:占13位。片偏移指出较长的分组在分片后,某片在原分组中的相对位置单位为8字节

     

      ①假设3个分片数据包中的数据部分长度分别为1400、1400、1000字节。

      ②原始数据包首部被复制为各数据包片的首部(但必须修改相关字段的值)

      ③片偏移是以字节为单位的,如175表示175*8=1400字节处的偏移。

    (8)生存时间(Time To Live,TTL)每过一个路由器TTL减1,当TTL为0时,就丢弃该数据包而不再转发

    (9)协议:占8位,协议字段指出此数据包(数据部分)携带的数据使用何种协议。以便使目标主机的网络层知道应将数据部分上交哪个处理过程。常用的协议和相应的协议字段如下图所示。

    协议名

    ICMP

    IGMP

    IP

    TCP

    EGP

    IGP

    UDP

    IPv6

    ESP

    OSPF

    字段值

    1

    2

    4

    6

    8

    9

    17

    41

    50

    89

    (10)首部检验和:占16位,这个字段只检验数据报的首部,但不包括数据部分。这是因为每经过一个路由器。路由器都要重新计算一下首部检验和(如TTL、标志和片偏移可能发生变化)

    (11)源IP和目标IP。各占32位。

    1.4 实战

    (1)查看协议版本和首部长度

      ①为Win7虚拟机A和B设置IPv4和IPv6两种地址。如A机IPv4为192.168.80.10/24,IPv6为2001:2012:1975::6/64。B机IPv4为192.168.80.20/24,IPv6为2001:2012:1975::8/64

      ②在A机上装Winshare抓包工具,并ping虚拟机B中IPv4和IPv6地址(如ping 2001:2012:1975::8)

      ③注意:ping计算机B的IPv4地址的数据包使用的是ICMP协议网络层首部Version标记为4,首部长度为20字节。IPv6使用的是ICMPPv6协议,Version标记为6,IPv6网络层首部长度固定为40个字节,所以没有首部长度字段。

    (2)给数据包设置区分服务字段(以给访问网站的请求流量包增加区分服务标记为例)

     

      ①打开组策略(gpedit.msc)→“计算机配置”→“Windows”→“基于策略的Qos” →“新建策略”。

      ②在“创建Qos策略”对话框中指定策略名称,选中“指定DSCP值”为8(8为区分服务的优先级,范围为0-63)。然后“下一步”,选择此Qos策略应用于“所有应用程序”、“任意源IP地址”、“任意目标IP”。

      ③再“下一步”,在指出“指定协议和端口号”对话框中选择 TCP协议,源端口选择任意,接收端口中输入80。这也是计算机访问网站发送出去的数据包目标端口。

      ④运行Wireshark。打开一个网站,捕获数据包。找到访问网站发送的请求数据包(http、tcp),可以看到该数据包添加了区分服务,值为0x08

    (3)捕获并观察数据包分片

     

      ①ping命令构造的数据包默认是32字节,可以使用-l参数指定数据包大小-f参数指定数据包是否允许分片。如ping www.baidu.com –l 3500 (数据包大小为3500字节,而以太网MTU大小为1500字节,故会被分成三片)

      ②第1个ICMP数据包被分为3个分片,三个分片的标识都是11110,第1个分片标志为1,片偏移为0。第2个分片的分片标志为1,片偏移为1480。第3个分片的分片标志为0,意味着这是最后一个分片,片偏移为2960。

      ③禁止分片可以将Flags字段的第二位(Don’fragment)设置为1.如ping时指定了数据包大小的同时,可以添加一个参数-f来禁止分片。如ping www.baidu.com–f。然后用Wireshare抓包捕获ICMP包,查看该标志位,如果为1表示不允许分片。

    (4)查看和配置链路的MTU

     

      ①查看链路的MTU:R1#show interface serial 1/0,可以找到MTU的值

      ②在R1上设置Serial 1/0接口的链路MTU为500

    R1#conf t
    R1(config)#interface serial 1/0
    R1(config-if)#mtu 500

      ③也需要在R2上配置Serial 1/0接口的链路MTU为500

    (5)数据包生存时间(TTL)

      ①操作系统发送数据包的默认TTL值

    操作系统

    默认TTL值

    备注

    WinNT4.0/2000/xp/2003

    128

    Win7可以在注册表中添加一个DefaultTTL来设置默认的TTL值。

    HKLMSystemCurrentControlSetServicesTcpipParameters下将DefaultTTL的值改为Dword类型的值,如,十进制的64.

    Win95/98/NT3.51

    32

    Linux

    64

    MacOS/MacTCP2.0x

    60

      ②ping命令通过-i指定发送的ICMP请求数据包的TTL值。每经过一个路由器TTL减1,当TTL=0时,路由器会丢弃该数据包,然后产生一个ICMP响应数据包给发送者,说明TTL耗尽。通过这种方式,可以将TTL分别指定为1、2、3,…来查看到达目标地址经过哪些路由器)。如ping www.baidu.com -i 1查看经过的第1个路由器。

     

      ③抓包查看数据包TTL变化

     

        注意:R1的默认路由指向R2的s2/0接口地址,R2的默认路由指向R1的s2/0接口。而ping 131.107.1.2时,这个地址并不存在,会发生ICMP请求数据包在R1和R2之间往复转发,TTL不断减1,直到变为0时被丢弃。

  • 相关阅读:
    CPU 常识(计算机组成原理)
    设置动态网站,要求访问端口 8998
    未知高宽的div在其父级div中垂直居中显示
    ES6 学习 -- Generator函数
    ES6 学习 -- Class继承
    ES6 学习 -- Class
    ES6 学习 -- 字符串模板
    ES6 学习 -- 字符串新增方法
    ES6 学习 -- Promise对象
    ES6 学习 -- Set和Map数据结构
  • 原文地址:https://www.cnblogs.com/5iedu/p/7128777.html
Copyright © 2011-2022 走看看