以太网帧格式
字段 | 长度 | 含义 |
---|---|---|
前同步码 | 7B(字节) | 提醒接收方有帧来到,实现接收方与发送方的时钟同步,即同频率,1和0交替。 |
帧开始定界符(SFD) | 1B | 10101011,帧开始信号,意味着其后的信息就是MAC帧。 |
目的地址 | 6B(48位) | 接收帧的网络适配器(网卡)的物理地址(MAC 地址),作用是当网卡接收到一个数据帧时,首先会检查该帧的目的地址,是否与当前适配器的物理地址相同,如果相同或者帧的目的地址是局域网的广播地址或多播MAC地址时,就会进一步处理;如果不同,则直接丢弃。 |
源地址 | 6B | 用来说明源主机的物理地址。 |
类型 | 2B | 用来标识封装在帧中“数据”字段的协议类型,以便接收方能够把“数据”字段的内容交给这个协议。 |
数据 | 46B~1500B | 长度可变,1500B被定义为以太网的最大传送单元(maximum transfer unit,MTU)。如果IP分组的长度超过了1500B,则需要对IP分组分片。如果IP分组的长度小于46B,则需要插入填充(pad)字节。 |
帧校验序列(FCS) | 4B | 用于检测帧中是否产生了错误。 |
物理地址三种类型:单播地址,多播地址和广播地址。
单播地址用于标识唯一一个以太网节结点,多播地址表示多个结点,广播地址表示连接在该以太网上的所有结点。物理地址的第一字节的最低位称为I/G(Individual/Group)位。当I/G位为0时,表示是一个单播地址;当I/G位为1时,表示是一个多播地址。若48位地址全为1,表示广播地址。
IPv4分组格式
字段 | 长度 | 意义 |
---|---|---|
版本号 | 4位 | 说明IP协议的版本号,IPv4该字段值为4。 |
首部长度 | 4位 | 以4B(32位)为单位说明IP分组的长度,真正的字节数:(首部长度×4)字节;最小值为5,最大值为15;不足4B填充1~3B已凑成4B。 |
总长度 | 16位 | 整个IP分组的长度,最大65535字节(64KB)。 |
生存时间 | 8位 | IP协议中引入了IP分组的生存时间的控制机制,它限制一个IP分组在网络中的存活时间。 |
协议 | 8位 | 协议字段的值指出IP分组中的数据部分是由哪一种协议(高层协议)提供的,接收方则根据协议字段的值来确定应该吧IP分组中的数据交给哪个协议去处理。 |
首部校验和 | 16位 | 首部校验和字段用于对IP分组首部进行校验。 |
源IP地址和目的IP地址 | 各32位 | 发送者和接受者。 |
标识ID字段 | 16位 | 属于同一个IP分组的分片具有相同的标识。 |
标志字段 | 3位 | 低两位DF和MF有意义。DF为1,IP分组不能被分片;MF为0,说明是原IP分组最后一个分片,其他分片都为1。 |
分片偏移量 | 13位 | 根据分片偏移量来确定分片在原始IP分组中的位置,重新组装IP分组。 |
IPv6分组格式
字段 | 长度 | 意义 |
---|---|---|
版本号 | 4位 | 说明协议的版本号,IPv6分组中该字段的值为6。 |
传输类别 | 8位 | 用来区分不同的IPv6分组的类别和优先级。 |
流标识 | 20位 | 流就是因特网上从特定源到特定目的的一系列分组(例如,实时音频)。所有属于同一个流的分组都有相同的流标识。 |
有效载荷长度 | 16位 | 以字节(B)为单位说明IPv6分组中除基本首部以外的其他部分的字节数 ,其最大值是65535B。见上图。 |
下一首部 | 8位 | 定义了紧跟在IPv6基本首部后面的扩展首部的数字标识号或数据部分的协议类型。数字标识号为2时,下一首部为ICMP(网络控制报文协议);数字标识号为6时,下一首部为TCP;数字标识号为17时,下一首部为UDP。 |
跳数极限 | 8位 | 类似于IPv4分组首部中的生存时间(TTL),用来限制分组在网络中的生存时间。每经一个路由器-1,减到0丢弃。 |
源地址 | 128位 | 标识发送分组的结点的IPv6地址。 |
目的地址 | 128位 | 标识接收分组的结点的IPv6地址。 |
在RFC 2460中定义了6中扩展首部:
-
跳到跳选项扩展首部
-
源路由选择扩展首部
-
分片首部
-
目的选项首部
-
认证首部
-
加密安全载荷首部
-
在RFC 3775中定义了:移动首部
扩展首部在IPv6分组中的出现顺序
-
IPv6基本首部
-
跳到跳选项扩展首部
-
目的选项扩展首部(其TLV可选项需要中间结点处理)
-
源路由选择扩展首部
-
分片扩展首部
-
认证扩展首部(AH)
-
封装安全载荷扩展首部(ESP)
-
目的选项扩展首部(其TLV可选项仅在目的结点处理)
-
上层协议首部
IP分类编制
地址解析协议
地址解析协议(ARP)用于将IP地址映射为物理地址。
逆向地址解析协议(RARP)用于将物理地址映射为IP地址。
ARP工作过程:
执行ARP功能的主机都配有一个ARP高速缓存(ARP cache),用来存放已知主机和路由器的IP地址到物理地址的映射记录。
我们以主机A向主机B发送数据为例,这时主机A会拥有自己的IP地址和MAC地址和目的主机B的IP地址。主机A首先会在自己的ARP缓存表中查询是否有目标IP地址,如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,这表示向同一网段内的所有主机发出这样的询问:“B的MAC地址是多少”,网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“B的MAC地址是...”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。
ARP高速缓存中的转换表是动态的,每当发送一个数据报且高速缓存种不存在相应的映射记录时,ARP缓存表便会自动在转换表中添加一条映射记录,如果这条记录在一段时间没有使用,则该记录就会失效,将会从转换表中把它删除掉。
ICMPv4报文类型
-
差错报告报文
-
3 (类型号,下同):目的不可达(网络不可达、主机不可达、端口不可达等等,当路由器不能给IP分组找到路由,或者主机不能交付IP分组时,丢弃这个IP分组,然后给源主机发送该报文)。
-
4:源抑制(当路由器或主机缓冲区溢出而丢弃IP分组时,就向IP分组的发送站发送该报文)。
-
11:超时(当IPv4种的生存时间字段减为0且没到达目的,就会源点发送该报文)。
-
12:参数问题(IP分组首部某个字段不正确,向源站发送该报文)。
-
5:改变路由(路由改变向源主机发送该报文,并把正在传输的IP分组送到适当的路由器)。
-
-
查询报文
-
8或0:回声请求或响应(测试网络目前的工作状态)
-
13或14:时间戳请求或响应(同步主机或路由器的时钟,还可确定两个系统往返时间)
-
17或18:地址掩码请求或响应(获取子网掩码)
-
10或9:路由器请求或通告(通告自己的存在,得知其他路由器情况)
-
ICMPv6报文类型
-
差错报告报文
-
1:目的不可达(同上)
-
2:分组过大(同上)
-
3:超时(同上)
-
4:参数错误(同上)
-
-
信息报文
-
128:回声请求(同上)
-
129:回声应答(同上)
-
130:组成员查询(多播)
-
131:组成员报告(多播)
-
132:组成员退出(多播)
-
133:路由器请求(无状态地址自动配置,以后会发相关文章详解)
-
134:路由器通告(无状态地址自动配置,以后会发相关文章详解)
-
135:邻结点请求(邻结点探测,以后会发相关文章详解)
-
136:邻结点通告(路径MTU探测,以后会发相关文章详解)
-
137:重定向(地址的重新配置)
-
路由信息协议
与上述IPv4和IPv6分组格式中的生存时间(TTL)和跳数极限相关。
RIP(路由信息协议)使用距离(跳数)作为尺度来衡量路由的优劣,跳数是一个IP分组到达目的结点时必须经过的路由器的数目,跳数最少的路由就被认为是最佳路由。RIP支持的跳数最多为15,跳数大于15时就被认为是目的网络不可达,因而RIP只适用于小型互联网。
当路由器发现连接的网络发生变化时,它将更新自己的路由表,RIP规定路由更新周期为30s,邻居之间每30s相互交换一次RIP响应报文,以进行路由信息通告。
传输层
传输层协议提供应用进程间的端到端的逻辑通信,而网际层协议提供主机与主机之间的逻辑通信。
端口(port)是传输层的一个非常重要的概念,应用层的各种应用进程通过相应的端口与传输层进行交互。
端口80(TCP) 应用层协议HTTP 超文本传输协议
一个IP地址与一个端口号结合起来就叫作套接字(socket)。