TCP.IP课程实验报告
tcpip实验报告

网络协议分析实验一、实验目的通过使用协议分析软件,对通信系统的通信过程进行监控、分析,以了解通信协议的工作过程。
二、实验内容利用协议分析软件(如:Wireshark)跟踪局域网报文(如条件允许也可跟踪多种局域网协议报文),实验内容如下:将安装协议分析软件的PC接入以太网中,跟踪PC之间的报文,并存入文件以备重新查。
设置过滤器过滤网络报文以检测特定数据流。
利用协议分析软件的统计工具显示网络报文的各种统计信息。
三、实验步骤1、在PC中安装协议分析软件(如:Wireshark)。
具体安装过程详见附录:Wireshark用户指南。
2、启动Wireshark协议分析软件,选择抓包菜单项启动实时监视器,开始实时跟踪显示网络数据报文。
可根据系统提示修改显示方式,详见附录:Wireshark用户指南。
3、调出跟踪存储的历史报文,选择有代表性的ETHERNET,IEEE802.3,IP,ICMP,TCP,UDP报文,对照有关协议逐个分析报文各字段的含义及内容。
EHERNET报文格式IEEE802.3报文格式IP报文格式4、设置过滤器属性,如目的地址,源地址,协议类型等。
如过滤不需要的网络报文,过滤器允许设置第二层,第三层或第四层的协议字段。
过滤器有两种工作方式:1)捕获前过滤:协议分析软件用过滤器匹配网络上的数据报文,仅当匹配通过时才捕获报文。
2)捕获后过滤:协议分析软件捕获所有报文,但仅显示匹配符合过滤条件的报文。
选择统计菜单项可以显示网络中各种流量的统计信息,如:关于字节数,广播中报文数,出错数等。
UDP 客户/服务器实验一、实验目的本实验目的是使用因特网提供的UDP 传输协议,实现一个简单的UDP 客户/服务器程序,以了解传输层所提供的UDP 服务的特点,应用层和传输层之间的软件接口风格,熟悉socket 机制和UDP 客户端/服务器方式程序的结构。
二、实验内容本实验为UDP 客户/服务器实验。
实验内容:UDP echo 客户/服务器程序的设计与实现。
TCP(IP)组网技术实验报告模板5个

郑州轻工业学院TCP/IP组网技术实验报告学生姓名:宋苗苗专业班级: 3G软件13-02班学号: 541313140237 指导教师: 程立辉实验时间: 2016年4月21日至2016年6月9日成绩:目录实验一配置动态路由RIP (3)实验二配置静态路由 (7)实验三 Cisco VTP (13)试验四 PPP数据链路层协议 (21)实验五 Cisco EIGRP内部网关路由协议 (25)题目一配置动态路由RIP 一:实验目的1.了解掌握动态路由的相关知识;2.掌握了解RIP协议相关知识及应用;3.掌握如何用RIP协议实现动态路由的配置。
二:实验拓扑配置前拓扑图:配置后拓扑图:三:实验过程3.1路由器的基本配置3.1.1 路由器Router0的基本配置3.1.2 路由器Router1的基本配置3.1.3 路由器Router2的基本配置3.2 RIP路由协议配置3.2.1 路由器Router0的RIP路由协议配置3.2.2 路由器Router1的RIP路由协议配置3.2.3 路由器Router2的RIP路由协议配置3.3 RIP路由协议启用第二版3.4配置PC端的IP地址,如下:3.5 查看各路由器的路由表信息3.5.1 查看Router0路由表信息3.5.2 查看Router1路由表信息四:实验结果使用ping检查计算机不同网段互通情况五:实验总结通过本次实验,我了解了配置动态路由器方法和相关配置命令;掌握了路由器的RIP协议的配置方法;理解路由器连接不同类型网络的原理,而且在配置过程在需要特别注意各个路由器之间的连通性,确保其的正常联通。
遇到问题:动态路由器配置过程中对于网络IP的互通问题不是很清楚,通过查找资料,最终实现了动态路由配置。
题目二配置静态路由一:实验目的1.了解掌握静态路由的相关知识;2.掌握了解静态路由通信原理;3.掌握如何用实现静态路由的配置。
二:实验拓扑配置前拓扑图:配置后拓扑图:三:实验过程3.1路由器的基本配置3.1.1Router0的基本配置3.1.2 Router1的基本配置3.1.3 Router2的基本配置3.2为每个路由器配置静态路由3.2.1为路由器Router0配置到路由器Router1通信的静态路由3.2.2配置路由器Router1配置到路由器Router0的返回路径其余配置同上。
tcpip实验报告

