补点基础知识

IP, Internet Protocol:网际协议

I P是T C P / I P协议族中最为核心的协议。所有的T C P、U D P、I C M P及I G M P数据都以I P数据报格式传输。

1. 特点:
不可靠( unreliable)的意思是它不能保证I P数据报能成功地到达目的地。I P仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区, I P有一个简单的错误处理算法:丢弃该数据报,然后发送I C M P消息报给信源端。任何要求的可靠性必须由上层来提供(如T C P)。

无连接( connectionless)这个术语的意思是I P并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。这也说明, I P数据报可以不按发送顺序接收。对于防火墙来说没有关于IP的状态化信息

2. 最大传输单元,MTU

不同类型的网络都有规定数据帧的最大值,链路层的这个特性称作MTU,最大传输单元。以太网是1500字节,802.3网络是1492字节。PPP链路上是1500字节,PPP接收端还有MRU,最大接收单元,也是1500字节。

Windows 2003 和XP更改MTU的注册表

MTU

Location:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\InterfaceGUID

Data Type:REG_DWORD

Valid range:88--<the MTU reporter by the network adapter>

Default value:0xFFFFFFFF(the MTU reporter by the network adapter)

Present by default:No

TCP/IP初始化的时候会查询绑定的NIDS网络适配器驱动程序并得到MTU,如果注册表的值超过了查询到的值将被忽略。

3. 路径最大MTU

两台主机通信过程中,所经过网络的MTU的最小值。经过的每个网络都会有字节的MTU,路径最大的MTU就是取这些MTU中的最小值。

4. IP数据报格式

image

IP头    20~60字节,每4字节一个增量级别。它提供路由支持、有效载荷类型、IP头和数据报大小、分片支持以及IP选项等

IP有效载荷  长度可变

5. IP头部格式

image

字段说明

版本  4位长,值可以从0到15,目前主要用的是IP v4,该值就是4, IP v6 对应6.

www.iana.org/assignments/version-numbers可以查询

头长度  4位,IP头部的长度,4位最大值是15,所以长度的单位不是字节,是4字节。所以头部长度最长60字节。

服务类型 (TOS) 8位长,TOS字段有2种定义:RFC791和RFC2474定义

  •      RFC791对TOS的定义

image

优先权(Precedence) 3位,表示数据重要性 ,默认值000

优先权的值 优先权
000 常规
001 优先
010 紧急
011 闪存
100 闪存覆盖
101 CRITIC/ECP
110 互联网控制
111 网络控制

时延(Delay)  1位,0表示一般时延,1表示低时延。例如,根据时延字段,路由器选择陆地上的低时延WAN链路代替高时延的人造卫星链路,即使人造卫星有较高带宽。

吞吐量(Throughput) 1位 0表示一般吞吐量,1表示搞吞吐量。例如,根据吞吐量字段,路由器选择陆地上的高吞吐量人造卫星链路代替低带宽的WAN链路,即使WAN链路有较低时延。

可靠性(Reliability) 1位 0表示一般可靠性, 1表示高可靠性。高可靠性决定哪个IP数据报首先被丢弃。例如一些视频数据采用2种类型的包发送,高可靠性发送用来重建基本视频图像的包,一般可靠性用来建立高清图像的数据包。

费用(Cost) 1位 0表示一般费用,1表示低费用,这里的费用就是指钱。例如根据费用路由器将选择低费用的链路代替高费用的人造卫星链路。

保留(Reserved) 1位 必须为0,路由器忽略这个字段

 

ping –v tos-value  destination 来设置ICMP响应信息中的TOS值。

需将DisableUserTOSSetting的注册表设置为0时才有效。

  • RFC2474定义的TOS

RFC2474 根据6位的DSCP(Differentiated Services Code Point,区分服务代码点)和未用的2位重新定义了TOS字段。DSCP确定每一跳的动作,接收路由器据此对数据报的发送控制。DSCP的值由网络策略决定。

