(目录

一、网络层简介

1、网络层功能

1、定义了基于IP协议的逻辑地址 2、选择数据通过网络的最佳路径 3、连接不同的媒介类型

2、IP数据包头格式

e489b63468d227c3bc3e690641381df.jpg

  • 版本(Version):该字段包含的是IP 的版本号,4bit。目前IP 的版本为4(即IPv4),该版本形成于20世纪80年代早期,现在无论是在局域网还是在广域网中,使用的都是IPv4。目前IPv4面临的最大问题是IP地址空间不足,即将使用的IPv6是IP协议的下一个版本,但也不能解决IP地址缺乏的问题。
  • 首部长度(Header Length):该字段用于表示IP数据包头长度,4bit。IP数据包头最短为20字节,但是其长度是可变的,具体长度取决于可选项字段的长度。 优先级与服务类型(Priority & Type of Service):该字段用于表示数据包的优先级和服务类型,8bit。通过在数据包中划分一定的优先级,用于实现Qos(服务质量)的要求。
  • 总长度(Total Length):该字段用以指示整个IP数据包的长度,16bit。最长为65535字节,包括包头和数据。
  • 标识符(Identification):该字段用于表示IP数据包的标识符,16bit。当IP对上层数据进行分片时,它将给所有的分片分配同一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误地重组。标识符字段用于标识一个数据包,以便接收节点可以重组被分片的数据包。
  • 标志(Flags):标志字段,3bit。对当前的包不能进行分片(当该包从一个以太网发送到另一个以太网时),或当一个包被分片后用以指示在一系列的分片中,最后一个分片是否已发出。
  • 段偏移量(Fragment Offset):该字段用于表示段偏移量,13bit。段偏移量中包含的信息是指在一个分片序列中如何将各分片重新连接起来。
  • TTL(Time to Live):该字段用于表示IP数据包的生命周期,8bit。TTL值的意义是一个数据包在被抛弃前在网络中可以经历的最大周转时间。一个数据包每经过一个路由器,TTL将减去1。当TTL的值为0时,该数据包将被丢弃。可以防止一个数据包在网络中无限循环地转发下去。
  • 协议号(Protocol):协议字段,8bit。该字段用以指示在IP数据包中封装的是哪一个协议,是TCP还是UDP,TCP的协议号为6,UDP的协议号为17。
  • 首部校验和(Header Checksum):该字段用于表示校验和,16bit。接收方和网关用来校验数据有没有被改动过。校检和是16位的错误检测字段。目的主机和网络中的每个网关都要重新计算包头的校检和,就如同源主机做的一样。如果数据没有被改动过,两个计算结果应该是一样的。
  • 源IP地址(Source IP Address):该字段用于表示数据包的源地址,32bit。这是一个网络地址,指的是发送该数据包的设备的网络地址。
  • 目标IP地址(Destination IP Address):该字段用于表示数据包的目的地址,32bit。这也是一个网络地址,但指的是发送该数据包的设备的网络地址。
  • 可选项(Options):可选项字段根据实际情况可变长,可以和IP一起使用的选项有多个。例如,可以输入创建该数据包的时间等。在可选须之后,就是上层数据。

二、ICMP协议

1、ICMP协议功能(Internet控制消息协议)

  • ICMP是一个“错误侦测与回馈机制”
  • 通过IP数据包封装
  • 用来发送错误和控制消息

2、ICMP协议的封装

ICMP属于网络层协议 下面是ICMP的封装过程 d304e3d4dcd447e07dfa8fa1f8f61e0.jpg

3、ICMP的基本使用(Ping)

  • Ping命令的基本格式 C:>ping[-t][-1字节数][-a][-i]IP_Address|target_name
  • Windows系统中Ping命令的常用参数
参数 作用
-t 参数会一直不停的执行Ping
-a 参数可以显示主机名称(对方隐藏主机名称,则显示不出来)
-l 参数可以设定Ping包的大小
-n 指定发送包的个数
-s 指定源IP去Ping

在Linux系统下的Ping命令参数

参数 左右
-s 参数可以设定Ping包的大小
-c 指定发送包的个数
-I(大写) 指定源IP去Ping

4、跟踪路由路径命令

Win:tracert IP/域名 Linux:traceroute IP/域名

三、ARP协议

1、广播和广播域

广播:将广播地址作为目的地址的数据帧 广播域:网络中能接收到同一个广播的所有节点的集合 广播地址:FF-FF-FF-FF-FF-FF

2、ARP协议概述

ARP(Address Resolution Protocol,地址解析协议)的基本功能是负责将一个已知的IP地址解析成MAC地址。

3、ARP工作原理

d26b430219a6d55e969cf8a088cd84c.png 1)PC1发送数据给PC2,会先检查自己的ARP缓存表。 2)如果要查的MAC地址不在ARP缓存表里,ARP就会发送广播,用于找到目的地的MAC地址。ARP请求里包括PC1的IP地址和MAC地址以及PC2的IP地址和MAC地址(此时为广播地址FF-FF-FF-FF-FF-FF) 3)交换机收到广播后做泛洪处理,对除PC1外的所有主机发送ARP请求消息,PC3和PC4收到信息,对照IP地址,发现不是自己后,丢弃这个ARP请求信息;PC2收到,发现是自己的信息,就以单播的形式发送ARP应答,(告诉PC1自己的MAC地址)并在自己的ARP表中缓存PC1的IP地址和MAC地址的对应关系。 4)PC2的ARP应答到PC1上后,PC1在自己的ARP表中添加PC2的IP地址和MAC地址的对应关系,之后,PC1和PC2就以单播的形式通信。

