网络层协议介绍

本文详细介绍了网络层的IP数据包格式,包括IP版本、首部长度、优先级和服务类型等字段,以及ICMP协议的作用和基本使用。同时,深入探讨了ARP协议的工作原理,包括ARP通讯协议过程、ARP欺骗的单向和双向欺骗区别。
摘要由CSDN通过智能技术生成

第五章:网络层协议介绍

本章结构

  • IP数据包格式

  • ICMP协议介绍

  • ARP协议介绍

  • ARP攻击原理

网络层的功能

定义了基于IP协议的逻辑地址

连接不同的媒介类型

选择数据通过网络的最佳路径

IP数据包格式

在这里插入图片描述

**1、版本:**该字段包含的是IP的版本号,4bit。目前IP的版本为4(即IPv4)

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

**3、优先级与服务类型:**该字段用于表示数据包的优先级和服务类型,8bit。通过在数据包中划分一定的优先级,类似百度云的vip下载加速。

**4、总长度:**该字段用于表示整个IP数据包的长度,16bit。最长为65535字节,包括包头和数据。

**5、标识符:**该字段用于表示IP数据包的标识符,16bit。当IP对上层数据分片时,它将给所有的分片分配一组编号,然后将这些编号放入标识符字段中,保证分片时不会被错误重组

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

**7、段偏移量:**该字段用于1表示段偏移量,13bit。段偏移量当中包含的信息是指在一个分片序列中如何将各分片重新连接起来。

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

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

**10、首部检验和:**该字段用于表示校验和,16bit。接收方和网关用来校验数据有没有被改动过。

(主要)**11、源IP地址:**表示数据包的源地址,32bit

**12、目标IP地址:**表示数据包的目的地址,32bit

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

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

  • ICMP是一个“错误侦测与回馈机制”

  • 通过IP数据包封装的

  • 用来发送错误和控制消息

ICMP协议的功能主要有:

  1. 确认IP包是否成功到达目标地址
    2. 通知在发送过程中IP包被丢弃的原因

我们需要注意几点:
1.ICMP是基于IP协议工作的,但是它并不是传输层的功能,因此仍然把它归结为网络层协议

  1. ICMP只能搭配IPv4使用,如果是IPv6的情况下, 需要是用ICMPv6

在这里插入图片描述

ICMP采用“错误侦测与回馈机制”,通过IP数据包封装,用来发送错误和控制消息。
其目的是为了让管理员能掌握网络的连通情况,数据要有去又回才能证明网络是正常的
例:路由器收到一个不能被送达目的的数据包时,就会向源主机发送一个目的不可达的ICMP消息;
因为数据传过去了但没能回来显示超时

ICMP属于网络层协议,传输ICMP信息时,需先封装网络层的IP头部,再交给数据链路层,即ICMP报文对应IP层的数据

ICMP的基本使用

ping用来测试网络联络性

在网络中,ICMP协议的使用是靠各种命令来实现的。下面以ping命令为例,介绍ping命令的使用以及返回的信息。
ping命令的基本格式如下:

在这里插入图片描述

windows系统中ping命令常用选项:
-t 参数会一直不停的执行ping
-a 参数可以显示主机名称
-l 参数可以设定ping包的大小 在Linux系统下为:-s
-n 指定发送包的个数 -c
-s 指定源IP去ping -i

跟踪路由路劲命令:
WIN: tracert IP/域名

Linux: traceroute IP/域名

ARP的协议介绍及工作原理

** 在局域网中,交换机通过MAC地址进行通信。但是要获得目的主机的MAC地址,就需要使用ARP协议将目的IP地址解析成MAC地址。即ARP(地址解析协议)的基本功能就是负责将一个已知的IP地址解析成MAC地址,以便在交换机上通过MAC地址进行通信**

假设有主机PC1要和主机PC2进行第一次通信,这时需要知道PC2的MAC地址,访问之前要询问PC2的IP地址对应的MAC地址是什么,这时就需要通过ARP广播实现
(1)首先PC1想要发送信息给PC2,它会首先检查自己的ARP缓存表(ARP缓存表是主机存储在内存中的一个IP地址和MAC地址对应表),如果目标MAC地址不在表中,发送一个广播,目的地址为MAC广播地址(FF-FF-FF-FF-FF-FF)的MAC地址广播帧,在ARP请求信息中包括PC1的IP地址和MAC地址以及PC2的IP地址
(2)交换机收到广播地址后,发现是MAC地址广播,就将数据帧转发出去,这时也学习记录了PC1的MAC地址
别的主机接收到数据帧后,会进行IP地址的比较,如果不同就丢包,只有PC2会接收,并在自己的APR表中存储PC1的IP地址和MAC地址的对应关系,并同时应答,来告诉自己的MAC地址。转发到交换机,交换机又是一轮学习和记录PC2的MAC地址并转回给PC1(这时开始就是单播了,因为PC2知道了PC1的IP地址,可以先单向传播)
(3)PC1接收到回复的数据帧后,就在自己的APR表中记录PC2的MAC地址
在这个过程中,交换机学习到了PC1和PC2的MAC地址,所以之后传播时PC1和PC2之间就是单播通信

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