区分服务(Differentiated Services)是对使用RSVP(Resource ReServation Protocol, 资源保留协议)协议的IP QoS机制的另一种选择。RSVP要求通信节点有信号初始化的过程并在中间每个路由器中保持通信流的状态。用了区分服务,网络策略就决定了DSCP的值和相应的传输,已经参数的排列。网络策略被告知于路由器和通信主机。当几点发送数据报需要非默认的QoS时,它将选择DSCP的值,并把它放在IP头的TOS字段中。中间路由器记录DSCP的值并提供相应的非默认的QoS发送服务。

image

Windows Server 2003中的使用RFC2474的TOS定义作为默认设置。可以通过下列注册表键值修改TOS字段:

DisableUserTOSSetting

Location:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Data Type:REG_DWORD

Valid range:0--1

Default value:1

Present by default:No

该键值控制TOS字段,0表示使用RFC791,1使用RFC2474

总长度(Total Length) 2字节,表示IP数据报总字节数(IP头+IP有效载荷),根据头长度和总长度可以计算出有效载荷:IP有效载荷(字节)=长度(字节) — 4X头长度(32位)

标识(Identification) 2 字节  用来标识在源和目的节点间发送的每一个数据包。这个字段对连续的IP数据报是不断增加的。被用来标识原始IP数据报的分片。每发送一个字节增加1

标志(Flags) 3位长  包含2个用于分片的标志。其中一个用于表示IP有效载荷是否符合分片标准,另一个表示对已分片的IP数据报是否还有更多分片。

片偏移(Fragment offset) 13位长,表示分片相对于原始IP数据报有效载荷的偏移量。

生存时间 (Time To Live) 1字节长,表示数据报在被路由器丢弃钱经过的最大链路数。作为时间计数,TTL是预先定义好的,表示IP数据报在Internet上存在的秒数。。每当数据报经过一个路由器的时候减少1或者减去在路由器停留的秒数,但大多数时延都小于1秒,所以TTL最终称为一个跳数计数器. 为了阻止环路发生。

特征:

1.进行路由前,路由器将TTL减1. 如果TTL小于1,数据报将丢弃,并向主机发送一个ICMP时间终止-TTL终止的消息

2.目的主机不检查TTL字段。

3.发送主机的TTL必须大于0. 发送IP数据报的TTL由应用程序指定或者系统默认,最大值为255.

4.TTL不受路由协议跃点的限制,如RIP跃点数和OSPF花费的限制。

注意:TTL使用链路数和路由协议跃点数的区别?

跃点数:到达指定目的端所经过的路由器数。

链路数:到达目的段所经过的网络接口层的链路数。跃点比链路数少1.

例如,A和B间有5个路由,跃点就是5,链路是6,如果TTL是5到达不了B,设置6才能到达。

image

Windows 2003 修改TTL默认值,默认是128

Location:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Data Type:REG_DWORD

Valid range:1—255

Default value:128

Present by default:No

Ping   –i   TTL-value  destination  对ping设置TTL参数

协议(Protocol) 1 字节长,表示包含在IP数据报中的上层协议。1表示ICMP、6表示TCP、17表示UDP。其他的值表示的含义可以查询:www.iana.org/assignments/protocol-numbers

Windows 可以通过存储在 ..\system32\drivers\etc目录下的protocol文件将协议名解释成编号。Windows支持的协议ICMP(1)、IGMP(2)、已经封装了的IP(4)、TCP(6)、17(UDP)、IP v6(41)、常规路由封装GRE(47)、ESP(50)、AH(51)、OSPF(89)

头部校验和(Header Checksum) 2 字节,只是对IP头执行位级别的校验。IP有效载荷不在其中,它使用自己的位级别校验和。源和目地之间经过的每个路由器都会校验首部校验和字段,如果失败就丢弃该数据报。由于TTL字段每次都会减1,所以每次要重新生成此字段。

头部校验和字段也在头部,为了计算的是所有其他字段,所以计算时将该字段取值0,在计算得到结果后在写入该字段。

源地址 4字节 源主机IP地址,在NAT情况下数据报源地址会被改写,其他时候产生数据报后就不变。NAT,是进行公有和私有技术的转换的,可以参加RFC1631.