4、Windows系统中的ARP命令

命令 功能
arp -a 查看ARP缓存表
arp -d [IP] 清理ARP缓存
arp -s IP MAC ARP 静态绑定
netsh interface ipv4 show neighbors或者netsh i i show in 查看网卡接口序号/Idx
netsh interface ipv4 set neighbors<接口序号> 静态绑定
netsh -c i i delete neighbors ’ Idx" 解除静态绑定

动态学习到的ARP的老化时间是120秒;静态绑定的ARP条目需要计算机关机或重启后才会消失


华为系统中的ARP命令: [Huawei]dis mac-address 查看MAC地址信息 [Huawei]arp static <IP> <MAC> 绑定ARP [Huawei]undo arp static <IP> <MAC> 解绑定 [Huawei]reset arp all 清除mac地址表

四、ARP攻击和ARP欺骗

1、ARP攻击

ARP攻击的主要目的是是网络无法正常通信 1359482032682417fabb3a20cc083c3.png (1)直接攻击主机 这里PC4要让PC1网络无法正常通信,那么PC4就会制造假的ARP应答,发送给PC1。在这个ARP应答中包含了PC2、PC3、PC4和网关的IP地址以及虚假的MAC地址。 (2)攻击网关 这次ARP攻击不直接攻击PC1,这次攻击PC2、PC3、PC4和网关,将制造的虚假ARP应答发给除PC1以外的主机。这个ARP应答中包括被攻击主机的IP地址和虚假的MAC地址。

2、ARP欺骗

ARP欺骗不像ARP攻击,使主机无法与网络正常通信,而是冒充网关或主机,骗取流量,侵犯他人隐私或机密。 (1)ARP欺骗网关 4cc3ab44e5a3df311b59ef7249d1176.png

PC2想获取PC1的数据:首先PC2发送ARP应答(包括网关的IP地址和PC2的MAC地址)给PC1,并且发送ARP应答(包含PC1的IP地址和PC2的MAC地址)给网关,等PC1和网关收到ARP应答更新ARP表或,这样就同时欺骗了PC1和网关,PC1想访问Internet,就要先发给PC2,由PC2发给网关,访问Internet,返回数据也要从网关到PC2之后才能到PC1 (2)ARP欺骗主机 42e530d6b1f8c037cdb424d8522ff4c.png

PC3发送ARP应答(包括PC2的IP 地址和PC3的MAC地址)给PC1,并发送ARP应答(包括PC1的IP地址和PC3的MAC地址)给PC2。当局域网中的PC2和PC1收到ARP应答后,更新ARP表,PC1和PC2的流量都需要经过PC3了。