[toc]
ARP协议:通过IP地址知晓MAC地址
要先再网络层知道对方的MAC地址,再传到数据链路层中进行封装——ARP协议(Address Resolution Protocol),通过IP地址知晓MAC地址
ARP目的
ARP(Address Resolution Protocol)地址解析协议,实现通过对方的IP地址(域名)寻找对方的MAC地址的功能
ARP协议工作流程
- 主机A首先查看自己的ARP表,如果找到了的主机B的MAC地址,则直接对IP数据包进行帧封装,发送给主机B;
- 如果主机A在ARP表中找不到主机B的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中带上源IP地址和源MAC地址(主机A);目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。进行广播,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机)会对该请求进行处理。
- 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将 ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
- 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。
Wireshark抓包理解ARP协议
arp -a命令查看ARP表:静态即是可以自行配置的,动态的就是通过ARP协议学习到的

arp -d命令清空ARP表

此时再访问1中出现的动态类型的IP地址,就要先通过ARP协议先进行学习,此过程可以通过Wireshark抓取ARP数据包
本地物理地址和IP地址

ping 某个ARP表中没有的IP地址 ping 192.168.1.103,由于此时ARP表没有此条目,则会通过ARP协议广播ARP请求报文来获取此IP的MAC地址

Wireshark进行抓包
Wireshark选择当前上网的无线网卡进行抓包并过滤arp报文

查看ARP请求数据包

查看ARP响应数据包


通过以上的一来一回,本机就得到了目的IP的MAC地址,重新查看ARP表可以看到新增ARP条目

IP协议
IP协议和IP地址
IP(Internet Protocol)
定义
分配给用户上网使用网际协议的设备的数字标签
分类
IPv4:32位二进制数——→点分十进制表示
IPv6:128位二进制数——→十六进制表示 弥补IPv4地址池不够
IP地址组成
IP地址由32bit组成,分成4段用” . ”分隔,如:192.168.0.1
结构:IP地址 = 网络号(网络号标识的是一个子网) + 主机号(主机号标识的是子网中的某台主机)
确定网络号和主机号
确定主机是否在同一个子网?只有在同一个子网(在一个网段)的主机才能直接通信,网络号相同 == 同一个子网
仅仅通过192.168.0.1无法判断哪些位是网络号,哪些位是主机号——子网掩码
子网掩码
作用
用来标识子网,必须跟IP地址一起存在
组成
子网掩码跟P地址一样,也是由连续的1和0组成,连续的1表示网络地址,连 续的表示主机地址。只有网络地址相同的主机在同一个子网,才能直接通信。
表示方式
255.255.255.0,或者/24.
二进制:11111111.11111111.11111111.00000000
前面的3个255标识网络号,后面的0标识主机号
示例
示例1
192.168.1.87 255.255.255.0 —机器1
192.168.2.77 255.255.255.0 —机器2
以上二者能否直接通信?也即是否是在同一个子网?
答:不能。二者不再同一个子网下(分别是192.168.1.0和192.168.2.0),无法进行直接通信
示例2
192.168.1.87 255.255.0.0 —机器1
192.168.2.77 255.255.0.0 —机器2
以上二者能否直接通信?也即是否是在同一个子网?
答:可以。二者在同一个子网下(俊文192.168.0.0),可以进行直接通信
路由协议及路由表
当参与通信的两台主机不再同一个子网下,要进行通信时需要通过路由协议选择最优路径——→路由协议实现不同网段(子网)之间的通信以及通信时的路径选择
路由协议
定义
路由协议(Routing Protocol)指定数据包转送方式的网上协议(是一组协议并非一个)
分类
静态路由:
对于目的地址,直接指定下一跳的地址;
默认路由(主机—默认网关)是一种特殊的静态路由,对于不同子网的所有通过本机(192168.1.106)的内容都要通过192.168.1.1这个默认网关,由它决定向哪里去转发

动态路由
(RIP ,OSPF,BGP)配置之后,动态学习路由条目——路由表
路由表
查看路由表 route print