目的地址 4字节 包含目的主机的地址。NAT情况下或者进行了松散或严格源路由选择,会出现修改该地址情况,其他时候产生数据报后就不变。

选项和填充(Option and Padding)以4字节为增量

IP 分片相关字段

IP数据报大于MTU的时候会出现分片来满足MTU大小,发生分片时,IP的有效载荷被分段,每段都有自己的IP头部,在目的主机收到分片后,按照IP头部信息组装成完整IP数据报。

在X.25和ATM这样的虚拟电路包交换技术中用的分割IP数据报和IP分片不一样。他们只是在数据链路层对发送的数据报进行分割。分片一样会在这样的链路中传输的时候一样会被分割。

image

IP头部中的标识,分片标志和片偏移共同完成分片功能。

  • 标识(flags) 用于将IP数据包中所有分片重组装。同一个包的所有分片此字段是相同的。发送主机可以修改标识字段的值,但这个值在分片过程中不被修改。分片标志 3个位中最高位设置0是保留位;中间位是不分片标志(DF),0表示允许分片,1表示禁止分片;最低位是更多片标志(MF),若在这次分片后没有更多分片(即最后一个分片),则MF位设置为0,若这个片后还有分片(即不是最后一片),则MF标志设置为1.
  • 片偏移 13位长,表示该片与原始IP数据报中的有效载荷的位置关系,即表明了每个分片相对于原始数据报的位置。
    片偏移的单位
    由IP头部总长度决定的IP有效载荷大小是65515字节(总长度减去最小IP头部长度),如果片偏移单位是1的话就需要16位的,而片偏移只有13位的值最大是8191。所以片偏移每个字段的每个值必须代表3位。因此,片偏移字段被定义成8字节一块,叫做分片块
  • 分片特点
    分片时原始头部被复制下来,下列字段被修改
    头长度  是否改变根据是否有IP选项和这些选项是否复制到所有分片或者仅仅第一个分片来决定,
    TTL  每次减少1,复制原始头部后减少1,所以每个分片的TTL是一样的
    总长度  反映新的IP头和IP有效载荷的大小
    MF  第一个和中间的 分片设为1,最后一个分片设为0
    片偏移  每次修改对应的相对位置
    头部校验  根据改变重新计算

例子,

总长度4482字节,MTU 1500字节。如果没有IP选项,有效载荷最大1480字节,1480=185 x 8,所以片值以185位增量增加。第一片的片偏移是0,第二片是185

image

  • 重组
    分片到达目的主机的顺序可能不一样,IP根据标志(flags)和源IP地址来重组分片。
    接收到一个分片后(不必是第一个分片),IP分配如下重组资源:
    1.一个包含IP有效载荷的数据缓冲区(65515字节)
    2.一个包含IP头的头部缓冲区(60字节)
    3.一个分区块位表(1024字节或8192字节)
    4.一个总长度数据变量
    5.一个定时器
    如果MF或者片偏移非0,IP知道到达的是分片。IP分配重组资源。
    当片偏移是0且MF=1的分片到达时,IP知道是第一个分片,将它的头部被放入头部缓冲区。
    当最后一个到达(MF字段为0)总长度可以计算出来。

    对于每个到达的分片,IP根据偏移值和总长度字段(分片的总长度字段)把数据插入缓冲区,分片相应的位可以在分片块位表里设置。当最后一个分片到达(不一定是MF=0的最后一片)就组装完成。然后IP根据协议字段将组装后的数据报交给对应的协议处理。
    重组装定时器  指定重组装该数据报的时间,如果超时后还有分片没有到达,则丢弃该IP数据报,而且目的主机会产生一个“ICMP 超时—分片时间超时”的消息给源主机。RFC791规定的是15秒,具体的系统要看如何实现。当分片到达,重组定时器设定当前最大值和到达分片的TTL字段值。通过将分片的TTL值设为15,在有分片超时时,IP按照处理TTL时间耗尽丢弃的原则处理。
  • 分片的分片
    分片被进一步拆分是可能,
    如果第一个和中间的分片拆分,所有分片MF都设置1,最后一个分片拆分,除最后一个分片的分片设置0外,其他都设置1.
    所以不管怎么拆分原始IP数据报的分片中只会有一个分片MF=0,以表示这是最后一个分片。
  • 避免分片
    虽然允许分片,但是在IP分片和重组时都耗费资源所以不鼓励分片的产生。
    避免方法
    1.将DF设置为1,强制不分片,但这方法不是很好,当遇到IP数据报大于MTU时就会丢弃数据报
    2.发送IP数据报时,将大小控制在PMTU内,即控制在路径MTU内。这样不会大于所经过链路上的所有MTU了,也就不会产生分片了。

