以太网协议
协议介绍
以太网通常是指数字设备公司、英特尔和施乐联合发布的一个标准。它采用一种CSMA/CD的媒体接入技术,速率10Mb/s,地址48比特。
RFC 894 (A Standard for the Transmission of IP Datagrams over Ethernet Networks )定义IP数据报基于以太网协议封装标准。如下图。
目的地址,源地址是硬件地址,6字节即48 bit。网卡的MAC地址。使用ifconfig之类的命令可以查看。
类型,2字节。表示子协议的类型。0x0800表示IP协议,0x0806为ARP协议,0x8035为RARP协议,后续都会一一阐述。
数据,可变长度,一般为[46-1500],1500是以太网常用最大传输单元MTU,46为最小传输的数据大小,如果数据长度不足46字节需要尾部补(PAD)字节。因此以太网协议长度最小为60字节,14字节的头部和最小数据字节46之和。
CRC,校验和,用于检验帧内数据内容差错。
MTU和路径MTU
MTU是链路层的一个特性,不同类型的网络大多会有一个最大传输数据上限,要么是物理上限制,要么上逻辑上的限制,目的是为了提高传输效率。而不同类型网络都MTU值不一定相同。比如以太网MTU通常是1500字节。基于链路层之上的IP协议如果要传输大于MTU的数据内容就必须使用分片,单个分片的最大长度不超过MTU以满足链路层的要求。
两台不同网络的主机进行通讯时会经过多个的路由器,而每个路由器的MTU不一定相同,因此此时路径上的最小MTU比较重要,称为路径MTU或PMTU。两台主机路径MTU不一定是固定值,原因在于路由不一定对称(即A到B到路径和B到A到路径不一定一致)。
RFC 1191描述了路径MTU的发现机制,traceroute程序就是基于此发现路径MTU的。
举例
输入ping -s 1473 192.168.1.104 并tcpdump抓包
16:02:35.211773 IP 192.168.1.105 > 192.168.1.104: ICMP echo request, id 3598, seq 3, length 1480
16:02:35.211791 IP 192.168.1.105 > 192.168.1.104: ip-proto-1
16:02:35.333957 IP 192.168.1.104 > 192.168.1.105: ICMP echo reply, id 3598, seq 3, length 1480
16:02:35.337711 IP 192.168.1.104 > 192.168.1.105: ip-proto-1
输入ping -s 1472 192.168.1.104 并tcpdump抓包
15:57:04.738376 IP 192.168.1.105 > 192.168.1.104: ICMP echo request, id 61453, seq 4, length 1480
15:57:04.738394 IP 192.168.1.105 > 192.168.1.104: ip-proto-1
两次命令唯一不同在于 -s 选项上,一次是1472,另一次是1473。 -s选项表示一次发送的数据,第一次要发送1473个字节,而第二需要发送1472字节。第一次就是需要IP分片的情况,因为相同的seq号发送了两次,第二次就没有IP分片,因为就一次发送,一次应答。以太网MTU最大字节是1500,为什么IP分片的临界值是1472。因为IP首部占用20字节,ping的ICMP首部占用8个字节,因此只有1472(即1500-20-8)个字节可供传输数据。
使用ping这个常用命令可用于分析IP分片功能,详细IP层面的协议在后续阐述,这里只是印证IP层是否是遵从MTU的大小进行分片。
ARP协议
协议介绍
ARP协议称为地址解析协议。ARP协议是基于链路层协议的,其目的又是服务于网络层协议。因此学术界对其到底属于哪一层协议颇有争论,可惜没有2.5层协议,不然再恰当不过了。我们这个系列中将其划归到链路层协议。
言归正传,ARP协议设计的目的是在网络通信中根据目的IP地址获取目的主机的物理地址,以便提供给链路层。因此ARP协议服务于IP协议,是IP路由的基础。
将ARP协议用白话文来描述是这样的,分别处在不同村子的张三想和李四打电话,张三不知道李四的电话号码,张三就拿起扩音器在村子里喊话,“我是张三,我的电话号码是a.a.a.a.a.a,谁知道李四的电话号码,知道就打电话通知我”,结果村支部收到张三的喊话,立刻打电话给张三,告诉张三李四的电话是b.b.b.b.b.b。
可能这个比喻不是很精准,但依然能够可以帮助理解ARP协议。张三、李四这类人名表示主机的IP地址,都是一个人(主机)的唯一标识。电话号码表示物理地址,是通信不可或缺的因素。村子比喻为一个计算机网络,不同村子表示不同的网络。村支部表示每个村庄联络的中转站,比喻为路由器。扩音器喊话比喻为一个网络内广播行为。
通过上述比喻我们了解到,ARP请求是向一个网络内进行广播,让网络内的主机包括路由器帮他查找某个IP主机对应的物理地址,查到立刻进行ARP回复请求方。假设查找的IP主机属于同一网络,那么由主机进行ARP应答,如果属于不同的网络,则由路由器进行应答,这个功能就是所谓的ARP代理,即(Proxy ARP)。
如果张三和李四属于同一村子,应该如何描述ARP协议呢?
下图是ARP协议的封装格式。
以太网首部是以太网协议规定的,参见以太网部分。
以太网目的地址为全1是一个特殊的广播地址。
以太网源地址是本机的物理地址。
帧类型,APR固定为0x0806
OP,表示操作类型,1为ARP请求,2为ARP应答。
发送端以太网地址和源地址一样。
发送端IP地址是自己的IP地址
目的以太网地址,如果是ARP请求,因为不知道目的以太网地址,可以填全0。
目的IP地址,如果是ARP请求,就是你说需要查询的IP地址。
举例
输入 telnet 192.168.1.104 命令并且tcpdump抓包.
15:13:38.414910 ARP, Request who-has 192.168.1.104 tell 192.168.1.105, length 28
15:13:38.529437 ARP, Reply 192.168.1.104 is-at 09:64:c2:3b:de:70, length 28
1、请求方的主机地址为192.168.1.105,想知道192.168.1.104,发送ARP请求。
2、主机 192.168.1.104回复请求方,告知其物理地址。
输入arp -a命令后,多出一条192.168.1.104记录。arp -a命令可以查看已经缓存的IP地址和物理地址的对应关系。
应用
ARP协议的IP路由的基础,因为IP路由需要知道下一跳的物理地址。
ARP协议还可以用来检测IP冲突。
RARP协议
协议介绍
RARP协议是逆地址解析协议,跟ARP正好相反,ARP协议是通过IP查找物理地址,而RARP协议是使用物理地址来查找IP地址。
RARP协议的封装格式和ARP协议类似。有几处不同。
a) 以太网首部的帧类型是0x8035。
b) OP操作类型,3表示RARP请求,4表示RARP应答。
c) 如果是RARP请求,目的的IP地址为全0,而目的以太网地址是必填。
RARP协议一般是用于无盘机用于查找自身IP地址的协议,因为无盘机没有本地文件无法保存自身的IP地址,因此需要向服务器查找自身的IP地址。无盘的机的工作原理是向远程服务器获取完IP地址后,加载远程服务器的操作系统进行工作。因为内核一般不会进行磁盘文件读取等工作,因此RARP服务由用户进程实现,而RARP是以太网帧类型是0x8035,与IP,ARP的帧类型都不同,而操作系统内核本应无需关心,但是实际上又有用户进程提供RARP服务,因此使得RARP用户进程和内核高度耦合。RARP服务另一个问题是为了使一台RARP服务关机的情况也能正常工作,会使用多台RARP服务器进行备份,多台RARP服务同时提供服务会带来网络流量增加,由于每台RARP服务都去应答RARP请求,因此会提高以太网发生冲突的概率。
小结
本章主要阐述了以太网协议和ARP/RARP协议,其中以太网协议和ARP重点阐述。以太网协议里有MTU和PMTU的重要概念,基于链路层协议的IP协议必须遵从链路层协议的特性,一、IP数据大于MTU时应该分片。二、IP在进行路由时必须获得物理地址,因此必须使用ARP协议。
我们在ARP举例过程中看到,telnet基于TCP,TCP基于IP,当使用telnet连接时,抓到其先发送ARP协议获取对方IP的物理地址,证明了IP协议遵从链路层协议的一个特性。
我在以太网举例过程中看到,ping基于ICMP, ICMP基于IP,当ping命令传输超过1472字节数据时发送了两次报文,证明了IP协议遵从链路层协议MTU的特性。但是IP层协议有没有遵从路径MTU即PMTU进行分片呢?该话题留个读者深思,先埋下一个伏笔,后续有机会继续探讨这个话题。
参考
《TCP/IP详解-协议》卷一 W.Richard Stevens
计算机网络协议第二章,链路层协议相关推荐
- 《TCP/IP详解》笔记----第二章 链路层
第二章 链路层 1.链路层的作用 TCP/IP的四层模型中,处于最下层的是链路层.它的主要作用是:接收和发送IP模块的数据报:为APR模块发送ARP请求和接收APR应答:为RAPR模块发送RAPR请求 ...
- 计算机网络第六章 链路层和局域网
计算机网络自顶向下书籍中科大B站课程笔记 Part1第六章 链路层和局域网 --广域网也有链路层,但是相对来说比较简单,所以重点放在局域网 --由一个节点如何到达另外一个相邻节点:点到点传输 目标: ...
- 计算机网络 第六章 链路层与局域网
参考书籍:<计算机网络:自顶向下的方法>第七版 链路层提供的服务 将IP数据报封装成帧 链路接入(媒体访问控制协议) 可靠交付(针对某些不稳定的链路,进行差错检验和纠错)(注意以太网是提供 ...
- 链路层协议——SLIP协议和PPP协议
链路层协议--SLIP协议和PPP协议 SLIP协议和PPP协议都是链路层协议,都提供直接相连的两台设备之间传输数据报的方法 SLIP协议 SLIP协议全程 Serial Line IP.它是一种在串 ...
- 链路层协议——以太网协议
以太网协议 一.以太网帧格式 二.ARP协议 2.1 协议格式 2.2 作用 2.3 工作流程 2.4 ARP局域网欺骗攻击 三.MTU对于上层协议的影响 3.1 TCP协议的影响 3.2 UDP协议 ...
- 华为 PPP点到点链路层协议 用在哪里?底层的工作原理是什么?
我是艺博东 ,一个思科出身专注于华为的网工. 文章目录 PPP点到点链路层协议 PPP主要由三类协议族组成 PPP 链路的状态机 简单配置 CHAP 挑战握手认证协议 PAP 密码认证协议 PPP点到 ...
- TCP/IP第二章笔记链路层协议
二.链路层 2.1 引言 链路层由三个目的: 主要为IP模块发送和接受IP数据包: 为ARP模块发送请求和接受ARP应答: 为RARP发送RARP请求和接收RARP应答: TCP/IP协议支持不同的链 ...
- 计算机网络自顶向下方法 第六章 链路层和局域网 6.3 多路访问链路和协议
计算机网络自顶向下方法总结6.3多路访问链路和协议 目录 6.3 多路访问链路和协议 6.3.1 信道划分协议 6.3.2 随机接入协议 6.3.3 轮流协议 6.3.4 DOCSIS:用于电缆以太网 ...
- 计算机网络5-详述链路层:封装成帧、透明传输、差错控制、链路层协议(SR GBN ALOHA CSMA PPP HDLC)、滑动窗口
一.链路层概述 1.基本功能概述 数据链路层主要负责通过一条链路从一个结点向另一个物理链路直接相连的相邻节点传送数据报 即,将其上层网络层交付给其的数据报,安全无差错地传给相邻结点 2.相关术语 节点 ...
最新文章
- nagios+sendmail配置
- ConnectivityManager详解
- Css中Position属性的含义
- 五、【SAP-PM模块】服务采购业务流程
- leetCode 28. Implement strStr() 字符串
- 深入理解表单脚本系列第一篇——表单对象
- 【转】SharePoint Content Database简介
- forEach,for in,for of循环的用法
- 快速学习django
- 如何运行python代码将各个表格的信息集合在一起_如何利用Python编程批量处理Excel来提高日常工作效率!...
- android 刷新界面布局,Android输入法弹出刷新界面布局导致性卡顿
- VSCode 插件Code Runner 中文提示乱码
- 人生不设限,要勇于去闯_《不如去闯》读书心得
- 射频开关:SPDT、级联、树形和矩阵开关
- 第0节为啥捣鼓Busybox-Vi
- 三元相分级统计地图-绘制-USDA soil textural triangle
- 检测特殊字符的正则表达式
- Amazon Rekognition - 图像审核
- 【游戏开发教程】Unity Cinemachine快速上手,详细案例讲解(虚拟相机系统 新发出品 良心教程)
- Comsol动网格使用
热门文章
- 抛开Spring来说,如何自己实现Spring AOP?
- LiveNVR视频流媒体平台支持接收rtsp推流并转换成GB28181输出级联到第三方国标平台服务
- 那个站在科学与艺术路口撸码绘的女同学(二)
- python dict 写入 json 文件 编码问题
- 前端学习路线(自用)
- 【第二篇】升级配置-OSD模块-图传-显示屏-摄像头
- 顶三十的产品理想主义(转载)
- 2018年北京信息科技大学第十届程序设计竞赛暨ACM选拔赛 A题题解
- 云安全-云数据安全防御措施
- 【互斥同步经典PV操作】