实验一Linux内核通用链表的使用一、实验目的学习Linux内核通用链表的设计原理,熟练掌握Linux内核通用链表的使用。
二、实验内容1、掌握Linux通用链表的创建2、掌握通用链表添加元素、删除元素和遍历链表的方法3、掌握通用链表的查找方法三、实现原理Linux的内核源文件list.h提供了所有的链表定义,以及各类链表的操作接口和实现。
其中创建链表的方法如下:LIST_HEAD(my_list);在指定的head后插入新节点,常用于堆栈数据结构的实现list_add(structlist_head *new, structlist_head *head);在指定的head前插入新节点,常用于队列数据结构的实现list_add_tail(structlist_head *new, structlist_head *head);从链表中删除一个指定节点list_del(structlist_head *entry);根据当前链表节点指针ptr获得宿主节点指针list_entry(ptr, type, member);遍历链表list_for_each(pos, head);四、实现代码和运行结果#include <stdio.h>#include <malloc.h>#include "list.h"struct user{int id;structlist_head list;};int main(void){struct user *p;LIST_HEAD(user_queue);for (inti = 0; i< 10; i++){p = (struct user *)malloc(sizeof(struct user));p->id = i;list_add_tail(&p->list, &user_queue);}structlist_head *q;list_for_each(q, &user_queue){p = list_entry(q, struct user, list);printf("%d\n", p->id);}return 0;}#include <stdio.h>#include <malloc.h>#include "list.h"struct user{char username[20];int id;structlist_head list;};int main(void){struct user *p;LIST_HEAD(head);for (inti; i< 10; i++){p = (struct user *)malloc(sizeof(struct user)); p->id = i + 1;printf("user %2d, Please input username: ", i+1); scanf("%s", p->username);list_add_tail(&(p->list), &head);}structlist_head *tmp;list_for_each(tmp, &head){p = list_entry(tmp, struct user, list);printf("%d\t%s\n", p->id, p->username);}list_for_each(tmp, &head){p = list_entry(tmp, struct user, list);if (p->id == 5)printf("%s\n", p->username);}return 0;}实验二Linux内核通用哈希链表的使用一、实验目的学习Linux内核通用哈希链表的设计原理,熟练掌握Linux内核通用哈希链表的使用。
TCPIP实验报告

(5)从Analyze菜单中选择“ Follow TCP Stream”,显示整个数据流。
Response: 250 Directorychanged to /
9
pwd
Response: 257 "/" is current directory.
表3-2
序号
客户端->服务器
服务器->客户端
1
Response: 220 Serv-U FTP Server v6.0 for WinSock ready...
有:If-Modified-Since: Fri,13 May 2011 01:41:12
GMT\r\n
10.服务器对第二个HTTP GET请求的响应消息中的HTTP状态代码是多少?服务器是否明确返回了文件的内容?请解释。
304 没有 通过状态码来对应操作文件命令 进而找到文件
11.你的浏览器一共发出了多少个HTTP GET请求?
实验四DNS实验
一.实验目的
1.熟悉并掌握WireShark的基本操作,了解网络协议实体间的交互以及报文交换。
2.分析DNS协议
二.实验内容
借助于网络分析议WireShark捕获HTTP、TCP、DNS报文, 分析DNS报文头结构,理解其具体意义。
实验内容1:在浏览器的地址栏中输入:
需要回答的问题
1.定位到DNS查询消息和查询响应报文,这两种报文的发送是基于2.UDP还是基于TCP的?
tcpip实验报告二(排错工具ping和trace)

