zoukankan      html  css  js  c++  java
  • 1/0信封——数据链路层,ARP及RARP

    转自http://m.blog.csdn.net/article/details?id=38269159

    在硬件层,我们通过高压低压电等方式发送1/0序列实现通信,可只有通信双方协商好怎么解读这些1/0序列才有意义,这就是数据链路层协议要做的事情。它就像一个信封,把1/0序列包起来,称之为“帧”。数据链路层主要有以下几个目的:

     

    1. 为IP模块发送和接收IP数据报。
    2. 为ARP模块发送ARP请求和接收ARP应答。
    3. 为RARP模块发送RARP请求和接收RARP应答。

           根据网络所使用的硬件不同,TCP/IP支持多种不同的链路层协议。其中最主要的有以太网协议跟SLIP协议等。

     

    1.以太网协议

           以太网是当今TCP/IP采用的主要局域网技术,它采用一种称作CSMA/CD的媒体接入方法。以太网协议的内容推荐一篇TCP-IP协议详解(2) 小喇叭开始广播 (以太网与WiFi协议)

    2.SLIP:串行线路IP

           SLIP是一种在串行线路上对IP数据报进行封装的简单形式,它适用于家庭中每台计算机几乎都有的RS-232串行端口和高速调制解调器接入Internet。
           它以下面的规则定义帧格式:
    1. IP数据报是以END结束,为了防止把数据发送前的噪声也当作数据接收,一般会在前面也加上一个END。
    2. 如果数据报中真正的出现END,用0Xdb,0Xdc两个连续的字符来取代它,0Xdb也被称作SLIP的ESC字符。
    3. 如果数据报中真的出现ESC,也就是0Xdb,用0Xdb,0Xdd来取代它。
    从上面可以看出,slip帧是不带MAC码的,因为他们直接相连嘛。它很简单,所以还是会有一些缺陷的存在:
    1. 必须事先知道双方的IP地址,没办法把本端的IP地址告知对方。
    2. 没有类型字段,如果一条链路支持SLIP,就只能支持它。
    3. 没有错误检验,如果出错就只能通过上层协议来检验。
    总结,虽然它看上去缺点多多,但是还是被大量使用当中,所以对它了解是必要的。

    3.PPP:点对点协议

    另外一种点对点协议是PPP:点对点协议,它解决了slip协议的所有缺点。标志字段变成了0X7E,所以真的7E需要转义为0X7d、0X5e,遇到真的0X7d,需要转义为0X7d、0X5d,遇到小于0X20的也需要转义,为的是被主机或调制解调器解释为特殊的控制字符。
    跟SLIP相比,它加了一个地址字节,0XFF,一个值为0X03的控制字节,一个2字节的协议,和一个2字节的CRC。

    4.环回接口

    大多数的产品都支持环回接口,以允许允许在同一台主机上的客户端程序和服务器程序进行通信。我们想象中的,在封装的时候如果发现目的地址是环回地址时,可以省去网络层的一些操作,但是大多数系统还是跟普通数据一样完成了,只是在要离开网络层的时候返回给自己。
    这看上去多了很多不必要的操作,但确简化了设计。因为可以把环回接口看作是网络层下面的另一个链路层,网络层传给它就像传给其它链路层一样。

    5.ARP:地址解析协议

    ARP为IP地址和对应的硬件地址之间提供动态映射。IP地址和MAC地址的对应关系是通过ARP协议传递到路由器和主机,每个主机和路由器都有一个ARP cache,里面存有IP和MAC地址对应的关系,但是它也有时间限制的,一般是存活时间是20分钟。
    ARP请求是以广播方式发送的,发送请求的主机会说:“我IP地址是XXXX,MAC地址是XXXXXX,有谁知道IP为YYYY的MAC地址吗?”拥有该IP的主机会回答“我知道,该IP地址属于我的一个NIC(网卡),它的MAC地址是YYYYYY。”请求是广播的,但应答是单播的。另外,其他主机和路由器也会对比自己的IP和MAC地址,如果不一样的话就更新。

    6.RARP:逆地址解析协议

    具有本地磁盘的系统引导时,一般是从磁盘上的配置文件中读取IP地址。但是无盘机,需要采用RARP协议来读取IP地址,过程是从接口卡上读取唯一的硬件地址,然后发送一个RARP广播请求,请求某个主机响应该无盘系统的IP地址。
    一个行者的旅途
  • 相关阅读:
    阿里P8聊并发编程:线程中断和终止
    浅谈Java中的锁:Synchronized、重入锁、读写锁
    史上最全Java面试题!进程,线程相关部分下篇(带全部答案)
    @史上最全Java面试题!关于volatile关键字篇(带全部答案)
    @史上最全Java面试题!进程,线程相关部分上篇(带全部答案)
    一道号称“史上最难”java面试题引发的线程安全思考,掌握了吗?
    stopWatch
    mysql语句及执行计划
    Awr
    文件下载
  • 原文地址:https://www.cnblogs.com/xinzghewanfu/p/5904260.html
Copyright © 2011-2022 走看看