Ping –f destination 可以设置ping的ICMP包的DF位为1,默认为0

IP选项(IP Options)

IP头部最大60字节,标准的是20字节,选项40字节。

每个IP选项的第一个字节格式

image

  • 拷贝(Copy) 1位长,0表示必须拷贝到第一个分片中,1表示IP选项必须拷贝到所有分片字段中。
  • 选项类别(Option Class) 2 位长,表示这个选项的一般类别。0表示网络控制,1表示保留给将来用,2表示测试和调试,3.保留给将来使用。
  • 选项编号(Option Number)
    选项类别 选项编号 描述
    0 0 选项列表结束 表示选项列表结束的1字节选项
    0 1 无操作 表示选项列表的字节排列的1个字节长的选项
    0 2 Security.  Used to carry Security,Compartmentation, User Group (TCC), 
    and Handling Restriction Codes compatible with DOD requirements.
    0 3 松散源路由 用于指定的路径对数据进行路由(可以进行路由选择),可变长度
    0 7 记录路由  用于跟踪IP Internet网络中路由的可变长度
    0 8 Stream ID.  Used to carry the stream identifier.
    0 9 严格源路由  用于指定的路径对数据进行路由(不可以进行路由选择),可变长度
    0 20 Ip路由报警 用于告诉路由器数据报需要特效处理的固定长度选项
    2 4 Internet时间戳 用于每一跳记录一系列时间戳的可变选项
  •  选项列表结束 
    选项列表结束长度只有一个字节,值为0,在选项不足4字节时表示IP选项的结束。在所有IP选项的末尾使用,而不是在每个选项之后使用。
  • 无操作
    一字节长,值为1,在一个IP选项不足4字节一组时用于2个选项之间。
  • 记录路由
    image 
    记录路由这个选项的长度可变,用于在穿越IP互联网时记录IP路由器远端接口的IP地址。就是指路由器转发数据报道那个接口。
    记录路由选项包含以下字段:
    1.选项编码 设为7(拷贝位0,选项类0,选项编码7)
    2.选项长度  由发送主机设置为记录路由选项中的字节数
    3.下一槽指针(Next Slot Pointer) 在下一个可用IP地址记录路由选项里设置以8位为单位的直接便宜量(从1开始),该字段最小值是4
    4.第1 IP地址、第2 IP地址  设置路由器远端接口的IP地址。由于IP头部长度决定,所以最大可以记录9个IP地址。
    处理过程:
    在主机必须同意处理记录路由选项的处理,否则将忽略该选项。路由器收到带有路由选项的数据报,比较选项的长度字段和下一插槽指针数值大小来判断是否用完选项字段,如果小就打开IP地址字段记录路由IP地址,更新下一插槽指针字段,使其增加4.

    由于该选项字段不是4的整数倍,所以会按照添加无操作选项或者选项结束的选项要求来达到4的整数倍的要求。

Ping -r 可以设置 ping的路由记录选项