电子科技大学实验报告学生姓名:学号:指导教师:日期:年月日实验项目名称:报告评分:教师签字:一、实验原理“PING”这个名字源于声纳定位操作。
PING程序的目的是测试另一台主机是否可达,它发送ICMP回送请求报文给被测主机,并等待返回的ICMP回送应答或差错报告报文。
ICMP协议(RFC 792)是IP协议的辅助协议,提供差错报告和查询机制。
一台主机的可达性不仅取决于IP层是否可达,还取决于使用的高层协议及端口号。
仅当被测主机可达时,PING程序才能收到返回的ICMP回送应答报文,并能测出到该主机的往返时间。
如果被测主机不可达,PING程序会收到一些ICMP差错报告报文,甚至收不到任何返回信息。
根据ICMP差错报告报文的类型可粗略判定主机不可达的原因。
不同的物理网络具有不同的最大传送单元(MTU)值,因此可能需要对IP分组进行分片操作使其能够通过这些物理网络。
当IP分组被分片时,需要修改分组头中的标志、分片偏移和总长度值,其余各字段将被复制到所有分片中。
已经分片的IP分组在遇到具有更小MTU的网络时还会被再次分片。
TTL字段是由发送端初始设置在IP分组首部中的一个8 bit字段,不同操作系统上的不同应用程序指定的TTL初始值不同。
路由器在转发每个IP分组时需要将该分组的TTL值减1或减去该分组在路由器中停留的秒数。
由于大多数路由器转发IP分组的时延都小于1秒钟,因此TTL最终成为一个跳站计数器,即分组每经过一台路由器其TTL值被减1。
TTL字段的目的是为了防止分组在选路时被无休止的转发。
当路由器收到一份需转发的IP分组时,如果该分组的TTL值为1,路由器则丢弃该分组,并向分组源发送一份ICMP的TTL超时报文。
TRACE程序使用IP分组首部的TTL字段(生存时间)和ICMP报文,让使用者可以看到IP分组从一台主机传到另一台主机所经过的路由。
TRACE程序首先发送一份TTL值为1的IP分组给目的主机,处理该IP分组的第1个路由器即会返回一份以自己的IP地址为源的携带有ICMP超时报文的IP分组,这样TRACE程序就得到了该路径中第1个路由器的IP地址。
TCP IP实验报告

《TCP/IP协议》实验报告学院:机械与电子信息学院专业:计算机网络技术学号:姓名:指导教师:2018年 6 月实验一Packet Tracer 6.0的使用一、实验目的通过在Packet Tracer 6.0 添加网络设备,熟悉不同的物理设备及其连接方式,掌握使用Packet Tracer 6.0构建网络的方法,掌握捕获、查看通信信息的方法。
二、实验步骤步骤1、打开Packet Tracer 6.0,添加以下网络节点:1841路由器3台,2950-24 交换机1台,PC三台,服务器1台。
步骤2、选择合适的连接线把设备连接起来。
以太网连线时,交换机与计算机或路由器等设备之间连接用直通线,交叉线用于同种设备(路由器与路由器,交换机与交换机)之间相连或计算机与路由器之间相连。
用直通线吧PC0、PC1、Router0与Switch0的任意端口连接,Router0、Router1和Router2之间需要用交叉线连接,Server0与Router2也要用交叉线连接。
如果连线类型正确,则PC与交换机之间连线上的绿灯马上会点亮。
特别的,为配置路由器,可以用控制台连线把PC2和Router1的Console 端口连接起来,也可以连接到Router1的Auxiliary端口上,但使用方法与连接到控制口时不同。
步骤3、配置设备。
PC的配置可以直接在Packet Tracer 6.0的逻辑拓补图上单击PC图标,打开设备配置窗口,单击Desktop选项卡中的IP Configuration,完成默认网关和ID地址的设置。
依次设置3台PC和服务器0的IP地址,PC0和PC1的默认网关设为192.168.1.1,服务器0的默认网关设为192.168.4.1。
单击需要配置的路由器图标,打开设备配置窗口,单击CLI选项卡,按Enter键出现命令行提示符,然后使用如下命令配置静态路由。
Router>enable #进入特权模式Router#configure terminal #全局配置Router(config)#int f0/0 #配置接口f0/0 Router(config-if)#no shutdown #开启接口Router(config-if)#ip address 192.168.1.1 255.255.255.0随着借口no shutdown 命令的输入,接口连线上的绿灯随时变亮。
实验三 TCPIP网络配置及连通性测试实验

