ip数据报 订阅
TCP/IP协议定义了一个在因特网上传输的包,称为IP数据报,由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首部中的源地址和目的地址都是IP协议地址。 展开全文
TCP/IP协议定义了一个在因特网上传输的包,称为IP数据报,由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。首部中的源地址和目的地址都是IP协议地址。
信息
外文名
IP Datagram
协    议
IP协议
内    容
源地址、目的地址和数据
中文名
IP数据报
实    质
虚拟包
组    成
首部和数据两部分
IP数据报简介
IP协议控制传输的协议单元称为IP数据报(IP Datagram,IP数据报、IP包或IP分组)。IP协议屏蔽了下层各种物理子网的差异,能够向上层提供统一格式的IP数据报。lP数据报采用数据报分组传输的方式,提供的服务是无连接方式。IP数据报的格式能够说明lP协议具有什么功能。IPv4数据报由报头和数据两部分组成,其中,数据是高层需要传输的数据,报头是为了正确传输高层数据而增加的控制信息。报头的前一部分长度固定,共20字节,是所有IP数据报必须具有。在首部固定部分的后面是可选字段,长度可变。
收起全文
精华内容
下载资源
问答
  • 2022-04-24 23:22:42

    IP数据包格式

    ip数据包格式:682ab4ad84461977ef1b1a8f15e4f4e

    版本号(4bit): 指IP协议版本。并且通信双方使用的版本必须一致,目前我们使用的是IPv4,表示为0100

    首部长度(4): IP数据包的包头部长度

    优先级与服务类型(8): 该字段用于表示数据包的优先级和服务类型。通过在数据包中划分一定的优先级,用于实现 QoS(服务质量)注:定义IP数据包是否优先传送

    版本号(4bit): 指IP协议版本。并且通信双方使月月的版本必须一致,目前我们使用的是IPv4,表示为0100 的要求

    总长度(16) :定义IP数据包的总长度,最长为655385 字节,包括包头和数据。 注:iP头部数据段 可能 20字节 也有可能多总长 变加上数据段长度 最长为 65535字节

    标识符(16): 该字段用于表示IP数据包的标识符。 当IP对上层数据进行分片时,它将 给所有的分片分配一组编号,然后将这些编号放入标只符字段中,保证分片不会被错误地重组。标识符字段用于标志一个数据包,以便接收节点可以重组被分片的数据包

    标志(3): 和标识符一起传递,指示不可以被分片或者最后一个分片是否发出

    段偏移量(13): 在一个分片序列中如何将各分片连接起来,按什么顺序连接起来

    TTL生命周期(8):可以防止一个数据包在网络中无限循环的转发下去,每经过一个路由器-1当TTL的值为0时该数据包将被丢弃

    协议号(8):封装的上层哪个协议,ICMP:1 TCP:6 UDP:17

    首部校验和(16):这个字段只检验数据报的首部, 不包括数据部分。这是因为数据报没经过一次路由器,都要新计算一下首部校验和(因为一些字段如生存时间、标志、片偏移等可能发生变化)

    源地址(32):源ip地址,表示发送端的IP地址

    目标地址(32):目标ip地址,表示接收端的IP地址

    可选项:选项字段根据实际情况可变长,可以和IP一起使用的选项有多个。例如,可以输入创建该数据包的时间。在可选项之后,就是上层数据说点什么.< 激活Windows 注:根据实际情况可变长,例如创建时间等上层数执 转到“设置”以激活Windows。

    ①传输速率、②传输数据的完整性、③数据传输到之后的重组
    标识符: 完整数据 切片,分为多个数据包准备传输
    标志: 开始传输时的数据完整性
    段偏移量: 在数据传输到对端的时候,由段偏移量确定,这么多数据包,应该按照什么顺序,再拼接为完整的数据

    简述

    第一层
    1.版本号必须对应(ipv4,ipv6),相同的接口规范
    2.ip数据包的长度(首部长度)
    3.优先级和服务类型:优先级大的先传输,优先级小的后传输,调整优先级的服务,把包在发送的时候做一个细节化
    4.总长度:规范的字节长度最多65535字节,为了统计,为了总长度

    第二层
    1.标识符:对发送的数据发送n个切片且标识,分成几个数据包,分成单个的数据包发送且标识,为了记录数据的顺序
    2.标志:标志有没有发送完整,指示不可以被分片或者最后一个分片是否发出
    3.段偏移量:给数据包排序,按照数据包的顺序排序,保证按照顺序拼接在一起
    数据包怎么发送的,按照顺序排列

    第四层
    1.TTL生命周期:TTL只得是生命周期,每次经过一次三层网络TTL减一
    2.协议号:tcp,cmp,udp,每种不同的协议,对应不同的功能,icmp(ping)表示我的目的是想干嘛
    3.首部校验和:每经过三层设备,在解封装的时候数据会有损耗,保证收到的数据没有损耗

    第四层
    1.源地址;二进制

    第五层
    1.目标地址:二进制

    第六层
    可选项:表示属性,选项字段根据实际情况可变长,可以和IP一起使用的选项有多个

    第七层

    第五层
    1.目标地址:二进制

    第六层
    可选项:表示属性,选项字段根据实际情况可变长,可以和IP一起使用的选项有多个

    第七层
    数据:真实数据你所发送的数据

    更多相关内容
  • 能定时捕获经过本地网卡的IP分组,并可将捕获信息导出为txt文件或者导入txt文件
  • 点击exe文件可以直接在命令行窗口下运行,支持手动输入时间,输出IP包的信息
  • 基于C++和winpcap编写的网络程序,实现监听并解析IP数据包! 运行程序,按提示输入要选择的网卡序列,再次输入需要不活的IP数据包的个数,然后程序自动运行捕获。 捕获后开始解析,从数据链路层开始解析...
  • (C#)IP数据包捕获

    2018-06-27 22:11:11
    在本地可选网卡上捕获IP数据包,并实现简单解析,利用序列化实现数据包保存及本地数据的读取显示
  • 监控IP数据包流量

    2019-01-26 12:47:34
    用vc++编写的IP数据包流量的监控,使用方法:先自行安装wincap(网上很多),将工程文件exe拖入cmd,即可按照提示监控IP包流量。
  • IP数据包分析在C#中

    2018-06-04 20:56:03
    这是允许在C#中进行IP数据包分析的代码 你必须安装visual studio才能试用它
  • C++解析IP数据包程序

    2017-06-20 09:18:46
    点击exe文件可以直接在命令行窗口下运行,支持手动输入时间,输出IP包的信息
  • 封装并发送IP数据包

    2017-02-17 14:37:16
    计算机网络 封装并发送IP数据包 C语言实现
  • 解析IP数据包.cpp

    2019-05-23 18:30:42
    编制程序,监控网络,捕获一段时间内网络上的IP数据包,按IP数据包的源地址统计出该源地址在该时间段内发出的IP包的个数。 并根据TCP/IP协议解析IP数据包; Winpcap由内核级的数据包过滤器,底层动态链接库(packet....
  • 本次设计的目标是捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。 实验要求: 1)以命令行形式运行:ipparse logfile , 其中ipparse是程序名,而logfile则代表记录结果的...
  • 捕获网络中的IP数据包,解析数据包的内容,并将结果显示出来。 (2) 显示内容包括:捕获的IP包的版本、源地址、目的地址、源端口、目的端口、协议类型、IP包总长度、IP包头总长度、IP数据包长度等内容。 (3) 设置停止...
  • IP数据包的解析

    2019-01-04 17:06:23
    ip数据包的解析,分为服务端与客户端,客户端发送消息,服务端解析,并打印输出
  • 中南大学电子信息工程14级通信网实验报告:IP数据包捕获程序设计
  • 用winpcap对IP数据包捕获,c++实现
  • 30、IP数据包结构

    千次阅读 2021-09-14 14:52:10
    本节来学习IP数据包的格式,前面我们一直在说数据包,IP数据包是网络层的PDU。PDU的概念我们在本专栏第2节的内容中谈到过,忘记了就赶快去复习。数据包也被称为“IP数据报”或者“IP分组”,这三个概念是通用的,到...

    本节来学习IP数据包的结构,前面我们一直在说数据包,IP数据包是网络层的PDU。PDU的概念我们在本专栏第2节的内容中谈到过,忘记了就赶快去复习。数据包也被称为“IP数据报”或者“IP分组”,这三个概念是通用的,到任何一本计算机网络教材中都适用的。


    IP数据包的组成

    IP数据包是由数据发送方的传输层交付下来的信息加上网络层的IP首部封装而成的,所以从整体来看,IP数据包有两个组成部分:IP首部+数据部分

    数据部分就是网络层的上层交付下来的信息,具体是什么格式我们现在不用管。本节主要重点学习的是,IP首部的格式。


    首部格式

    仍然按照惯例,先给出IP首部的格式图,然后我们逐一地解释各个字段。

    上图的绿色部分即为IP首部的格式,粉色部分是数据部分。

    先来看图的最上边,写着“0 4 8 16 19 24 31”的这一行数字,这代表的是二进制位数,也就表示了每个字段的长度是多少,比如第二行第一个,标识字段,长度是0~16,也就是16个位的长度,也就是两个字节的长度(1字节=8位),再比如第四行的,源IP地址字段,长度是从0到第31位,一共有32个位的长度,也就是四个字节的长度。

    所以,整个IP首部中,从版本号字段到目的IP地址字段一共是有20个字节的长度,这是IP首部固定首部的长度,这个长度永远是20字节。然后我们可以看到整个IP首部的最后一行是“选项字段和填充”,选项字段标着“长度可变”,这就意味着这个字段的长度不是固定的,就不属于固定首部的部分。


    字段含义

    版本号

    指明了此IP数据包使用的IP协议是什么版本的,如果此字段值为4,就表示这是一个IPv4的数据包,如果此字段值为6,则表示这是一个IPv6的数据包。

    首部长度

    指明了此IP数据包的首部的长度是多少字节。首部长度字段的值的单位是4个字节,也就是说如果此字段的值为5,则表示整个IP数据包的首部长度是5×(4个字节)=20字节。事实上,20字节是最小首部长度,原因是:可以看到,如果一个IP数据包不包含可变长度的部分,只有固定首部的话,那么首部长度就是20字节。

    那么,首部长度有没有最大值呢?有,首部长度最大60字节,也就是不仅包含了20字节的固定首部,还有40字节的可变首部。因为首部长度这个字段在整个IP首部中占了4位,4位二进制能表示的最大数就是15,15×(4个字节)=60字节,这就是最大首部长度的来源。

    服务类型

    或者称为“区分服务”字段,这个字段只有在使用一定QoS策略的时候才起作用,而我们现在涉及不到这么复杂的知识,QoS以后会在路由交换专栏中去介绍。

    总长度

    总长度的值=首部长度+数据部分的长度,单位是字节。而总长度这个字段在整个IP数据包中的长度是16位,16位二进制最大可表示的数就是65535,所以这就意味着总长度字段的值最大是65535,也就表示整个IP数据包最大也就到65535个字节(当然这么大的包很少见)。

    标识、标志位、片偏移

    这三个字段是有联系的,所以我们放在一起学习。

    要理解这三个字段的含义,必须要和数据链路层学过的MTU(最大传输单元)的概念联系起来,以太网规定MTU值为1500字节,那么当IP数据包的长度大于1500字节时,向下交付到数据链路层的时候,在数据链路层是通不过的,所以在这时候就使用了把“IP数据包”分片的技术。形象的说,就是由于数据包太长,超过了数据链路层规定的最大传输值,所以就要把数据包“切割”成几个合适长度的小包,使之能通过数据链路层

    要注意的是,“切割”数据包的时候,只“切割”数据部分,不“切割”首部,然后再把每个部分分别加上首部。比如说,“切割”一个很长的数据包,我们先去除其首部,然后把剩下的数据部分切割成三片,在这三片前面分别加上合适的首部,使这三片各自单独成包。

    在传输比较长的数据包的时候,可以这样“切割”成几片,但是到达数据接收方后,还要把这几片再重新组合起来,这就需要用到“标识、标志位、片偏移”这三个字段。

    标识:此字段的作用是可以识别出哪些被“切割”的段能组装成一个数据包。举例:假设一个数据包的编号是101,那么由于这个数据包过长,需要“切割”成三片,那么切割后的这三片的各自的首部中的标识字段的值就全都是101,以表示这三片本来应该是在一起的,但后来被切割开了,接收端一看这三片数据包的标识都是一样的,就知道要把它们重新组合在一起。

    标志位:此字段的长度是3位,每一位都有不同的作用,其中:第一位没意义,保留不用第二位是DF位,全称“Don't Fragment”,意为“不能分片”,如果这个DF位的值为1,则表示此数据包是不允许分片的,所以这也就意味着如果一个数据包被“切割”了,那么切割成的所有“片”的DF位肯定都是0;第三位是MF位,全称“More Fragment”,意为“更多分片”,如果某个“分片”的MF位的值为1,则表示此分片不是最后一片,在后面还有更多的片,如果MF的值为0了,则表示这是最后一片,后面没有分片了。

    片偏移:这个字段是用来确定出几个分片该按照什么顺序组合成原来的数据包的,片偏移的值指出了某个分片在原来数据包的相对位置,以8个字节为偏移单位。假设某个数据包被分了3片,那么每一片在原来数据包中的开始位置除以8,即为片偏移值。

    谢希仁教授的教材上展示了一个非常经典的例子:

    设一个IP数据包,编号为12345,总长度为3820字节(其中首部长20字节,数据部分3800字节),数据链路层的MTU值为1420字节。于是此数据包被分为3片:

    第一片:数据部分长1400字节,加上20字节的首部,总长度为1420字节。标识应为12345,DF位应为0,MF位应为1,片偏移值应为0(因为第一片在原来数据包中的开始位置是第0字节,结束位置是第1399字节,我们用开始位置除以偏移单位,也就是0除以8,得到0)。

    第二片:数据部分长1400字节,加上20字节的首部,总长度为1420字节。标识应为12345,DF位应为0,MF位应为1,片偏移值应为175(第二片的开始位置1400除以8,得175)。

    第三片:数据部分长1000字节,加上20字节的首部,总长度为1020字节。标识应为12345,DF位应为0,MF位应为0,片偏移值应为350(第三片的开始位置2800除以8,得350)。

    生存时间(TTL)

    此字段是为了保证在网络出现环路的情况,不会让数据包在环路的几个路由器之间无限制的兜圈子而设定的TTL值指出了一个数据包的“寿命”,每经过一个路由器,路由器都会把数据包的TTL值减1,当“寿命”减小到0的时候,此数据包将被丢弃

    例如设定一个TTL值为5的数据包,发送到网络中,而这时网络中的路由器R1、R2、R3之间出现了环路,此数据包酒会在这三个路由器之间兜圈子,R1收到后,TTL值减1发送给R2,R2接过来又把TTL值减1发给R3,如此循环,直到此数据包的TTL值为0,最后收到的那个路由器就丢弃此数据包。

    可见,如果不设置TTL这个字段,那么一旦网络出现环路,将会有大量数据包无限制的被循环转发,极大消耗网络带宽。

    协议

    此字段指明了IP协议的上层使用的是什么协议,一般就是传输层的TCP协议或者UDP协议,当然也有可能是不属于传输层但也位于IP协议之上的ICMP和IGMP协议等。

    协议字段的值是上层各种协议的协议号,有几个知名的协议号是需要了解的:

    ICMP协议号为1;IGMP协议号是2;TCP协议号是6,UDP协议号是17;OSPF协议号为89

    比如某个IP数据包的数据部分是传输层的TCP进程交付下来的,那么此数据包首部的协议字段的值即为6,如果是上层UDP协议交付下来的,那么协议字段的值即为17,如果数据部分承载的是ICMP的数据,那么协议字段的值即为1。

    首部检验和

    此字段的功能是对IP数据包的首部进行校验,数据包每经过一个路由器,路由器都会校验一遍首部检验和,如果检验出差错就把数据包丢弃掉(但一般情况下不会出差错)。具体是怎么检验的,我们不需要去关心,考试也涉及不到。

    选项字段和填充

    这两个字段的长度不是固定的,属于IP首部中的可变首部。选项字段具有支持测试、安全等扩展的功能。填充字段是为了保证IP首部一定是4个字节的整数倍而设置的,如果加入了选项之后,IP首部的长度不是4个字节的整数倍,那就要用全“0”填充到4个字节整数倍的长度。


    本节的内容,很多,其中最主要的是理解“标识、标志位和片偏移”。IP数据包的结构我们就学习完了,下一节将学习一下路由器转发数据包的原理。

    参考教材:谢希仁《计算机网络》第七版

    展开全文
  • (1)捕获网络中的IP数据包,解析数据包的内容,并将结果显示出来。 (2) 显示内容包括:捕获的IP包的版本、源地址、目的地址、源端口、目的端口、协议类型、IP包总长度、IP包头总长度、IP数据包长度等内容。 (3) 设置...
  • IP数据包捕获程序

    2013-11-18 22:54:32
    课程实验,QT写的界面,1)可以输入需要捕获的数据包数量,输出每个数据包的相关字段值(包括版本、总长度、标志位、片偏移、协议、源地址与目的地址)。
  • 计算机网络+课程设计源代码和实验报告+帧封装、IP数据包解析和发送TCP数据包
  • 解析IP数据包

    2017-02-17 14:35:28
    计算机网络 C语言 解析IP数据包
  • C++语言实现IP数据包解析程序,程序注释很详细。
  • 本书是“TCP/IP系列”之一。本书从计算机网络基础知识入手,介绍了数据包分析程序的安装方法、运行情况及编写过程。
  • IP数据包解析程序

    2015-10-17 22:05:23
    2)在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。 3)能够解析不同协议...
  • IP 数据包查看

    2018-08-17 16:17:39
    IP 数据包查看 IP 数据包查看 IP 数据包查看 IP 数据包查看
  • IP数据包格式、ICMP、ARP

    千次阅读 2021-11-24 18:46:12
    文章目录IP数据包格式ICMP协议ping命令和tracert命令ARP协议总结 网络层的功能 1、定义了基于IP协议的逻辑地址,就是IP地址 2、连接不同的媒介类型 3、选择数据通过网络的最佳路径,完成逻辑地址寻址 IP数据包格式 ...


    网络层的功能

    1、定义了基于IP协议的逻辑地址,就是IP地址

    2、连接不同的媒介类型

    3、选择数据通过网络的最佳路径,完成逻辑地址寻址

    IP数据包格式

    在这里插入图片描述

    ​ 数据封装的时候在网络层会封装ip地址的头部,形成ip数据包,那么ip数据包是怎样的格式呢,里面包含哪些内容?

    IP数据包格式(分为20字节的固定部分,表示每个ip数据包必须包含的部分,和40字节的可变长部分)
    **版本号(4bit)😗*指IP 协议版本。并且通信双方使用的版本必须一致,目前我们使用的是IPv4,表示为0100

    **首部长度( 4) 😗*IP数据包的包头长度

    **优先级与服务类型(8)😗*该字段用于表示数据包的优先级和服务类型。通过在数据包中划分一定的优先级.
    用于实现Qos(服务质量)的要求。

    **总长度(16)😗*IP数据包的总长度,最长为65535字节,包括包头和数据。

    标识符(16):该字段用于表示IP数据包的标识符。当IP对上层数据进行分片时,它将给所有的分片分配一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误地**重组。**标识符字段用于标志一个数据包,以便接收节点可以重组被分片的数据包

    简单理解:整体分段,给每段添加标号,体现完整性。收到同一标号,会重组。

    标志(3):和标识符一起传递,指示不可以被分片或者最后一个分片是否发出

    段偏移量(13):在一个分片序列中如何将各分片连接起来,按什么顺序连接起来,数据重组,按顺序连接

    TTI生命周期(8):可以防止一个数据包在网络中无限循环的转发下去,每经过一个路由器-1,当TTL的值为0时,该数据包将被丢弃

    **协议号(8)😗*封装的上层哪个协议,ICMP : 1 TCP: 6 UDP:17

    **首部校验和(16)😗*这个字段只检验数据报的首部,不包括数据部分。这是因为数据报没经过一次路由器,都要重新计算部校验和(因为,一些字段如生存时间、标志、片偏移等可能发生变化)

    **源地址(32)😗*源ip地址,表示发送端的IP地址

    **目标地址( 32)😗*目标ip地址,表示接收端的IP地址

    **可选项:**选项字段根据实际情况可变长,可以和iP一起使用的选项有多个。例如,可以输入创建该数据包的时间等。在可选项之后,就是上层数据
    注:根据实际情况可变长.例如创造时间等 上层数据

    ICMP协议

    1、ICMP是一个“错误侦测与反馈机制”

    2、通过IP数据包封装的

    3、用来发送错误和控制消息

    备注:控制消息协议、提供各种问题的反馈,可及时做出判断解决

    ICMP协议的封装

    1、ICMP协议属于网络层协议

    2、ICMP数据的封装过程
    在这里插入图片描述

    ​ 有了ip地址以后我们如何判断和对方的连通性?通常使用ping命令去ping网络上的一个ip地址,那么ping命令使用的协议是icmp协议
    ICMP协议
    功能
    ​ 作为网络管理员,必须知道网络设备之间的连接状况,因此就需要有一种机制来侦测或通知网络设备之间可能发生的各种各样的情况,这就是ICMP协议的作用。

    ICMP协议(Internet control Message Protocol)的全称是"Internet控制消息协议",主要用于在网络中发送控制消息,提供可能发生在通信环境中的各种问题的反馈。通过这些反馈信息管理员就可以对所发生的问题做出判断,然后采取适当的措施去解决。

    ICMP报文有两种类型:差错报告报文和查询报文。

    ping命令和tracert命令

    哪里使用到了ICMP协议–ping命令和traceroute/tracert (windows使用)命令

    ​ 在检查网络连通性时,ping 命令是用得最多的当我们ping一台主机时,本地计算机发出的就是一个典型的ICMP数据包,用来测试两台主机是否能够顺利连通。ping 命令能够检测两台设备之间的双向连通性,即数据包能够到达对端并能够返回
    ping不通的几种情况
    1、当主机有一个默认网关时,如果他ping其他网段的地址,到不了的话,显示的是request
    timeout(此时他把icmp包发给网关,至于后面的事他就不管,如果没有包回应,就显示request timeout)
    2、当一个主机没有默认网关时或者配置了网关但是和网关不通时,如果他ping其他网段的地址,显示的是Destination hostunreachable (此时他发送arp请求包请求网关的mac地址
    3、当一个路由器ping他路由表中没有的地址时,显示的是request timeout(此时不发任何包)
    4、当路由器ping一个路由表中存在地址时,如果没有回应,则显示的也是request timeout(此时发送arp请求包,请求目标ip的mac地址)

    ping命令的用法:结合具体在什么场景使用什么选项
    -t 在Nindows操作系统中,默认情况下发送4个ping 包,如果在 ping 命令后面加上参数"-t",系统将会一直不停地 ping 下去 ping -t ip

    -a 显示主机名 ping -a

    -l 一般情况下,ping 包的大小为32字节,有时为了检测大数据包的通过情况,可以使用参数改变ping 包的大小 ping -t ip -l

    ​ #在linux系统下为-s
    -n 指定发送包的个数 -c ping -c 数据包 IP

    -s 指定源IP去ping -I

    WIN:
    tracert命令:
    在命令行中输入"tracert"并在后面加入一个TP地址,可以查询从本机到该IP地址所在的电脑要经过的路由器及其iP地址追踪所经过的路由真正的方向。

    Linux :traceroute IP/域名

    ping命令示范

    无法访问目标主机:可能是因为没有正确配置网关
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    ARP协议

    1、局域网中主机的通信( IP数据与MAC地址)

    2、什么是ARP协议:地址解析协议、将一个已知的IP地址解析成MAC地址

    简单理解:Mac 网卡

    Ip 主机地址

    将已知的IP地址解析成MAC地址

    arp协议(详解)
    什么是arp协议:
    ARP协议是地址解析协议(Address ResolutionProtocol)是通过解析IP地址得到Mac地址的,是一个在网络协议包中极其重要的网络传输协议,它与网卡有着极其密切的关系,在TCP/IP分层结构中,把ARP划分为网络层,为什么呢,因为在网络层看来,源主机与目标主机是通过iP地址进行识别的,而所有的数据传输又依赖网卡底层硬件,即链路层。那么就需要将这些IP地址转换为链路层可以识别的东西,在所有的链路中都有着自己的一套寻址机制,如在以太网中使用MAC地址进行寻址,以标识不同的主机,那么就需要有一个协议将IP地址转换为MAC地址,由此就出现了ARP协议,所有ARP协议在网络层被应用,它是网络层与链路层连接的重要枢纽.
    每当有一个数据要发送的时候,都需要在通过ARP协议将IP地址转换成MAC地址,在IP层及其以上的层次看来,他们只标识IP地址,从不跟硬件打交道

    arp协议如何工作
    为了实现IP地址与MAC地址的查询与转换,ARP协议引入了ARP缓存表的概念,每台主机或路由器在维护着一个ARP缓存表〈ARPtable),这个表包含IP地址到Mac地址的映射关系,表中记录了<IP地址,MAC地址>对,我称之为ARP表项,如前面那张图所展示的一样,他们是主机最近运行时获得关于其他主机的IP地址到MAc地址的映射,当需要发送数据的时候,主机就会根据数据报中的目标IP地址信总,然后在ARP缓存表中进行查找对应的MAC地址,最后通过网卡将数据发送出去。ARP缓存表包含一个寿命值(TTL,也称作生存时间),它将记录每个ARP表项的生存时间.生存时间到了就会从缓存表中删除。从一个表项放置到ARP缓存表中开始,一个表项通常的生存时间一般是10分钟吗,当然,这些生存时间是可以任意设置的,我们一股使用默认即可。

    注解:只记录IP 、Mac ,进行通信时会绑定

    帧广播

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    ARP相关的命令(静态ARP与动态ARP)

    arp -a :查看ARP缓存表

    arp -d :清除ARP缓存

    ARP -s ip MAC 删除ARP静态绑定。

    注解:-d 删不了的原因 可能是非管理员

    工作原理(结合交换机原理)
    1、两合局域网主机互相通信为例讲解原理

    ARP解析过程
    (1)当Pc1想发送数据给Pc2,首先在自己的本地ARP缓存表中检查主机PC2匹配的MAC地址
    (2)如果PC1缓存中没有找到响应的条目,它将询问主机PC2的Mac地址,从而将ARP请求帧广播到本地网络的所有主机。该帧中包括源主机Pc1的IP、MAC地址,本地网络中的所有主机都接收到ARP请求,并且检查是否与自己的IP地址相匹配。如果发现请求中IP地址与自己IP不匹配,则丢弃ARP请求。
    (3)主机Pc2确定ARP请求中得IP地址与自己的IP地址匹配,则将主机Pc1的地址和MAc地址添加到本地缓存表中。
    (4)主机PC2将包含其MAc地址的ARP回复消息直接发送回主机PC1(数据帧为单播)。
    (5)主机Pc1收到Pc2发挥的ARP回复消息,将PC2的IP和MAC地址添加至自己ARP缓存表中,本机缓存是有生存期的,默认ARP缓存表有效期120s。当超过该有效期后,则将重复上面过程。主机PC2的Mac地址一旦确定,主机Pc1就能向主机Pc2发送IP信息.

    精简版
    ARP工作原理:

    1. PC1想发送数据给PC2,会先检查自己的ARP缓存表。
    2. 如果发现要查找的MAc地址不在表中,就会发送一个ARP请求广播,用于发现目的地的MAc地址。
      ARP请求消息中包括pc1的IP地址和Mac地址以及PC2的IP地址和目的Mac地址(此时为广播Mac地址FF-FF-FF-FF-FF-FF)。
    3. 交换机收到广播后做泛洪处理,除Pc1外所有主机收到ARP请求消息,Pc2以单播方式发送ARP应答,
      并在自己的ARP表中缓存PC1的IP地址和MAC地址的对应关系,而其他主机则丢弃这个ARP请求消息。
    4. PC1在自己的ARP表中添加Pc2的IP地址和MAc地址的对应关系,以单播方式与PC2通信。

    如提示ARP项添加夫败,解决方案:
    a、用管理员模式:电脑左下角"开始"按钮右键,点击"windows PowerShe11(管理员)(A)"或者进入c盘windlows \system32文件夹找到cmd.exe,右键"以管理员身份运行"再执行arp -s命令;

    绑定arp ( win10)
    cmd中输入
    netsh -c i i show in 查看网络连接准确名称,如:本地连接、无线网络连接

    netsh -c “i i” add neighbors 19 "ip ” “Mac”,这里19是idx号。//绑定
    netsh -c “i i” delete neighbors 19,这里19是idx号。//解绑
    netsh interface ipv4 set neighbors<接口序号>
    动态ARP表项老化。在一段时间内(默认180s))如果表项中的ARP映射关系始终没有使用,则会被删除。通过及时删除不活跃表项,从而提升ARP响应效率。

    华为系统中的ARP命令

    dis mac-address ##查看MAC地址信息

    arp static ##绑定ARP

    undo arp static ##解绑定ARP

    reset arp all ##清除Mac地址表

    总结

    要充分认识和理解数据帧格式和工作的与原理、通过ICMP中的ping和tracert进行错误侦查,最后的ARP解析过程,要充分理解和掌握,结合相关命令,在生产实践中得以学以致用。

    展开全文
  • 使用了jpcap。计算机网络实验之ip数据包捕获程序+源码。实现了可视化界面。
  • ParrotSnoop - 用于IP数据包捕获的Android应用
  • 实验一截获IP数据包并加以分析 1、实验目的: 要求学生掌握Socket编程中原始套接字的技术
  • 解析ip数据包

    2012-06-13 18:29:21
    解析ip数据包 武汉理工大学 计算机网络
  • TCP_IP 数据包分析程序篇,小高知宏

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 327,269
精华内容 130,907
关键字:

ip数据报

友情链接: CBF.zip