这里要注意tracert 命令的原理不是使用路由记录选项。

  • 严格和松散路由选项
    严格路由选项就是在源处指定数据报到达目的地经过的IP路由器,并严格按照指定的地址进行路由,路由器不得更改,路由不了就会丢弃。

    松散路由选择也是在源处指定数据报到达目的地经过的IP路由器,但在具体过程中允许路由器进行路由选择。

    严格路由选项字段
    1.选项编号 设为137(拷贝位=1,选项类=0,选项号=9)
    2.选项长度   发送主机设置选项中的字节数
    下一槽指针和IP地址与记录路由选项类似路由记录选项

    松散选路路由字段
    1.选项编号 设为131(拷贝=1,选项类=0,选项号=3)
    2.其他字段和严格路由一样。
  • IP路由器警报
    向IP路由器指示必要的附加处理,甚至在IP数据报不是发给该路由器也会出现该行为。该选项用于RSVP和IGMP版本2。例如,当路由器收到带该选项的数据报时,转发前要查看IP有效载荷是否需要做额外处理。RFC2113描述了这个选项
    字段说明
    1.选项编码 设为148(copy=1,选项类=0,选项编码=20)
    2.选项长度  设为4字节的固定长度
    3.值  一个设为0的2字节字段。所有其他值被保留,0表示路由器必须检查数据报
  • Internet时间戳 
    image  
    使用此选项必须要路径中所有路由器都支持处理该选项。用于记录IP数据报到达经过路径中每个路由器的时间,每个条目由路由器的IP地址和32位的整型时间戳组成,这个时间戳表示 从午夜开始的毫秒数。

    字段说明
    1.选项编码 设为68(copy=0,class=2,选项编码=4)
    2.选项长度
    3.下一槽指针
    4.溢出(overflow) 由路由器设置,表示不能记录他们的IP地址和时间戳的路由器的数目。
    5.标志(flags) 发送主机设置,记录时间戳的格式。0,IP地址被忽略,允许记录9个时间戳,;1,允许记录IP地址/时间戳对为4个;3,发送节点指定后继路由器的IP地址:只有在槽中的IP地址和路由器的IP地址匹配时时间戳才被记录
    6.IP地址/时间戳

    处理过程
    1.发送主机完成的任务:把下一槽指针字段设置为5;标志为3时,指定路由设置需要记录时间戳的一系列的IP地址
    2.接收数据包的路由器,收到标志3的数据报,用设置的下一跳地址取代IP头部的地址;标志为1或3,记录IP地址,这个地址是收到数据报接口的地址;另外根据标志参数的设置记录IP地址和时间戳,并修改指针。
    3.如果指针远大于选项长度,则路由器增加溢出字段,如果溢出字段在增加前是15则产生ICMP参数问题的报错。

Ping -s slots destination 设置Internet时间戳参数

例子:

Ping -s 3 10.1.1.1  带3个插槽的时间戳。

6. IP地址分配简介

IP v4地址格式4字节,每个字节用点分开的。

  • IP头部中的IP地址
    1.源地址一般是单播地址或特殊地址0.0.0.0,没有配置IP的主机获取DHCP配置时发送的第一个数据包用的源地址就是0.0.0.0
    2.目的地址,单播,多播或者广播地址
  • 单播地址
    单播地址是分配给网络节点的网络地址,包含了网络ID和主机ID
    1.网络ID,也称网络地址,指分类网络ID、子网ID和无分类网络ID。一般我们用网络ID来分割逻辑网段,大多数情况等同于物理网段。
    2.主机ID,标识网络的一个节点。

在一个IP地址中,我们如何区分出哪部分是网络ID,哪部分是主机ID?

我们靠子网掩码来区分出网络ID和子网ID的。子网掩码是一种子网分割技术,与IP地址一样也是4字节长度,每字节间用点区分。如果该位与网络ID相对应设为1,与主机ID对应就设为0.