实验三TCP/IP网络配置及连通性测试实验一、实验目的1.理解TCP/IP,掌握IP地址的两种配置方式。
2.掌握IP网络连通性测试方法。
二、实验相关理论接入Internet中的每一台计算机都必须有一个唯一的IP地址,IP地址的配置有指定和自动获取两种方式。
IP地址由网络地址和网内主机地址组成,同一网络中的主机可以直接通信,不同网络中的主机则需要通过三层交换设备或路由器才能通信。
三、实验内容:1.指定IP地址,验证同一网络和不同网络中主机的连通性。
2.自动获取IP地址,验证连通网络主机的连通性。
3.指定IP地址,同时安装IPX协议,验证同一网络和不同网络中主机的连通性。
四、实验步骤(一)指定IP地址,连通网络1.察看网络组件是否完整,若无则添加。
2.删除除TCP/IP/协议以外的其它协议。
3.设置IP地址在保留专用IP地址范围中(192.168.x.y),任选IP地址指定给主机,选取原则是:x 为实验分组中的组别码,y值是1~254之间的任意数值。
注意:同一实验分组的主机IP地址的网络ID应相同,主机ID应不同,子网掩码需相同。
4.标识计算机在“系统属性”对话框中,单击“计算机名”,将显示“计算机名”与“工作组”名。
同一实验组的计算机应有相同的“工作组”和不同的“计算机名”。
5.测试网络连通性(1)用PING命令PING127.0.0.1,检测本机网卡连通性,记录并分析显示结果。
(2)用PING命令PING localhost,观察、记录显示结果,并与(1)中的结果进行对比。
(3)用PING命令PING <主机名>,这里的主机名是第(2)步运行结果中显示的主机名,观察、记录显示结果。
(4)用PING命令PING <网关>,运行结果中显示的主机名,观察、记录显示结果。
(5)用PING命令PING <外网>,运行结果中显示的主机名,观察、记录显示结果。
思考与前面观察内容的不同之处。
实验二TCP_IP实用程序的使用实验报告资料

