链路层:ARP和RARP命令arp -a/tcpdump -en

ARP是在以太网上面运用的一种IP地址到硬件地址映射的协议

1 ARP流程

列如 ftp bsdi 假定bsdi在以太网上

DNS解析器解析主机名字>>FTP发送请求端请求TCP用得到的IP地址建立链接>>TCP发送一个链接请求分段到远端的主机,利用上诉的IP地址发送一份IP数据报>>因为是以太网,发送端主机将32bitIP地址变化为48bit的以太网地址(这就是ARP的功能)>>发送一份ARP请求,以太网上有次地址的发送ARP应答>> 发起端再收到ARP应答时IP数据就可以发送了

注意!!点对点链路不使用ARP机制

2:ARP报文格式


以太网目的地址(6个字节)|以太网源地址(6个字节)|帧类型(0x0806代表ARP,2个字节)|硬件类型(以太网地址MAC地址)|协议类型(IP地址)|硬件地址长度(长度以字节为单位,ARP中代表MAC地址,数值为6,6个字节为48bit)| 协议地址长度(IP地址长度 数值为4,32bit)|op(操作字段,当arp得到一个值的时候就应该更改op字段为2)|发送段以太网地址(6个字节)|发送端IP地址

(4个字节)|目的以太网地址(6个字节)|目的IP地址(4个字节)

蓝色部分为以太网首部

绿色部分为ARP请求或者应答链路层协议以及常用命令介绍netstat1.1.2小节


3:代理ARP

当一个局域网的某台主机想要发送一份数据包,此时就应该经过某台服务器,这台服务器接口的
MAC就是代理ARP的地址,因为此MAC地址欺骗了主机将信息发送到了路由器上(根据链路层硬件地址)

在gemini上执行arp -a

可以看到net(140.252.1.183) at 0:80:ad:3:6a:80

                sun(140.252.1.29) at  0:80:ad:3:6a:80

这证明了点对点链路之间不存在链路层中的以太网或者802.1数据报(只有这两种需要mac地址)

4:免费ARP,是在引导的时候查看有没有和自己相同mac地址的接口,如果有则进行日至报错

5:RARP逆地址解析协议

主要运用在无盘操作系统的引导上。知道了一个MAC地址,但是没有IP地址,请求网络上的主机给自己一个IP地址

tcpdump -e host name//命令详解//对链路层的抓包

14:26:31(是时间).092078(ID号码) 58:44:98:f8:a0:0c (oui Unknown) (MAC地址,oui是未知设备)> (表示发送方向)

0c:8b:fd:34:db:86 (oui Unknown), ethertype IPv4 (0x0800)(链路层数据报的种类), length 54(数据报长度是54): 112.83.122.49.http 

> SmilieLion.34570: Flags [.], ack 1079(希望smile发送的下一个ack值), win 434(窗口大小是434), length 0(代表数据,减掉了各种包头,差值54)


tcpdump -e[n]//加入n就不将ip地址改为主机名


14:09:18.493852 0c:8b:fd:34:db:86 (oui Unknown) > 58:44:98:f8:a0:0c (oui Unknown), ethertype ARP (0x0806),

 length 42: Reply SmilieLion is-at 0c:8b:fd:34:db:86 (oui Unknown), length 28(与上诉协议对照查看)


5:arp -a 查询自己缓存中的ARP地址








posted @ 2016-09-12 09:01  SmileLion_LY  阅读(3024)  评论(0编辑  收藏  举报