TCP/Socket学习----ARP数据报格式
来源:互联网 发布:2017网络歌曲 编辑:程序博客网 时间:2024/06/05 16:29
TCP/Socket学习(亚嵌网络版图书)
ARP数据报格式
ARP的作用:
在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的
主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议,如果接收到的
数据包的硬件地址和本机的不符则直接丢弃。因此在通讯前必须获得目的主机的硬
件地址。
ARP协议就起到这样的一个作用,即在通讯前获取目的主机的硬件地址???
ARP的工作原理:
源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少“,并将
这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示
广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个
ARP应答数据包给源主机,将自己的硬件地址填写到应答包里。
ARP缓存表:
每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间
(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发
请求ARP。
图36.7ARP数据报格式
看图分析:
以太网首部:
有三部分组成
以太网目的地址 6byte
以太网源地址 6byte
帧类型 2byte
数据报主体:
28字节的ARP请求/应答组成:
硬件类型 2byte
协议类型 2byte
硬件地址长度 1byte
协议地址长度 1byte
op 2byte(op是什么???)
发送端以太网地址 6byte(发送端的MAC地址)
发送端IP地址 4byte
目的以太网地址 6byte(想要得到的目的MAC地址)
目的IP地址 4byte
注意:硬件类型指链路层网络类型,1为以太网
协议类型指的是哟转换的地址类型,0x0800为IP地址
op字段为1表示ARP请求,2表示ARP应答
举例:
下面举一个具体的例子。
请求帧如下(为了清晰在每行的前面加了字节计数,每行16个字节):
以太网首部(14字节)
0000: ff ff ff ff ff ff 00 05 5d 61 58 a8 08 06
ARP帧(28字节)
0000: 00 01
0010: 08 00 06 04 00 01 00 05 5d 61 58 a8 c0 a8 00 37
0020: 00 00 00 00 00 00 c0 a8 00 02
填充位(18字节)
0020: 00 77 31 d2 50 10
0030: fd 78 41 d3 00 00 00 00 00 00 00 00
以太网首部:目的主机采用广播地址,源主机的MAC地址是00:05:5d:61:58:a8,上层协议类型0x0806表示ARP。
ARP帧:硬件类型0x0001表示以太网,协议类型0x0800表示IP协议,硬件地址(MAC地址)长度为6,协议地址
(IP地址)长度为4(此处本文上面说的有些不符,需要斟酌,上面讲这两个长度都为1个字节),op为0x0001
表示请求目的主机的MAC地址,源主机MAC地址为00:05:5d:61:58:a8,源主机
IP地址为c0 a8 00 37(192.168.0.55),目的主机MAC地址全0待填写,目的主机IP地址为c0 a8 00 02(192.168.0.2)。
由于以太网规定最小数据长度为46字节,ARP帧长度只有28字节,因此有18字节填充位,填充位的内容没有定义,与具体实现相关。
应答帧如下:
以太网首部
0000: 00 05 5d 61 58 a8 00 05 5d a1 b8 40 08 06
ARP帧
0000: 00 01
0010: 08 00 06 04 00 02 00 05 5d a1 b8 40 c0 a8 00 02
0020: 00 05 5d 61 58 a8 c0 a8 00 37
填充位
0020: 00 77 31 d2 50 10
0030: fd 78 41 d3 00 00 00 00 00 00 00 00
以太网首部:目的主机的MAC地址是00:05:5d:61:58:a8,源主机的MAC地址是00:05:5d:a1:b8:40,上层协议类型0x0806表示ARP。
ARP帧:硬件类型0x0001表示以太网,协议类型0x0800表示IP协议,硬件地址(MAC地址)长度为6,协议地址(IP地址)长度为4,
op为0x0002表示应答,源主机MAC地址为00:05:5d:a1:b8:40,源主机IP地址为c0 a8 00 02(192.168.0.2),目的主机MAC地址为00:05:5d:61:58:a8,
目的主机IP地址为c0 a8 00 37(192.168.0.55)
- TCP/Socket学习----ARP数据报格式
- ARP数据报格式
- ARP数据报传送格式
- TCP/IP学习----IP数据报格式
- TCP/IP数据报格式
- TCP/IP数据报格式
- TCP/IP数据报格式
- TCP/IP数据报格式
- TCP/IP数据报格式
- TCP数据报帧格式
- TCP/IP数据报格式分析
- TCP/IP数据报格式分析
- TCP/IP数据报格式分析
- TCP/IP数据报格式分析
- TCP/IP数据报格式分析
- 【网络编程】TCP数据报格式
- 以太网及IP数据报,tcp数据报格式分析
- ARP协议数据报
- HDU 2036 多边形的面积
- 用django创建一个简单的sns
- 在使用apt-get安装报错:To continue type in the phrase 'Yes, do as I say!' ?] 解决方法
- Ubuntu 配置DNS
- NUnit中文说明文档
- TCP/Socket学习----ARP数据报格式
- UVA 11021 - Tribles
- mysql 优化中的几个重要参数
- HDU 4642 多校四-1011
- Effective Java 中文第二版
- fsadfdsafsfdsfsaf3dsfdsfadfsafds
- ldd命令及动态库加载
- Linux_ALSA声卡驱动原理分析
- SGU 113. Nearly prime numbers 素数