我是靠谱客的博主 健康草丛,最近开发中收集的这篇文章主要介绍IP数据包格式与ARP转发原理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

网络层的功能

  • 定义了基于IP协议的逻辑地址

  • 连接不同的媒介类型

  • 选择数据通过网络的最佳路径

IP数据包格式

 

  • 版本字段:版本(Version):该字段包含的是IP的版本号,4bit。目前的IP的版本为4(即IPv4).

  • 首部长度(Header Length):该字段用于的表示IP数据包头长度,4bit。IP数据包头最短为20字节,但是其长度是可变的,具体长度取决于可选项字段的长度。

  • 优先级与服务类型(Priority , Type of Service):该字段用于表示数据包的优先级和服务类型,8bit。通过在数据包中划分一定的优先级,用于实现Qos(服务质量)的要求。

  • 总长度(Total Length):该字段用以指示整个IP数据包的长度,16bit。最长的为65535字节,包括包头和上层数据。

  • 标识符(Identification):该字段用以表示IP数据包的标识符,16bit。当IP对上层数据同一个数据进行分片,分配同一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误的重组。

  • 标志(Flags):标准字段,3bit。对当前的包不能进行分片,或当一个包被分片后,最后一个分片是否已发出。

  • 段偏移量(Fragment Offset):该字段用于表示段偏移量,13bit。包含的信息是指在一个分片序列中如何将各分片重新连接起来。

  • TTL(Time to live):用于表示IP数据包的生命周期,8bit。一个数据包每经过一个路由器,TTL将减去1.当值为0时,该数据包将被丢弃。可以防止数据包在网络中无线循环,造成网络拥堵。

  • 协议号(Protocol):协议字段,8bit。用以指示带IP数据包中封装的是哪一种协议,是TCP还是UDP,TCP的协议号是6,UDP的是17.

  • 首部校验和(Header Checksum):该字段用于表示校验和,16bit。用来校验数据有没有被改动过。

  • 源IP地址(Source IP Address):该字段表示数据包的源地址,32bit。

  • 目标IP地址(Destination IPAddress):该字段用于表示数据包的目的地址,32bit。

  • 可选项(Options):可选项字段根据实际情况可变长,可以和IP一起使用的选项有多个。可选项后就是上层数据。

 

ICMP协议(网际控制报文协议):用于检测网络是否通畅

ICMP是一个“错误侦测与回馈机制”

  1. 通过IP数据包封装的
  2. 用来发出错误控制的信息:

    有时候会出ping不到目标地址,目标不可达 

    如果是有去无回,会提示timeout

 

ICMP协议属于网络层协议

ICMP数据的封装过程

前面两层都在网络层进行的,ICMP数据加上ICMP头部组成ICMP报文

加上IP头部之后才会下到数据链路层

 

window系统中ping命令常用选项:

-t 参数会一直不停的执行ping

-a 参数可以显示主机名称

-i 参数可以设定ping包的大小        在linux系统下 为 :-s

-n 指定发送包的个数                                                    -c

-S 指定源IP去ping                                                        -I

跟踪路由路径命令:

WIN: tracert IP/域名

LINUX:traceroute IP/域名

 

广播与广播域

广播:将广播地址做为目的地址的数据帧

广播域:网络中能接收到同一个广播的所有节点的集合

广播地址为FF-FF-FF - FF-FF-FF

ARP协议:地址解析协议:用于在同一局域网下根据IP地址获取MAC地址

ARP工作原理:

请看上图

1.PC1想发送数据给PC2,会先检查自己的ARP缓存表。

2.如果发现要查找的MAC地址不在表中,就会发送一个ARP请求广播,用于发现目的地的MAC地址。ARP请求中包含PC1的MAC地址和IP地址,以及PC2的IP地址和目的MAC地址(此时为广播MAC地址FF-FF-FF-FF-FF-FF)。

3.交换机收到数据包后先进行学习,将PC1的MAC地址和对应接口口记在MAC地址表中,之后查找MAC地址表没有PC2的地址,广播做泛洪处理,除PC1外所有主机收到ARP 请求消息,所有主机会对照自己的IP地址,PC2对应上即进行单播方式回应,并将PC1的IP地址和MAC地址记录在自己的ARP表内,其他主机则丢弃消息。

4.PC2回应的数据包,源IP与源MAC地址为自己的,目的IP与目的MAC地址为PC1的,经过交换机,交换机进行学习,将PC2的MAC地址与对应接口记录在MAC地址表中,再查询MAC地址表,目的MAC地址为PC1,发送给PC1,PC1收到数据,里面有PC2的MAC地址,记录到自己的ARP缓存表中,这时两台主机的ARP缓存表中都已经有对方的MAC地址与IP地址,两台主机已经可以实现单播通信。

windows系统中ARP命令:

arp -a 查看ARP缓存表

arp -d【IP】清除ARP缓存表

arp -s IP MAC ARP静态绑定

 

动态学习的ARP老化时间是120s,静态绑定的ARP条目则会在关机或重启后消失。

华为系统中的ARP命令

【Huawei】dis mac-address                       查看MAC地址信息

【Huawei】arp static  <IP > <MAC>           绑定ARP

【Huawei】undo arp static  <IP> <MAC>   解绑定

 <Huawei>reset arp all                                清除MAC地址

最后

以上就是健康草丛为你收集整理的IP数据包格式与ARP转发原理的全部内容,希望文章能够帮你解决IP数据包格式与ARP转发原理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部