分类网络里A类子网掩码255.0.0.0,B类是255.255.0.0,C类是255.255.255.0;无类网络是由设计人员设计的网络掩码来分割子网。

  • 分类网络的地址范围
    wps_clip_image-8926
    A类地址,网络范围从1.0.0.0到126.0.0.0
    地址范围是从1.0.0.1到126.255.255.254,子网掩码255.0.0.0,一个A类网络容纳16777214台主机。
    B类地址,网络范围从128.0.0.0到191.255.0.0
    地址范围从128.0.0.1到191.255.255.254,子网掩码255.255.0.0,一个B类网络容纳的主机数是65534
    C类地址,网络范围从192.0.0.0到223.255.255.0
    地址范围192.0.0.1到223.255.255.254,子网掩码是255.255.2255.0.0,一个C类网络容纳的主机数是254
  • 公共地址
    需要连接到Internet的主机需要一个公共地址,而且这个地址不能出现重叠,现在有InterNIC来分配公共地址,保证全球惟一性。一般需要上网ISP运营商会动态或者静态分配给你一个公共地址,一般来说静态的地址是要多花些银子的。
  • 私有地址
    一般我们在局域网里使用私有地址。在3个地址块空间里都定义了私有地址:
    1.A类网络里的10.0.0.0/8 ,拥有24个主机位的私有网络。可以用子网分割技术分割。
    2.B类网络的172.16.0.0/12 拥有20个主机位的地址空间,16个B类网络ID从172.16.0.0/16到172.31.0.0/16
    3.C类网络的192.168.0.0/16 256个C类网络地址从192.168.0.0到192.168.255.254

关于地址分配的更详细的信息可以查看RFC1918

  • APIPA
    Windows 计算机在不配置IP地址或者网络没有DHCP的情况下会使用自动私有IP地址分配(APIPA)从169.254.0.0/16的地址空间中挑选一个IP地址,这个地址是IANA组织保留了自己用的,Internet上不可达。所以在Windows网络中即使联网所有计算机都不手动指定或者自动从dhcp服务器获取地址他们之间还是可以通信的,就是靠APIPA技术。
  • 广播地址
    有4种不同类型的广播地址:网络广播、子网广播、全子网定向广播和限制广播。
    网络广播:IP网络广播地址就是将分类地址中的所有主机位置为1.例如分类网络ID131.107.0.0/16的网络广播地址是131.107.255.255.IP 路由不转发网络广播包。
    子网广播:将无分类地址的所有主机置为1.无分类网络ID131.107.26.0/24的网络广播地址为131.107.26.255,对于无类的网络来说只有子网广播地址,没有网络广播地址。
    全子网定向广播:随着无类网络的使用,全子网定向广播不再使用,这里只是提到下。
    限制广播:将IP地址的32位均置为1(255.255.255.255),当某个IP节点需要进行本地网上的点到多点的传送而不知道网络ID时,可使用限制广播地址。所有主机都监听和处理限制广播,路由器不转发。

Windows 下列注册表控制此选项

UseZeroBroadcast

Location:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters|InterfaceGUID

Data Type:REG_DWORD

Valid range:0—1

Default value:0

Present by default:yes

UseZeroBroadcast 决定限制广播地址是0.0.0.0(设为1),还是255.255.255.255(设为0)。默认是0.

  • 多播地址
    范围224.0.0.0到239.255.255.255,224.0.0.0/24(224.0.0.0到224.0.0.255)范围内的多播IP是为本地子网预留的。

完全列表:www.iana.org/assignments/multicast-addresses

Windows Server 2003 预留的部分地址

多播IP地址

目的

224.0.0.1

全主机多播地址,可以到达子网上所有主机

224.0.0.2

全路由多播地址,到达子网上所有路由器

224.0.0.5

到达子网所有OSPF路由器

224.0.0.6

到达子网所有DR OSPF路由器

224.0.0.9

Rip v2,到达子网上所有RIP v2的路由器

  • IP多播地址到MAC地址的映射
    由前面MAC地址的定义我们了解到第一字节最低位是1,另外在IP多播MAC的高25是固定的00000001 00000000 01011110 0, 最低23位从IP地址的低23位复制过来。多播MAC地址范围0x01-00-5E-00-00-00到0x01-00-5E-7F-FF-FF。
    IP地址高9位中的高4为是固定的1110,剩下5位是可变的,所以会出现不同的IP多播地址对应一个多播MAC地址,32对1的关系。

你可能感兴趣的:(补点基础知识)