Windows系统中ARP的命令
arp -a 查看ARP缓存表

arp -d [IP] 清除ARP缓存

arp -s IP MAC ARP静态绑定

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

一、ARP通讯协议过程

由于局域网的网络流通不是根据IP地址进行,而是按照MAC地址进行传输、计算机是根据mac来识别一台机器。

区域网内A要向主机B发送报文,会查询本地的ARP缓存表,找到B的IP地址对应的MAC地址后,就会进行数据传输。如果未找到,则A广播一个ARP请求报文(携带主机B的IP地址),网上所有主机包括B都收到ARP请求,但只有主机B识别自己的IP地址,于是向A主机发回一个ARP响应报文。其中就包含有B的MAC地址,A接收到B的应答后,就会更新本地的ARP缓存。接着使用这个MAC地址发送数据(由网卡附加MAC地址)。

二、一次完整的ARP欺骗

ARP 欺骗分为两种,一种是双向欺骗,一种是单向欺骗:

1.单向欺骗

A的地址为:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA

B的地址为:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB

C的地址为:IP:192.168.10.3 MAC: CC-CC-CC-CC-CC-CC

A和C之间进行通讯.但是此时B向A发送一个自己伪造的ARP应答,而这个应答中的数据为发送方IP地址是192.168.10.3(C的IP地址),MAC地址是BB-BB-BB-BB-BB-BB(C的MAC地址本来应该是CC-CC-CC-CC-CC-CC,这里被伪造了)。当A接收到B伪造的ARP应答,就会更新本地的ARP缓存(A被欺骗了),这时B就伪装成C了。同时,B同样向C发送一个ARP应答,应答包中发送方IP地址四192.168.10.1(A的IP地址),MAC地址是BB-BB-BB-BB-BB-BB(A的MAC地址本来应该是AA-AA-AA-AA-AA-AA),当C收到B伪造的ARP应答,也会更新本地ARP缓存(C也被欺骗了),这时B就伪装成了A。这样主机A和C都被主机B欺骗,A和C之间通讯的数据都经过了B。主机B完全可以知道他们之间说的什么:)。这就是典型的ARP欺骗过程。

掐断c与A 的通讯,实现原理和第一条一样,如果和第一条一起发,那么A 和c 的通讯就完全中断了,即:A – -- c.

嗅探A 与c 的通讯,实现原理:b 向A 发送一条ARP 数据包,内容为:c的地址是AA:BB:CC:DD:EE:FF (b自己的地址),也就是说,b 对 A 说:我才是c,于是A 把向c发送的数据都发给b 了,b得到数据后就可以为所欲为了,可以直接丢弃,那么通讯中断,也可以再次转发给c,那么又形成回路,B当了个中间人,监视A 和c 的通讯.此时你就可以用CAIN等任何抓包工具进行本地嗅探了.

2.ARP双向欺骗原理

A要跟C正常通讯,B向A说我是才C。B向C说我才是A,那么这样的情况下把A跟C的ARP缓存表全部修改了。以后通讯过程就是 A把数据发送给B,B在发送给C,C把数据发送B,B在把数据给A。

攻击主机发送ARP应答包给被攻击主机和网关,它们分别修改其ARP缓存表为, 修改的全是攻击主机的MAC地址,这样它们之间数据都被攻击主机截获。

三、双向欺骗与单向欺骗的区别

单向欺骗:是指欺骗网关,分别有三个机器 A(网关) B(server) C(server) 。A要跟C正常通讯。B给A说我才是C,那么A就把数据就给C了,此时A就把原本给C的数据给了B了,A修改了本地的缓存表,但是C跟A的通讯还是正常的。只是A跟C的通讯不正常。

双向欺骗:是欺骗网关跟被攻击的两个机器,A(网关) B(server) C(server),A要跟C正常通讯.B对A说我是C,B对C说我是A,那么这样的情况下A跟C的ARP缓存表全部修改了,发送的数据全部发送到B那里去了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值