2.2 网络接口层
2.2.1 相关介绍
TCP/IP模型的网络接口层实际上没有规定任何具体的协议,各物理网络可以使用自己的物理层协议和数据链路层协议,仅仅提供一个各种网络和TCP/IP接口的要求。
在TCP/IP模型中,网络接口层对应ISO/OSI参考模型的物理层和数据链路层
为了使数据链路层更好的适应多种局域网,802委员会将局域网的数据链路层分为两个子层:
- MAC子层:帧的封装和拆封、物理介质传输差错的检测、寻址、实现介质访问控制协议
- LLC子层:连接管理(建立和释放连接)、与高层的接口、帧的可靠、按序传输及流量控制
2.2.2 MAC地址
MAC(Medium/Media Access Control)地址,用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48位)。其中,前三个字节是由IEEE的注册管理机构RA负责给不同厂家分配的代码(高位24位),也称为"编制上唯一的标识符"(Organizationally Unique Identifier),后三个字节(低位24位)由各厂家自行指派给生产的适配器接口,称为扩展标识符(唯一性)。
在局域网中通过查找MAC地址表来进行选路,MAC地址表的形成为:目的MAC+入接口形成映射对应关系。
2.2.3 CSMA/CD
CSMA/CD(载波侦听多路访问/冲突检测),属于数据链路层协议。
- 想发送信息的接点首先“监听”信道,看是否有信号在传输。如果信道空闲,就立即发送。
- 如果信道忙,则继续监听,当传输中的最后一比特通过后,在继续等待一段时间,以提供适当的间隔,然后开始传送。
- 发送信息的站点在发送过程中同时监听信道,检测是否有冲突发生。
- 当发送数据的节点检测到冲突后,就立即停止该次数据传输,并向信道发送长度为4字节的“干扰”信号,以确保其他节点也发现该冲突,等待一段随即时间,再尝试重新发送。
2.2.4 ARP协议
ARP:地址解析协议(Address Resolution Protocol)是在仅知道主机的IP地址时确定其物理地址的一种协议。
- ARP的缺点:
ARP协议是无状态的协议,不会检查自己是否发过请求包,也不管是否是合法的应答,只要收到目标MAC是自己的ARP reply包或arp广播包(包括ARP request和ARP reply),都会接受并缓存。这就为ARP欺骗提供了可能,恶意节点可以发布虚假的ARP报文从而影响网内结点的通信,甚至可以做“中间人”。
从影响网络连接通畅的方式来看,ARP欺骗分为二种,一种是对路由器ARP表的欺骗;另一种是对内网PC的网关欺骗。
一般来说,ARP欺骗攻击的后果非常严重,大多数情况下会造成大面积掉线;如果是被中间人攻击,截取Internet与这个目标主机的之间的全部通信,则会导致信息泄露,在主机看来访问外部服务的响应变慢;或者对于服务器而言,上层应用忙于处理这种异常而无法响应外来请求。
- ARP代理:
代理ARP是ARP协议的一个变种。对于没有配置缺省网关的计算机要和其他网络中的计算机实现通信,网关收到源计算机的 ARP 请求会使用自己的 MAC 地址与目标计算机的 IP地址对源计算机进行应答。
PC访问server 8.8.8.8时,不设置默认网关,会直接采用代理ARP方式询问,即直接询问跨网段目的8.8.8.8的IP地址。而由于路由器Router默认开启了代理ARP功能,所以直接用自己的MAC地址回应。
注:实际网络中,无论是同网段还是跨网段通信(例如访问互联网),绝大情况下都是使用正常的ARP,而不是代理ARP。原因如下:
- 代理ARP仅仅是正常ARP的一个拓展使用,是可选项而不是必要项;
- 代理ARP和ARP的具体实现,跟电脑是否有设置网关有直接的关系;有网关通过ARP,没网关通过代理ARP;代理ARP可以看成是ARP的补充;
- 免费(无故)ARP:
主机发送ARP查找自己的IP地址。通常它发生在系统引导期间进行接口配置的时候。
作用:
- 宣告广播,以告诉整个广播域,目前这个IP所对应的MAC地址是什么。
- 查看广播域内有没有别的主机使用自己的IP,如果使用了,则在界面上弹出“IP冲突”字样。
- 反向ARP(RARP):
功能和ARP协议相对,其将局域网中某个主机的物理地址转换为IP地址。
作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。(无盘工作站:是把硬盘和主机分离,无盘工作站只执行操作不执行存储。)
- RARP协议工作流程:
- 给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址,并且请求任何收到此请求的RARP服务器分配一个IP地址。
- 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址。
- 如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用,如果不存在,RARP服务器对此不做任何的响应。
- 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。
更多网络基础内容可见: