(目录)

网络层协议

网络层的功能

  • 定义了基于IP协议的逻辑地址
  • 连接不同的媒介类型
  • 选择数据通过网络的最佳路径(路由器)

IP数据包格式

协议字段

版本(4)首部长度(4)优先级与服务类型(8)总长度(16) 标识符(16)标志(3)段偏移量(13) TTL(8)协议号(8)首部校验和(16) 源地址(32) 目标地址(32)(至此共20个字节) 可选项
数据

具体解读
  • 版本(Version)4bit :该字段包含的是IP的版本号。目前IP的版本是4(IPv4)。

  • 首部长度(Header Length)4bit :该字段用于表示IP数据包头长度。IP数据包头最短为20字节,但是其长度是可变的,具体长度取决于可选项字段的长度。

  • 优先级与服务类型(Priority & Type of Service)8bit :该字段用于表示数据包的优先级和服务类型。通过在数据包中划分一定的优先级,用于实现QoS(服务质量)的要求。

  • 总长度(Total Length)16bit :该字段用以指示整个IP数据包的长度。最长为65535字节,包括包头和数据。

  • 标识符(Idenfication)16bit:该字段用于表示IP数据包的标识符,当IP对上层数据进行分片时,它将给所有的分片分配同一组编号,然后将这些编号放入标识符字段中,保证分片不归被错误地重组。

    路由器将一个包拆分后,所有拆分开的小包被标记相同的值,以便目的端设备能够区分哪个包属于被拆分开的包的一部分。

  • 标志(Flags)3bit:标志字段,对当前的包不能进行分片(当该包从一个以太网发送到另一个以太网时),或当一个包被分片后用以指示在一系列的分片中,最后一个分片是否已发出。

  • 段偏移量(Fragment Offset)13bit:该字段用于表示段偏移量。段偏移量中包含的信息是指在一个分片序列中如何将个分片连接起来。

  • TTL(Time to Live)8bit:该字段用于表示IP数据包的生命周期。一个数据包每经过一个路由器,TTL将减去1。当TTL的值为0时,该数据包脚被丢弃。可以防止一个数据包在网络中无线循环的转发下去。

  • 协议号(Protocol)8bit:协议字段。该字段用以指示在IP数据包中封装的是哪一个协议,是TCP还是UDP,TCP的协议号为6,UDP的协议号为17。

  • 首部校验和(Header Checksum)16bit:该字段用于表示校验和。接收方和网关用来检验数据有没有被改动过。

  • 源IP地址(Source IP Address)32bit:该字段用于表示数据包的源地址。

  • 目标IP地址(Destination IP Address)32bit:该字段用于表示数据包的目的地址。

  • 可选项(Options):可选项字段根据实际情况可变长,可以和IP一起使用的选项有多个。例如,可以输入创建该数据包的时间等。在可选项之后,就是上层数据。

ICMP协议介绍

ICMP协议(Internet控制报文协议)

  • ICMP是一个“错误侦测与回馈机制”(主要检测网络连通性)
  • 通过IP数据包封装的
  • 用来发送错误和控制消息

ICMP协议的封装

  • ICMP头部 + ICMP数据
  • IP头部 + 上层数据(ICMP报文)
  • 帧头部 + 上层数据 + 帧尾部
    • ICMP协议属于网络层协议
    • ICMP数据的封装过程(帧头部尾部在数据链路层封装)

ping命令

  • 基本格式

     C: \>ping [-t][-l 字节数] [-a] [-i] IP_Address | target_name
    
  • ping命令的返回信息

    ping.png

  • windows系统中ping命令的常用选项

    -t 参数会一直不停的执行ping (直到输入 ctrl + C) ###linux内默认一直ping
    -a 参数可以显示主机名称
    -l 参数可以设定ping包的大小    ###在linux系统下为:-s
    -n 指定发送包的个数                              -c
    -S 指定源IP去ping                               -I
    

跟踪路由路径命令

```
WIN:    tracert IP/域名
Linux:  traceroute IP/域名
```

ARP协议介绍

广播与广播域

  • 广播:将广播(MAC)地址作为目的地址的数据帧

  • 广播域:网络中能接收到同一个广播的所有节点的集合(局域网,同一个网段)

  • 广播地址为FF-FF-FF-FF-FF-FF

  • 路由器可以物理分割广播域,VLAN逻辑分割

  • 只有在同一广播域(局域网)里的主机相互通信必须保证在同一网段里(可直接通过交换机通信)

    不同网段需要路由器转发

ARP协议概述

  • 局域网中主机的通信

    • IP地址(寻找主机)与MAC地址(锁定网卡)
  • 什么是ARP协议

    • Address Resolution Protocol,地址解析协议
    • 将一个一致的IP地址解析成MAC地址
  • IP地址解析为MAC地址

    • PC1发送数据给PC2,先查看ARP缓存表里面有没有PC2的MAC地址

    • PC1(广播泛洪)发送ARP请求消息

    • 所有主机收到ARP请求消息

      • PC2回复ARP应答(单播)
      • 其他主机丢弃
    • PC1将PC2的MAC地址保存到ARP缓存表中,发送数据

      1.PC1想发送数据给PC2,会先检查自己的ARP缓存表。

      2.如果发现要查找的的MAC地址不在表中,就会发送一个ARP请求广播,用于发现目的地的MAC地址ARP请求消息中包括PC1的IP地址和MAC地址以及PC2的IP地址和目的MAC地址(此时为广播MAC地址FF-FF-FF-FF-FF-FF)。

      3.交换机收到广播后做泛洪处理(记录下PC1的MAC地址),除PC1外所有主机收到ARP请求消息,PC2以单播方式发送ARP应答(交换机记录下PC2的MAC地址),并在自己的ARP表中缓存PC1的IP地址和MAC地址的对应关系,而其他之际则丢弃这个ARP请求消息。

      4.PC1在自己的ARP表中添加PC2的IP地址和MAC地址的地址关系,以单播方式与PC2通信.

    • windows系统中ARP命令

      arp -a         ###查看ARP缓存表
      arp -d [IP]    ###清除ARP缓存(需要管理员权限)
      arp -s IP MAC  ###ARP静态绑定
      

      如果提示ARP项添加失败,解决方案:

      • 用管理员模式

      • (1)netsh interface ipv4 show neighbors 或者 netsh i i show in <查看网卡接口号/Idx>

        (2)netsh interface ipv4 set neighbors <接口序号> <IP> <MAC>

      解除静态绑定

      netsh -c i i delete neighbors 'Idx'
      

      动态学习到的ARP的老化时间为120s,并且静态绑定的ARP条目在计算机关机或重启后会消失。

    • 华为系统中的ARP命令

      [Huawei]dis mac-address             ###查看mac地址信息
      [Huawei]arp static <IP> <MAC>       ###绑定ARP
      [Huawei]undo arp static <IP> <MAC>  ###解绑定
      <Huawei>reset arp all               ###清楚mac地址表