ARP数据报格式
C语言实现ARP攻击(附源码)
信息安全原理——ARP攻击班级:07计算机1班姓名:胡益铭学号:E07620112ARP原理:ARP,即地址解析协议,实现通过IP地址得知其物理地址。
在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。
为了让报文在物理网路上传送,必须知道对方目的主机的物理地址。
这样就存在把IP 地址变换成物理地址的地址转换问题。
以以太网环境为例,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为48位以太网的地址。
这就需要在互连层有一组服务将IP地址转换为相应物理地址,这组协议就是ARP协议。
ARP数据报格式如下:什么是ARP欺骗:其实,此起彼伏的瞬间掉线或大面积的断网大都是ARP欺骗在作怪。
ARP欺骗攻击已经成了破坏网吧经营的罪魁祸首,是网吧老板和网管员的心腹大患。
从影响网络连接通畅的方式来看,ARP欺骗分为二种,一种是对路由器ARP表的欺骗;另一种是对内网PC的网关欺骗。
第一种ARP欺骗的原理是——截获网关数据。
它通知路由器一系列错误的内网MAC地址,并按照一定的频率不断进行,使真实的地址信息无法通过更新保存在路由器中,结果路由器的所有数据只能发送给错误的MAC地址,造成正常PC无法收到信息。
第二种ARP欺骗的原理是——伪造网关。
它的原理是建立假网关,让被它欺骗的PC向假网关发数据,而不是通过正常的路由器途径上网。
在PC看来,就是上不了网了,“网络掉线了”。
本程序基于C语言,利用winpacp实现往局域网内发自定义的包,以达到ARP欺骗的目的。
首先从/archive/下载4.0beta1-WpdPack和4.0beta1-WinPcap.exe,版本很多,不过最新版本需要64位的系统,本人32位系统用不了。
直接点击4.0beta1-WinPcap.exe安装,然后在C:\Program Files\WinPcap下打开rpcapd.exe 服务。
帧格式及IP,TCP,UDP,ICMP报文格式
以太网数据格式与各种报文格式一、数据封装当我们应用程序用TCP传输数据的时候,数据被送入协议栈中,然后逐个通过每一层,知道最后到物理层数据转换成比特流,送入网络。
而再这个过程中,每一层都会对要发送的数据加一些首部信息。
整个过程如下图。
如图可以看出,每一层数据是由上一层数据+本层首部信息组成的,其中每一层的数据,称为本层的协议数据单元,即PDU.应用层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段),图示为TCP段传输层的数据(TCP段)传给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包); 图示为IP数据包网络层数据报(IP数据包)被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧),图示为以太网帧。
最后,帧被转换为比特,通过网络介质传输。
这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装。
二、数据格式需要注意的是,这里所说的以太网帧,与我们常说的以太网是不一样的。
下面我们就来介绍每一层数据的首部信息内容。
首先我们知道世界上有个协会叫作IEEE,即电子工程师协会,里面有个分会,叫作IEEE802委员会,是专门来制定局域网各种标准的。
而802下面还有个分部,叫作802.3.就是我们经常提到的IEEE802.3,这个部门制定的规范叫以太网规范,这个以太网规范中就定义了上面提到的“以太网首部”,这个以太网规范,实际只定义了数据链路层中的MAC层和物理层规范。
(注意数据链路层包括MAC子层和LLC子以太网帧格式:以太网常用帧格式有两种,一种是Ethernet II,另一种是IEEE 802.3 格式。
这两种格式区别是:Ethernet II中包含一个Type字段,。
其中Type字段描述了,以太网首部后面所跟数据包的类型,例如Type为0x8000时为IP协议包,Type为8060时,后面为ARP协议包。
以太网中多数数据帧使用的是Ethernet II帧格式。
ip,arp,icmp
在正常的情况下,一个网络接口应该只响 这样的两种数据帧:
1.与自己硬件地址相匹配的数据帧。 2.发向所有机器的广播数据帧。
数据的收发是由网卡来完成的
网卡接收到传输来的数据,网卡内的单片程 序接收数据帧的目的MAC地址,根据计算机上的 网卡驱动程序设置的接收模式判断该不该接收。 认为该接收就接收后产生中断信号通知CPU
IPv6数据报的格式 在IPv6的数据报中,最前面是一个基本报头,紧接着可以 有多个扩展,也可以没有,然后是数据区,见下图。或者说, 一个最小的IPv6数据报可以只含有基本头部和数据区。 基本头部 扩展头部1 „„. 扩展头部N 数据区
由于原来IPv4数据报报头的选项和其它一些固定字段被 移到了IPv6的扩展报头里,因此IPv6 基本报头中所含信息 要比IPv4少
ARP(地址解析协议)、RARP(反向地址解析协议) IP地址提供的是抽象地址;物理网络硬件并不知道 如何通过IP地址来定位一台计算机。 地址解析的含义 将IP地址与物理地址之间建立一个双向的映射关 系,称为地址解析(Address Resolution)。
地址解析(IP地址→物理地址) 在互联网中,IP及其以上各层所发出的数据都 要使用IP地址进行标识,而物理网络本身不认识IP 地址,故必须将IP地址映射成物理地址,才能将数 据发往目的地。这一过程就是正向地址解析。 反向地址解析:(物理地址→IP地址) 此映射主要用于网络中的无盘站,因为无盘站 的IP地址和其它各类文件都存放在服务器上,无盘 站本身只用到一个物理地址。通过RARP,使无盘站 能获取自己的IP地址。也只有无盘站才使用RARP。
第三章 IP、ARP、RARP
IP是英文Internet Protocol 的缩写IP是TCP/IP 协议族中最为核心的协议。所有的TCP、UDP、ICMP及 IGMP数据都以IP数据报格式传输。 各个厂家生产的网络系统和设备,如以太网、分 组交换网等,它们相互之间不能互通,不能互通的主 要原因是因为它们所传送数据的基本单元“帧”的格 式不同。IP协议实际上是一套由软件程序组成的协议 软件,它把各种不同“帧”统一转换成“IP数据包” 格式
编辑并发送ARP报文(同一子网)
实验原理:ARP报文格式下图为ARP数据报的报文格式:图2-1 ARP报文格式ARP报文格式具有如下的一些字段:●硬件类型:这是16位字段,用来定义运行ARP的网络的类型。
每一个局域网基于其类型被指派给一个整数。
例如,以太网的硬件类型是1。
ARP可用在任何网络上。
●协议类型:这是16位字段。
用来定义协议的类型。
例如,对IPv4协议,这个字段的值是0x0800。
ARP 可用于任何高层协议。
●硬件地址长度:这是一个8位字段,用来定义以字节为单位的物理地址长度。
例如,以太网物理地址为6字节,所对应的硬件地址长度值为6。
●协议地址长度:标识用于该数据包的逻辑地址的长度,用十进制标识,单位为一个字节,例如,IPv4为4个字节,所对应的协议地址长度值为4。
●操作码:这是16位字段,用来定义数据包的类型。
已定义了两种类型:为1时表示ARP请求,为2时表示ARP应答。
●发送端硬件地址:这是可变长度字段,用来定义发送端的物理地址。
对于以太网这个字段是6字节长。
●发送端逻辑地址:这是可变长度字段,用来定义发送端的逻辑地址。
对于逻辑地址为IP地址的网络,该字段长度为4字节。
●目的端硬件地址:这是可变长度字段,用来定义目标的物理地址。
对于ARP请求,字段是全0,因为发送端不知道目标的物理地址(该字段长度为可变,如以太网硬件地址为6个字节)。
●目的端逻辑地址:这是可变长度字段,用来定义目标的逻辑地址(该字段长度为可变,如IPv4协议的逻辑地址为4个字节)。
ARP封装ARP数据报直接封装在数据链路帧中。
例如,在下图中,ARP数据包封装在以太网的帧中。
类型字段值为0x0806指出了此帧所携带的数据是ARP数据包。
. ARP的运行过程)数据包传输过程可分为如下步骤:1. 发送端知道目的端的IP地址。
2. IP要求ARP创建一个ARP请求报文,其中包含了发送方的物理地址、发送方的IP地址和目的端的IP地址。
目的端的物理地址用0填充。
网络协议报文格式大集合
网络协议报文格式大集合1.HTTP报文格式:HTTP(超文本传输协议)是用于在Web上传输HTML、图片等资源的协议。
HTTP报文分为请求报文和响应报文。
请求报文包括请求行(方法、URI、协议版本)、请求头部(各种参数信息)、请求体(实体内容)。
响应报文包括状态行(协议版本、状态码、状态描述)、响应头部(各种参数信息)、响应体(实体内容)。
2.SMTP报文格式:SMTP(简单邮件传输协议)是用于在网络中传输电子邮件的协议。
SMTP报文分为命令报文和回应报文。
命令报文包括命令行(命令和参数)和命令数据。
回应报文包括状态码和状态描述。
3.FTP报文格式:FTP(文件传输协议)是用于在网络中传输文件的协议。
FTP报文分为命令报文和数据报文。
命令报文包括命令(用户认证、文件操作等)和参数。
数据报文用于传输文件内容。
4.DNS报文格式:DNS(域名系统)是用于将域名转换成IP地址的协议。
DNS报文分为查询报文和响应报文。
查询报文包括标识、查询类型、查询类等字段。
响应报文包括标识、响应类型、响应类等字段。
5.TCP报文格式:TCP(传输控制协议)是用于可靠传输数据的协议。
TCP报文分为报文头和数据部分。
报文头包括源端口号、目的端口号、序号、确认号等字段。
6.UDP报文格式:UDP(用户数据报协议)是用于不可靠传输数据的协议。
UDP报文分为报文头和数据部分。
报文头包括源端口号、目的端口号、长度、校验和等字段。
7.IP报文格式:IP(网际协议)是用于将数据在网络中传输的协议。
IP报文分为报文头和数据部分。
报文头包括版本号、TTL(生存时间)、源IP地址、目的IP地址等字段。
8.ICMP报文格式:ICMP(互联网控制消息协议)是用于在IP网络中传输控制消息的协议。
ICMP报文分为报文头和数据部分。
报文头包括类型、代码、校验和等字段,数据部分根据不同类型的消息而不同。
9.ARP报文格式:ARP(地址解析协议)是用于将IP地址转换成MAC地址的协议。
常见网络协议报文格式汇总
2bytes 2bytes 1bytes 1bytes
地址 4bytes 址
4bytes
6bytes
6bytes
6bytes
|ß----以太网首部---->|ß---------28字节ARP请求/应答------
4. IP报文格式(RFC791)(20bytes)
版本 4bits
首部长度 4bits
附件:报文格式
1. Ethernet数据包格式(RFC894)
Ethernet Ⅱ 帧格式:
目的MAC地址 源MAC地址
6 bytes
6 bytes
VLAN帧格式:
目的MAC地址 源MAC地址
6 bytes
6 bytes
Type/Length 2 bytes
Payload 46-1500 bytes
0x8864→PPPoE session stage 继续进行PPP的2层包处理。
0x8100→VLAN
其它值当作未识别包类型而丢弃。
2. PPP数据包格式
标志7E 地址FF 控制03 协议 1byte 1byte 1byte 2bytes
Payload 最多1500bytes
CRC 标志7E 2bytes 1byte
时,该数据报将被丢弃,数据包没经过一个路由器,TTL值将减去1。 协议号Protocd:8位,该字段表示在IP数据报中封装的是哪一个协议,TCP为6,UDP为17。 首部校验和Header Checksum:16位,它是16位的错误检测字段,目的的主机和网络中的每个网关都要重新 计算包头的校验和,就同源机器所做的一样,如果数据没有被改动,两个计算结果应该是一样的。 源IP地址Source IP Address:32位 目的IP地址Destination IP Address:32位 可选项Options:选项字段,根据实际情况可变长,可以和IP一起使用的选项有多个,例如,可以输入创建 该数据报的时间等。 TCP报文格式 源端口号Source IP Address:16位呼叫端的端口号,这个端口是由发送方随机产生的。 目标端口号Destination Port:16位,被叫端的端口。 32位序列号Sequence Number:由于TCP封包必须要带入IP封包中,所以如果TCP资料太大时(大于IP封包的 容许程度),就要进行分段,这个序列号就是记录每个封包的序号,可以让接受端重新将TCP的资料组合 起来。 32位确认号Acknowledge Number:为了确认对方确实收到我们的封包,如果收到了,发送ACK确认。 首部长度:4位,为了确认整个TCP包的大小,就必须要这样来说明数据的起始位。 保留Reserved:6位,未使用的保留位,留着扩展用。 Code:6个控制位,URG,ACK,PSH,RST,SYN,FIN。 Urgent:为1时代表该数据包为紧急封包,根据16位的紧急指针来确定紧急数据最后一个字节的位置,这样 接收端就可以有限准确快速的获取紧急数据。 Acknowledge:为1时代表这个封包为回应封包。 Push Function:为1时代表要求对方尽快将数据段送达应用层,无须等待缓冲区满了才送。 Reset:为1时代表通知重新建立TCP连接。 Synchronous:为1时代表发送端希望双方建立同步连接,通常带有SYN标志的封包表示主动连接到对方的意 思。 Finish:为1时代表传送结束,所以通知对方是否断线,只是发送端还在等待对方的回应。 窗口Windows:16位,主要是用来控制封包流量的,可以告诉对方目前本身有的缓存器容量还可以接收包, 当win=0时,代表缓存器已满,所以应该暂停传输,windows单位,byte。 校验和Checksum:16位,当资料传输时,要由发送端进行检测,并将该动作的校验值标注在这个栏位上, 接收者收到这个封包后,会再次对封包进行检测,并且对比与发送方的值是否一致,一致就接收,不一致 丢弃,并要求对方重新发送这个封包。 紧急指针Urgent Pointer:16位,和URG配合使用,URG=1时才会产生作用,用来说明紧急数据的末尾字节 的位置。 可选项:只有首部长度长于20的时候才有效。 数据:应用层数据分段而得到的数据。
TCPIP几种协议数据报格式简介
TCP 是面向连接的可靠数据传输协议,因此比较复杂,在此仅作简单介绍。“序号”指数据在发送端数据流中 的位置。“确认号”指出本机希望下一个接收的字节的序号。与 IP 校验不同的是 TCP,UDP 校验采用伪头标加整个 报文一同校验的方法。TCP 协议工作原理另行介绍。
TCP 数据报中依次包括以下信息:
协议采用分层结构,因此,数据报文也采用分层封装的方法。下面以应用最广泛的以太网为例说明其数据报 文分层封装,如下图所示:
任何通讯协议都有独特的报文格式,TCP/IP 协议也不例外。对于通讯协议编程,我们首先要清楚其报文格式。 由于 TCP/IP 协议采用分层模型,各层都有专用的报头,以下就简单介绍以太网下 TCP/IP 各层报文格式。
1、 16 位源端口 Source Port。该部分占 16 个 BIT。通过此值,可以看出发起连接的计算机源端口号。
2、 16 位目的端口 Destination Port。该部分占 16 个 BIT。通过此值,可以看出要登录的目的端口号。
3、 32 位序列号 Initial Sequence Number。表示初始连接的请求号,即 SEQ 值。该部分占 32 个 BIT。
4、 32 位确认号 Next Expected SEQ Numbe。对方返回的 ACK 值。该部分占 32 个 BIT。
5、 4 位数据偏移 Data Offset。表示数据偏移的大小。该部分占 4 个 BIT。
6、 6 位保留位 Reserved Bites:保留位,此处不用。该部分占 6 个 BIT。
的 16 次方减 1,即:65535 个字节。因此,在以太网中能够传输的最大 IP 数据包为 65535 个字节。
5、 16 位标识号 Identification。该部分占 16 个 BIT,以十进制数表示。
arp帧格式
arp帧格式2010-06-1819:40转载自czdazaiyi最终编辑mxfyangIP地址实现了底层网络物理地址的统一,但因特网技术并没有改变底层的物理网络,数据最终还是要在物理网络上传输,而在物理网络中传输时使用的仍是物理地址。
我们知道,当我们在浏览器里面输入网址时,DNS服务器会自动把它解析为IP地址,浏览器实际上查找的是IP地址而不是网址。
那么IP地址是如何转换为第二层物理地址(即MAC地址)的呢?这就是ARP的功能。
一、什么是ARP协议ARP协议是“AddressResolution Protocol”(地址解析协议)的缩写。
在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。
在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。
但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。
所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行.二、ARP解析过程(1)源主机与目的主机位于同一子网中①检查本地ARP高速缓存当要确定同一子网上的目的主机的物理地址时,ARP先检查本地ARP高速缓存,确定IP地址与物理地址的映射,如果包含,则取出目的主机的物理地址,利用这个地址将IP数据报封装成帧。
若不存在就进行下一步。
②向目的主机发送ARP请求ARP请求以物理广播地址在本地子网上广播,并等待目的主机应答,ARP请求包含发送方的IP地址和物理地址,和目的主机的IP地址。
③将请求方的地址信息写入ARP缓存缓存由于ARP请求是子网上的广播,因而该子网中的每台主机都会收到广播,并将自己的IP地址和该ARP请求中的主机IP地址进行比较,如果不匹配,那么ARP请求将被忽略,若匹配,那么目的主机将会把发送方的IP地址与物理地址写入本机ARP告诉缓存中。
网络协议数据报文格式
协议数据报文格式1、TCP/IP协议层次TCP/IP协议分为四层结构,每一层完成特定的功能,包括多个协议。
本课程实验中相关协议的层次分布如附图3-1所示。
附图3-1 TCP/IP协议层次这些协议之间的PDU封装并不是严格按照低层PDU封装高层PDU的方式进行的,附图3-2显示了Ethernet帧、ARP分组、IP分组、ICMP报文、TCP报文段、UDP数据报、RIP报文、OSPF报文和FTP报文之间的封装关系。
附图3-2 各协议PDU间的封装关系2、Ethernet帧格式最新的IEEE 802.3标准(2002年)中定义Ethernet帧格式如下:其中,类型/长度值小于1536(0x0600)时表示数据字段的长度,大于等于1536(0x0600)时表示数据字段的协议类型。
类型/长度值0x0800表示帧中封装的数据为IP分组,类型值0x0806表示帧中封装的数据为ARP分组。
3、IP分组格式(RFC 791)4、ARP分组格式(RFC 826)操作代码值1表示ARP请求分组,操作代码值2表示ARP响应分组。
5、ICMP报文格式(RFC 792)ICMP回送请求和回送应答报文:ICMP目的不可达报文:ICMP超时报文:6、TCP报文段格式(RFC 793)7、RIP报文格式(版本1-RFC 1058,版本2-RFC2453)RIP请求报文在某些RIP路由表项超时或路由器刚接入互联网时发送,请求报文可以询问特定路由或所有路由。
路由器在回应请求报文时发送携带被询问路由信息的RIP响应报文,也可以定期(30秒)发送携带整个路由表信息的RIP响应报文。
8、OSPF报文格式(RFC 2328)链路状态更新(LSU)报文:链路状态确认(LSAck)报文:链路状态通告(LSA)首部:。
各种数据报和数据包格式
IP 数据包格式版本字段:4位。
当前的IP 协议版本是4,通常称为IPv4。
下一个版本是6,称为IPv6首部长度:4位,IP 数据报首部的长度,每个单位为4个字节。
IP 数据报的长度是4个字节的整数倍。
服务类型:8位,服务类型。
前3位为优先级,用于表示数据报的重要程度,优先级取值从0(普通优先级)到7(网络控制高优先级)。
D 、T 和R 位表示本数据报希望的传输类型。
D 表示低时延(Delay )需求T 表示高吞吐量(Throughput )要求R 代表高可靠性(Reliability )要求。
总长度:总长度指首部和数据之和的长度,单位为字节。
总长度字段为16位,因此数据报的最大长度为216-1=65535字节。
标识(identification):占16位。
IP 软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。
但这个“标识”并不是序号,因为IP 是无连接服务,数据报不存在按序接收的问题。
当数据报由于长度超过网络的MTU 而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。
相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
标志(flag):占3位,但目前只有2位有意义。
标志字段中的最低位记为MF(More Fragment)。
MF=1即表示后面“还有分片”的数据报。
MF=0表示这已是若干数据报片中的最后一个。
标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。
只有当DF=0时才允许分片。
片偏移:占13位。
片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。
也就是说,相对用户数据字段的起点,该片从何处开始。
片偏移以8个字节为偏移单位。
这就是说,每个分片的长度一定是8字节(64位)的整数倍。
总长度 服务类型版本 首部长度 标识 源站IP 地址寿命 协议首部校验和 片偏移 标志目的站IP 地址IP 选项(可选)填充 数据……生存时间:占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。
arp使用方法
arp使用方法ARP使用方法ARP(Address Resolution Protocol)是一种通过网络地址映射到物理地址的协议。
它的作用是将IP地址转化为MAC地址,以便于数据包在网络中进行传输。
在本文中,我们将介绍ARP的使用方法。
1. ARP的工作原理在进行ARP操作前,我们需要先了解它的工作原理,以便于更好地理解如何使用ARP。
ARP的工作原理如下:当主机A要向主机B发送数据包时,首先需要查找主机B的物理地址,以便于将数据包传输到正确的目的地。
主机A向本地网络中的所有主机广播一个ARP请求报文,请求其它主机帮助查找目标主机的物理地址。
如果在网络中有主机B,它将会响应ARP请求报文,并将自己的物理地址发送给主机A。
主机A将目标主机的IP地址和物理地址存储在本地缓存中,以便于后续数据包的传输。
2. ARP的使用方法在Windows系统中,我们可以使用“arp”命令来进行ARP操作。
具体方法如下:1)查看ARP缓存表我们可以使用“arp -a”命令来查看本地ARP缓存表,该表中存储了目标主机的IP地址和对应的物理地址。
如果我们要了解特定主机的物理地址,可以在命令后添加目标主机的IP地址。
例如,“arp -a 192.168.1.1”命令将会显示本地ARP缓存表中192.168.1.1的物理地址。
2)添加静态ARP条目如果我们需要手动指定某个主机的物理地址,可以使用“arp -s”命令添加静态ARP条目。
该条目将会将目标主机的IP地址和对应的物理地址存储在本地ARP缓存表中,以便于后续数据包的传输。
命令格式为“arp -s IP地址物理地址”,例如,“arp -s 192.168.1.1 00-11-22-33-44-55”命令将会将192.168.1.1的物理地址设置为00-11-22-33-44-55。
3)清除ARP缓存表如果我们需要清除本地ARP缓存表中的所有条目,可以使用“arp -d”命令。
第4章 ARP和RARP
RARP协议原理 RARP协议原理
在对主机进行配置时,IP地址一般保存在本机的磁盘上, 因此,系统引导时从磁盘上的配置文件中读取本机的IP地址。 但是对互联网中的无盘工作站或X终端等无法在本机保存IP地 址的主机,又该如何获得IP地址呢?设计RARP就是为了解决 这个问题。 在互联网中,一台主机的标识是IP地址;在一个局域网 中,主机的标识是硬件地址,它保存在网络接口卡中,可以 惟一标识一个网络中的一台主机。无盘工作站在启动时,利 用从网络接口卡上读取的硬件地址做标识,发送一个RARP请 求报文,它和RAP正好相反,是用来获取主机的IP地址的。
第四章 ARP和RARP
第四章 ARP和RARP
4.1 IP地址和物理地址影射问题 4.2 ARP协议原理 4.3 RARP协议
IP地址和物理地址影射问题
TCP/IP 协 议 族 专 门 设 计 了 用 于 地 址 解 析 的 协 议 ARP(Address Resolution Protocol),它可以把一个IP 地址映射成对应的物理地址。 另外,对于无法保存IP地址的主机(如无盘工作站), TCP/IP协议族中也提供了从物理地址到IP地址映射的反 向 地 址 解 析 协 议 RARP(Reverse Address Resolution Protocol)。
ARP协议原理 ARP协议原理
(3) 硬件地址长度和协议地址长度。 (4) 操作代码。 (5) 发送方硬件地址和发送方协议地址。 (6) 目标方硬件地址和目标方协议地址。 硬件(MAC),协议(IP)
ARP协议原理 ARP协议原理
在网络中,每台主机上都有一个ARP高速缓存,这个高速缓存存放 了最近IP地址到硬件地址之间的映射记录。高速缓存区中表项建立的方 法是: (1) 请求主机收到ARP应答后,主机就把获得的IP地址与物理地址 的映射关系存入ARP表中。 (2) 由于ARP请求报文是广播发送的,所有收到ARP请求报文的主 机都可以把其中发送方的物理地址和IP地址映射存入自己的高速缓存中, 以备将来使用。 (3) 网络中的主机在启动时,可以主动广播自己的IP地址和物理地 址的映射关系,以免其他主机对它提出ARP请求(这也使一台主机在启动 时,就可以知道自己的IP地址与网络中其他主机的IP地址有没有冲突)。
常见网络协议报文格式汇总
IP首部 20bytes 源端口 16bits UDP长度 16bits
目的端口 16bits UDP检验和 16bits
8.
MPLS报文格式
MPLS标签(可以有多个) IP报文
二层头
Label value 20bits MPLS报文类型: 以太网中 0x8847(单播) PPP类型上 0x8281(MPLSCP) 协议名称 ICMP TCP UDP OSPF 1 数据包格式(RFC894)
源MAC地址 6 bytes 源MAC地址 6 bytes Type/Length 2 bytes Type/Length 2 bytes Payload 46-1500 bytes Payload FCS(CRC) 4 bytes FCS 4 bytes Ethernet Ⅱ 帧格式: 目的MAC地址 6 bytes VLAN帧格式: 目的MAC地址 6 bytes
EXP 3bits 0x8848(组播)
栈底标记 1bit
TTL 8bits
协议号
9.
MTU
网 络 MTU字节 65535 17914 4464 4352 1500 1492 576 296
超通道 16Mb/s令牌环(IBM) 4 Mb/s令牌环(IEEE 802.5) FDDI 以太网 IEEE 802.3/802.2 X.25 点对点(低时延)
10. TCP与UDP应用
UDP RIP 广播、多播 TFTP(S:69) BOOTP(S:67 D:68) SNMP (Admin:162 Proxy:161) TCP FTP(21) TELNET(23) Rlogin SMTP
2. 以太网帧,TCP/IP数据报文详解
(完整版)常见报文格式汇总
报文格式大全(编写:洪先进)Ethernet 数据包格式(RFC894)Ethernet Ⅱ帧格式:目的 MAC 地点源 MAC 地点Type/Length Payload FCS(CRC) 6 bytes 6 bytes 2 bytes 46-1500 bytes 4 bytes VLAN 帧格式:目的 MAC 地点源 MAC 地点Type/Length Payload FCS6 bytes 6 bytes 2 bytes 4 bytes0x81002 bytes 3bits:UserPriority TCI 2bytes1bit:CFI 12bits:VID1、DstMac 的最高字节的最低BIT 位假如为 1,表示此包是以太网组播/广播包,送给 CPU 办理。
2、将 DstMac 和本端口的 MAC 进行比较,假如不一致就抛弃。
3、获得以太网种类字段Type/Length。
0x0800→IP0x0806→ARP 0x8035→RARP 持续进行 3 层的送给 CPU办理。
送给 CPU办理。
IP 包办理。
0x8863→PPPoE discovery stage 0x8864→PPPoE session stage 送给 CPU办理。
持续进行 PPP的2 层包办理。
0x8100→VLAN其余值看作未辨别包种类而抛弃。
PPP 数据包格式标记 7E 地点 FF 控制 03 协议Payload CRC 标记 7E 1byte 1byte 1byte 2bytes 最多 1500bytes 2bytes 1byte1、获得 PPP 包种类字段。
0x0021→IP 持续进行 3 层的 IP 包办理。
0x8021→IPCP 送给 CPU办理。
0xC021→LCP 送给 CPU办理。
0xc023→PAP 送给 CPU办理。
0xc025→LQR 送给 CPU办理。
0xc223→CHAP 送给 CPU办理。
0x8023→OSICP 送给 CPU办理。
51RTL8019网络传输整个系统详解ARPUDPTCPIP数据传
TCP/IP协议栈与数据包封装TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。
如下图所示(该图出自)。
图36.1. TCP/IP协议栈两台计算机通过TCP/IP协议通讯的过程如下所示(该图出自)。
图36.2. TCP/IP通讯过程传输层及其以下的机制由内核提供,应用层由用户进程提供(后面将介绍如何使用socket API编写应用程序),应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示(该图出自)。
图36.3. TCP/IP数据包的封装不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。
上图对应两台计算机在同一网段中的情况,如果两台计算机在不同的网段中,那么数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器,如下图所示(该图出自)。
图36.4. 跨路由器通讯过程其实在链路层之下还有物理层,指的是电信号的传递方式,比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤等都属于物理层的概念。
物理层的能力决定了最大传输速率、传输距离、抗干扰性等。
集线器(Hub)是工作在物理层的网络设备,用于双绞线的连接和信号中继(将已衰减的信号再次放大使之传得更远)。
链路层有以太网、令牌环网等标准,链路层负责网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。
几种报文格式及arp分类
主要内容
• • • TCP/IP协议概述 数据封装和解封装过程 TCP、UDP、IP报文格式、以太帧格式 ARP、免费ARP、代理ARP、RARP、IARP
TCP/IP协议概述
主机A 主机B
Internet
TCP/IP
Transmission Control Protocol / Internet Protocol 是互联网上通信的标准
?端口号定义的范围?1低于255的端口号用于公共应用?2255到1023的端口号被指定给各个公司?3高于1023的端口号未做规定由主机随机使用udp报文格式?没有序列和确认字段sourceport16destinationport16length16dataifany1bit0bit15bit16bit31checksum168bytesudp格式举例ip包格式ip包格式举例ethernetii帧格式源地址目的地址类型帧净载荷帧检测序列以太网型数据帧是所有以太网帧中最古老也是应用最广泛的?arp?免费arp?代理arp?rarp?iarparp概述?arpaddressresolutionprotocol地址解析协议作用把ip地址解析为mac地址?数据在以太链路上以以太网帧的形式传输?要在以太网中传输ip数据包必须知道ip对应的mac目标mac源mac源ip目标ip数据fcsarp地址解析过程源目的主机是否同一子网n解析网关下一跳mac解析目的主机macy源主机要发送ip包arp缓存中是否有ipmac条目ny发送arp请求并在本地建立临时条目根据接收的arp报文建立ipmac映射条目根据arp表中ipmac映射条目封装成帧发送arp缓存?26?arp缓存动态表项???通过arp协议学习能被更新缺省老化时间120s静态表项手工配置不能被更新无老化时间的限制arp报文目的mac源mac类型arp报文0x8086硬件类型协议类型硬件地址长度协议地址长度操作代码sendermacsenderiptargetmactargetip12requestreply免费arp??28免费arpgratuitousarp开机或者更改了ip地址会发送免费arp???发送arp请求其中targetip是自己的ip确定其它设备的ip地址是否与本机ip地址冲突
报文格式以ping arp数据包转发过程.概要
STP 数据流分析过程一: 以太网帧格式( Ethernet II )数据长度64-1518(前导码不属于数据部分)←—————————以太网帧首部—————————→ ↑ ↑ IP 报文 ARP 报文插入Vlan 标签后 Ethernet II 帧变成 Ethernet 802.1q 帧二:IP 数据报格式 (IP Datagram) 位数7字节 1字节6字节6字节2字节46-1500字 节4字节前导码 帧首定界符 目的MAC 地址 源MAC 地址 类型:3种 数据(可变长度) CRC (帧校验序列 :0x0) 0800:IP 数据报0806:ARP 请求/应答8035:RARP 请求/应答0 4 8 16 19 24 314版 本4首部长度 6区分服务 16总 长 度16标 识3标 志13片 偏 移 8生 存 时 间8协 议:200多种 如 PRO :0 x 1 (ICMP 报文) PRO :0 x 118(STP 协议)16首 部 检 验 和32源地址(IP ) 32目的地址(IP )可 选 字 段,可 变 长 度(如果有)填 充注释:前5行固定字节20 前6行组合成(IP首部)协议:200种最底页IP数据报完整结构IP帧首部(前6行)数据部分↑↑↑↑ICMP报文格式STPOSPF ARP请求三:ARP/RARP格式 (地址解析协议/逆地址解析协议)单位:字节14 2 2 1 1 2 6 4 6 4以太网帧首部硬件类型协议类型硬件地址长度协议地址长度OP (选项字段)0x1:ARP请求0x2:ARP应答源MAC 源IP目的MAC目的IP ←———————————28位字节ARP请求/应答———————————————→数据部分四:ICMP报文 (互联网控制消息协议)单位: 位IP头部20字节(4)类型(4)代码(8)校验和(4)标示符(8)序列号(16)选项(有很多种格式)可不选←—IP部分—→←———————————ICMP格式—————————————→ICMP定义了五种常用差错报文和八种询问报文类型,差错报告报文的类型有一下几个:类型3:目的站不可达格式表达→类型:0x3类型4:源站抑制类型5:改变路由类型11:时间超过类型12:参数问题查询报文的类型有一下几个:类型8或0:回送请求或回答类型13或14:时间戳请求或回答类型17或18:地址掩码请求或回答类型10或9:路由器询问或通告协议数据单元PDU(Protocol Data Unit)是指对等层次之间传递的数据单位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ARP数据报格式
在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。
因此在通讯前必须获得目的主机的硬件地址。
ARP协议就起到这个作用。
源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。
每台主机都维护一个ARP缓存表,可以用arp -a命令查看。
缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。
想一想,为什么表项要有过期时间而不是一直有效?
ARP数据报的格式如下所示
图 36.7. ARP数据报格式
注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。
硬件类型指链路层网络类型,1为以太网,协议类型指要转换的地址类型,0x0800为IP地址,后面两个地址长度对于以太网地址和IP地址分别为6和4(字节),op字段为1表示ARP 请求,op字段为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,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)。
思考题:如果源主机和目的主机不在同一网段,ARP请求的广播帧无法穿过路由器,源主机如何与目的主机通信?。