实验二TCP_IP实用程序的使用实验报告资料《TCP/IP实用程序的使用》实验报告计科12112171105景元合2015.5.19TCP/IP实用程序的使用一、实验目的1.使用Ping实用程序来测试计算机上的TCP/IP配置及测试本计算机与计算机的连接性能,确保可以在网络上通信;2.使用Hostname实用程序来标识计算机的名称;3.使用Ipconfig实用程序来验证计算机上的TCP/IP配置选项,包括MAC地址、IP地址、子网掩码和缺省网关等多项配置信息;4.考察操作系统为Windows2000的计算机的TCP/IP配置。
二、实验设备及仪器联网计算机一台三、TCP/IP实用程序原理TCP/IP协议组包括许多实用程序,它们允许用户访问网络上的信息。
Microsoft的TCP/IP协议组提供了基本的TCP/IP实用程序,允许运行windows2000的计算机访问网络上广泛的信息。
Windows2000包括三种类型的基于TCP/IP的实用程序:诊断工具、连接工具和基于服务器的软件。
诊断实用程序包括Arp,Hostname,Ipcogfig,Ping,Tracfert等。
1. 诊断实用程序:诊断实用程序允许用户检测和解决网络中的问题。
一些通用的诊断实用程序包括:Arp:该实用程序显示和修改地址解析协议(ARP)缓存。
Hostname:该实用程序显示计算机的名称。
Ipconfig:该实用程序显示和更新当前TCP/IP配置,包括IP地址。
Ping:该实用程序验证配置、测试两台计算机之间的IP连接。
Ping从源计算机上发送ICMP 请求,目的计算机用一个ICMP回答作为回应。
Tracert:该实用程序跟踪数据包到达目的地的路径。
2. 通用实用程序示例:Hostname、Ipconfig和Ping是三个通用的TCP/IP实用程序。
因为经常使用它们,因此应掌握它们的使用。
Hostname:使用该实用程序的语法为hostname。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TCP/IP协议族分析课程设计目录第一章TCP/IP 概述 (3)1.1 TCP/IP协议族定义 (3)1.2 TCP/IP协议族的特点 (3)1.3 TCP/IP协议族的分层 (3)1.4 TCP/IP协议族的结构 (4)第二章地址解析协议(ARP)——链路层 (5)2.1 ARP概述 (6)2.2 ARP的组成 (6)2.3 ARP工作原理 (7)2.4 ARP帧结构 (7)第三章因特网控制消息协议(ICMP)——网络层 (13)3.1 ICMP协议简介 (13)3.2 ICMP消息结构 (14)3.3 Echo Request和Echo Reply查询消息 (14)3.4 ICMP各字段分析 (15)第四章传输控制协议(TCP)——运输层 (18)4.1 TCP协议简介 (18)4.2 TCP数据包结构 (19)4.3 TCP数据包分析 (20)4.4 TCP三次“握手” (25)第五章普通文件传输协议(TFTP)——应用层 (27)5.1 TFTP数据传输模式 (27)5.2 TFTP会话实例 (28)总结 (31)参考文献 (31)第一章 TCP/IP 协议族概述1.1 TCP/IP协议族定义TCP/IP协议族是指一整套数据通信协议, 其名字是由这些协议中的两个协议组成的,即传输控制协议(Transmission Control Protocol ——TCP)和网间协议(Internet Protocol——IP)。
虽然还有很多其他协议,但是TCP和IP显然是两个最重要的协议。
1.2 TCP/IP协议族的特点TCP/IP协议族有一些重要的特点,以确保在特定的时刻能满足一种重要的需求,即世界范围内的数据通信。
其特点包括:●开放式协议标准。
可免费使用,且与具体的计算机硬件或操作系统无关。
由于它受到如此广泛的支持,因而即使不通过Internet 通信,利用TCP/IP来统一不同的硬件和软件也是很理想的。
●与物理网络硬件无关。
这就允许TCP/IP可以将很多不同类型的网络集成在一起,它可以适用于以太网、令牌环网、拨号线、X.25网络以及任何其它类型的物理传输介质。
●通用的寻址方案。
该方案允许任何TCP/IP设备唯一的寻址整个网络中的任何其他设备,该网络甚至可以像全球Internet那样大。
●各种标准化的高级协议。
可广泛而持续地提供多种用户服务。
1.3 TCP/IP协议族的分层图1-1 TCP/IP协议族中不同层次的协议1.3.1. 链路层有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。
它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
1.3.2. 网络层有时也称作互连网层,处理分组在网络中的活动,例如分组的路由选择。
在TCP/IP协议族组件中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互连网控制报文协议),以及IGMP协议(Internet组管理协议)。
1.3.3. 运输层主要为两台主机上的应用程序提供端到端的通信。
在TCP/IP协议族组件中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。
TCP为两台主机提供高可靠性的数据通信。
它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。
由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。
而另一方面,UDP则为应用层提供一种非常简单的服务。
它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。
任何必需的可靠性必须由应用层来提供。
这两种运输层协议分别在不同的应用程序中有不同的用途。
1.3.4. 应用层负责处理特定的应用程序细节。
几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序:●Telnet:远程登录。
●FTP:文件传输协议。
●SMTP:用于电子邮件的简单邮件传输协议。
●SNMP:简单网络管理协议。
●TFTP:普通文件传输协议1.4 TCP/IP协议族的结构在描述TCP/IP时,一般只定义如图1-2所示的4层模型:应用层、主机对主机传输层(即运输层)、网间层和网络访问层(即链路层)。
图1-2 TCP/IP 协议族结构中的各层在TCP 的应用层中,将数据称为“数据流(stream )”;而在用户数据报协议(UDP )的应用层中,则将数据称为 “报文(message )”。
TCP 将它的数据结构称作“段(segment )”。
而UDP 将它的数据结构称作“分组(packet )”,网间层则将所有数据看作是一个块,称为“数据报(datagram )”。
TCP/IP 使用很多种不同类型的底层网络,每一种都用不同的术语定义它传输的数据,大多数网络将传输的数据称为“分组”或“帧(frame )”。
图1-3 数据结构第二章 地址解析协议(ARP )——链路层由于不同层和驻留于这些层上的地址的复杂性,因此必须有一种解析不同的计算机编址策略间差异的方法。
地址解析就起了这样的作用,并且使得端设备可以动态地找到本地的硬件地址以便向远端主机传输数据,或者取得必要的逻辑IP 地址和配置参数以便加入到网络。
如果没有某种类型的地址解析方法,远端主机间就不能通信。
在IP 界,地址解析指的是将一个协议地址转换成一个相应的物理地址或反之,例如将一个IP地址转换成一个以太网地址。
可以用四种地址解析的方法:●ARP(地址解析协议)●RARP(反向地址解析协议)●BOOTP(引导协议)●DHCP(动态主机配置协议)在这四种地址解析协议中,ARP是唯一的一个将网络层地址解析为硬件地址的协议,而RARP、BOOTP和DHCP协议则都是允许一个端设备可以动态地将其硬件地址解析为网络层的逻辑地址。
图2-1 ARP将网络层的逻辑地址解析为本地的硬件地址2.1 ARP概述ARP是像以太网和令牌环这样的访问共享、基于广播的网络技术所使用的协议。
该协议将节点的转发IP地址解析成对应的MAC(Media Access Control——媒介访问控制)地址。
MAC地址也称为物理地址、硬件地址或网卡地址。
解析后的MAC地址成为以太网或令牌环报头中的目标MAC地址,IP数据报在媒介上发送时寻到该地址。
ARP将因特网层地址(IP地址)解析成网络接口层地址(MAC地址)。
转发IP地址不必与IP数据报的目标IP地址相同,每个发出的IP数据报经路由处理后都变成一个接口和转发IP地址。
对于直接在同一子网上传送的目标节点,转发IP地址是数据报的目标IP地址。
对于间接传送到远程目标节点,转发IP地址是转发主机所在子网上的路由器的IP地址。
IP独立于任何特定的网络接口层技术。
因此,从转发的IP地址判断不出目的地的网络接口层地址。
例如,以太网和令牌环MAC地址的长度是6字节,IP地址的长度是4字节。
MAC地址在网卡的制造过程中就已分配好了,而IP地址是由网络管理员分配的。
对某个具体的IP节点而言,这两种地址的指定方式之间没有任何关系,因此不可能从一个地址判断出另一个地址。
ARP是一种基于广播的请求答复协议,提供了将正在转发的IP地址映射为它们相应的MAC地址的动态解析能力。
2.2 ARP的组成ARP主要由下面两类信息组成:●转发节点使用ARP请求信息请求某个转发IP的地址的MAC地址。
ARP请求信息是一个MAC级广播帧,旨在到达发送ARP请求信息的接口所连接的物理网段上的所有节点。
发送ARP请求信息的节点称为ARP请求端。
●用ARP答复信息答复ARP请求端。
IP地址与ARP请求信息所请求的IP地址相同的节点发送ARP答复信息。
ARP答复信息是一个单播的MAC帧,发送到ARP请求端的目标MAC地址。
发送ARP答复信息的节点称为ARP答复端。
由于ARP请求信息是一个MAC级广播包,所有要被解析的转发IP地址都必须能直接从发送ARP请求信息的接口到达(位于同一个子网上)。
对于正确的路由表项始终都是这样。
如果一个路由表项包含的转发IP地址无效,从接口无法直接到达该地址,ARP将不能解析这个转发的IP地址。
同一广播域内的所有节点都收到ARP请求信息。
广播域是传播广播帧的网络的一部分。
集线器、网桥以及Layer 2交换机传播ARP请求信息。
但是,IP路由器或Layer 3交换机不传播ARP帧。
2.3 ARP工作原理ARP协议主要负责把IP地址转换成网卡硬件地址。
ARP完成的这个任务过程是:发送一个广播,这个广播包含了一个指定的IP地址,要求正在使用这个IP地址的主机响应它的硬件地址。
使用这个IP的主机侦听到这个广播(局域网中其他的设备也会侦听到),就会给源端反馈一个ARP响应。
这个响应不再是网络上的广播,而是直接发送给那个发出请求的主机。
ARP包直接与数据链路层通信,这和IP包是一样的,但是ARP包和IP包是完全独立的,ARP协议ID是0806,而IP使用的是0800,ARP和IP都是直接位于数据链路层的上层,在数据链路层中有个TYPE字段,指明上层协议的类型,ARP为0x0806,IP为0x0800.ARP包含几个字段,但是其中只有5个字段是用来提供ARP的整体功能:源端的硬件地址,源端的IP地址,目标的硬件地址,目标的IP地址和一个“消息类型”字段,这个消息类型字段用来表明当前ARP包是一个请求还是对请求的一个响应。
当一个设备发送ARP请求时,它要填充4个与地址相关的字段中的3个,即提供自身的硬件地址和IP地址,还提供目标的IP地址(因为目标的硬件地址是不知道的,所以这个字段填充为0)。
另外,它会设置消息类型字段来表明当前包是一个ARP包,在局域网上广播这个请求,使得所有设备都能侦听到。
一旦主机侦听到针对自己的请求(在ARP请求的IP地址字段中表明),就生成一个响应报文并反馈给请求主机。
响应报文包含本地设备的IP 地址和硬件地址,还包含源发送系统的IP地址和硬件地址,这个响应报文会通过消息类型字段来表明当前的报文是一个ARP响应报文,新的ARP响应报文不再是广播发送,会直接传输给源端请求者。
2.4 ARP帧结构图2-2 广域网技术的ARP帧结构ARP报文由9个字段组成,包的总大小根据本地网络媒介上使用的网络地址的大小变表2-1 ARP报文中的字段根据上面的字段,下面用实际截获的ARP报文来逐个分析ARP报文中的字段。
2.4.1. 硬件类型(Hardware Type)一个2字节的字段,指出数据链路层所使用的硬件类型。
表2-2列出了一些常用的ARP 硬件类型值。
一收到ARP帧,IP节点就验证ARP帧的硬件类型是否与接收该ARP帧的接口的硬件类型相匹配。
如果不匹配,帧就被默默地扔掉。