精华内容
下载资源
问答
  • 以太网数据帧格式及ARP协议

    千次阅读 2020-08-29 15:59:52
    在物理层上看,一个完整的以太网帧有7个字段,事实上,前两个字段并不能算是真正意义上的以太网数据帧,它们是以太网在物理层上发送以太网数据时添加上去的。为了实现底层数据的正确阐述,物理层使用7个字节前同步码...

    一、以太网中数据帧结构

    以太网是目前最流行的一种局域网组网技术(其他常见局域网组网技术还有令牌环局域网、无线局域网、ATM局域网),以太网技术的正式标准是IEEE 802.3标准,它规定了在以太网中传输的数据帧结构,如下图所示。

                  

    在物理层上看,一个完整的以太网帧有7个字段,事实上,前两个字段并不能算是真正意义上的以太网数据帧,它们是以太网在物理层上发送以太网数据时添加上去的。为了实现底层数据的正确阐述,物理层使用7个字节前同步码(0和1交替的56位(55-55-55-55-55-55-55))实现物理层帧输入/输出同步;使用1个字节的SFD(帧首定界符,固定为10101011)标识帧的开始。上图中剩下的5个字段是真正的以太网数据,其中包含了目的地址和源地址,它们都是6字节长度(通常每个网卡都有1个6个字节MAC地址,以在以太网中唯一地标识自己)。网卡接收数据时,通过将目的地址字段和自身的MAC地址做比较,判断是否接收该数据包。通常,将这里的6字节目的地址按照下面的格式来书写,如:00-01-02-03-04-05。这6个字节在以太网中是按照从左到右的顺序发送的,同时对每个字节来说,最先发送的是最低位bit0,最后是最高位bit7。

          在以太网帧中,目的地址可以分为三类:单播地址、多播地址和广播地址。单播地址通常与一个具体网卡的MAC地址相对应,它要求第一个字节的bit0(即最先发出去的位)必须是0;多播地址则要求第一个字节的bit0为1,这样,在网络中多播地址不会与任何网卡的MAC相同,多播数据可以被很多个网卡同时接收;广播地址的所有48位全为1(即FF-FF-FF-FF-FF-FF),同一局域网中的所有网卡可以接收广播数据包。

    上图中的长度/类型具有两个意义,当这两个字节的值小雨1518时,那么它就代表其后数据字段的长度;如果这两个字节的值大于1518,则表示该以太网帧中的数据属于哪个上层协议(例如0x800,代表IP数据包;0x806,代表ARP数据包等。)

    在使用网卡进行数据包的发送与接收时,网卡已为我们完成了物理层的所有工作,驱动程序要做的是,在发送数据时,将目的地址、源地址、类型/长度、数据和填充这些值写入网卡,网卡自动计算其CRC并添加在数据帧尾部,同时对数据帧进行物理层的封装,最后将数据帧发送出去;在接收数据时,网卡会自动检测并接收数据包,验证校验和并把上述四个字段的值放在内部SRAM中供控制器读取。

    TCP/IP协议有自己的地址:32bit的IP地址(网络地址),网络层发送数据包时只知道目的地址的IP地址,而底层接口(如以太网驱动程序)必须知道对方的硬件地址才能将数据发送出去。

    二、ARP协议

    ARP的功能是在32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射,为上层将底层的物理地址差异屏蔽起来,这样上层的因特网协议就可以灵活地使用IP地址进行通信了。ARP协议的基本功能是使用目标主机的IP地址,查询其对应的MAC地址,以保证底层链路上数据包通信的进行。为了实现在网络接口物理地址与IP地址间的转换,ARP协议中引入了ARP缓存表的概念。ARP缓存表中记录了一条一条的<IP地址,MAC地址>对,他们是主机最近运行获得的关于周围其他主机的IP地址到物理地址的绑定,当需要发送IP数据包时,ARP层根据目的IP地址来查找ARP缓存表,并将匹配的MAC地址装入以太网帧首部,最后发送以太网数据。

    ARP缓存表的建立与ARP数据包是密切相关的。在以太网中,ARP数据包和IP数据包是两个独立的部分,它们都封装在以太网帧中发送。ARP数据包的种类有两种:一是ARP请求包,它是通过以太网广播的方式发送的,用于向具有某个IP地址的主机发送请求,希望该主机返回其MAC地址;二是ARP应答包,收到ARP请求的主机会比对该数据包中的IP地址与自己的IP地址是否符合,若是,则该主机向源主机返回一个ARP应答包。向源主机报告自己的MAC地址。源主机通过提取ARP应答包中的相关字段来更新ARP缓存表。在Windows控制台上输入arp -a,可以查看操作系统中使用的ARP缓存表。

    举一个简单的例子来看看ARP的功能。假如我们的主机(192.168.1.11)需要向开发板(192.168.1.37)发送一个IP数据包,当发送数据时,主机会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址为(04-02-35-00-00-01),此时,主机直接把目标MAC地址写入以太网首部发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,此时比较不幸,我们的数据需要被延迟发送,随后主机会先在网络上发送一个广播(ARP请求,以太网目的地址为FF-FF-FF-FF-FF-FF),广播的ARP请求表示同一网段内所有主机将会收到这样一条信息:“192.168.1.37的MAC地址是什么?请回答”。网络IP地址为192.168.1.37(开发板)的主机接收到这个帧后,它有义务做出这样的回答(ARP应答):“192.168.1.37的MAC地址是(04-02-35-00-00-01)”。这样,主机就知道了开发板的MAC地址,先前被延时的数据包就可以被发送了,此外,主机将这个地址对保存在缓存表中,以便后续数据包发送时使用。

    ARP协议的核心就是对ARP缓存表的操作。发送数据包时,查找缓存表以得到目的MAC地址,此外,ARP还需要不断地处理ARP请求包和ARP应答包,以保证缓存表中各个表项的有效性。ARP的实质就是对缓存表的建立、更新、查询等操作。

    2.2 ARP报文

    要在源主机上建立关于目标主机的IP地址与MAC地址对应表项,则源主机和目的主机的基本信息交互式必须的,简单地说就是,源主机如何告诉目的主机:我需要你的MAC地址;而目的主机如何回复:这就是我的MAC地址。这时ARP报文(ARP数据包)就派上用场了。

    ARP请求和ARP应答都是被组装在一个ARP数据包中发送的,ARP包的组成结构如下图所示。需要注意的是:ARP包时被封装在以太网帧中发送的,所以在图中也列出了以太网帧头部。

          以太网帧头部中的前两个字段是以太网的MAC地址和源MAC地址,目的地址为全1的特殊地址是以太网广播地址。在ARP表项建立前,源主机只知道目的主机的IP地址,并不知道其MAC地址,所以在数据链路上,源主机只有通过广播的方式将ARP请求数据包发送出去,同一网段上的所有以太网接口都会接收到广播的数据包。

           两个字节长的以太网帧类型表示帧中数据的类型。对于ARP包来说,该字段值为0x0806;对IP包来说,该字段的值为0x0800。接下来就是ARP数据包部分了,第一个硬件类型字段表示发送方想要知道的硬件接口类型,对于以太网MAC地址,它的值为1.协议类型字段表示要映射的协议地址类型,它的值为0x0800时,即表示要映射为IP地址,该值与以太网数据帧头中的类型字段的值使用相同的一组值。

    接下来的两个单字节长度的字段,称为硬件地址长度和协议地址长度,它们分别指出硬件地址和协议地址的长度,长度单位为字节。对于以太网上ARP请求或应答来说,它们的值分别为6和4,代表MAC地址的长度和IP地址的长度。在ARP协议包中流出硬件地址长度和协议地址长度字段可以使得ARP协议在任何网络中被使用,而不仅仅只在以太网中。

          操作字段op指出ARP数据包的类型,它们可以使ARP请求(值为1)、ARP应答(值为2)。

          接下来的四个字段是发送端的以太网MAC地址、发送端的IP地址、目的端的以太网MAC地址和目的端的IP地址。

     

     

    展开全文
  • 一、物理层扩展以太网、 二、数据链路层 扩展以太网、 三、网桥分类、 四、透明网桥 : 自学习算法、 五、源路由网桥、 六、以太网交换机、 七、冲突域 和 广播域、 八、冲突域 和 广播域 示例、





    一、物理层扩展以太网



    双绞线链路距离限制 : 使用 集线器 连接主机 , 每条线路的距离不能超过 100100 米 ;


    使用光纤链路 :

    ① 光纤链路简介 : 链路使用 光纤介质 , 光纤可以长距离传输 , 在 主机输出端口 使用光纤调制器 , 在 集线器 输入端口 , 使用 光纤解调器 ;

    ② 设备 : 主机 -> 光纤调制器 -> 光纤链路 -> 光纤解调器 -> 集线器



    使用主干集线器 :

    ① 小冲突域 : 集线器 连接 的 多个主机 , 处于一个冲突域 中 , 一个冲突域 同一个时间 , 只能有一台主机进行通信 , 如果有 两台主机 同时发送信息 , 就会产生冲突 ;

    ② 主干集线器 : 单个集线器 可以连接多台主机 , 使用一个 主干集线器 连接 多个集线器 ( A,B,CA, B, C ) , 每个集线器 可以连接多台主机 , AA 冲突域 中的主机 , 可以与 CC 冲突域中的主机通信 ;

    ③ 大冲突域 : 这样一来 , 33 个小的冲突域 , 变成了一个大冲突域 ;

    冲突域主机变多 , 数据传输的效率变低了 , 发生冲突的概率变高了 ;





    二、数据链路层 扩展以太网



    网桥作用 : 网桥 根据 MAC 帧 目的地址 , 对帧进行 转发 和 过滤 ; 网桥收到 MAC 帧后 , 先检查目的地址 , 再确定将该帧转发到指定的接口 , 或直接丢弃 ;



    网段 概念 : 计算机网络中 , 使用同一个物理设备 , 使两台主机可以直接通信 ;

    • 传输介质
    • 中继器
    • 集线器


    网桥 与 集线器 对比 :

    • 集线器 : 收到数据后 , 会 全部转发出去 ;
    • 网桥 : 收到数据后 , 会检查数据的目的 MAC 地址 , 选择一个接口转发出去 , 或丢弃 ;


    网桥 优势 :

    ① 吞吐量大 : 过滤通信量 , 增加网络的吞吐量 ; 网桥可以分割冲突域 , 冲突域内可以通信 , 不会向其它冲突域发送数据 ;

    ② 范围大 : 网桥 扩大了物理范围 ;

    ③ 提高可靠性 : 当一个网段 ( 冲突域 ) 发生了故障 , 不影响其它网段通信 ;

    ④ 互联 : 网桥 可以互连 不同物理层 , 不同 MAC 子层 , 不同 速率 的以太网 ;





    三、网桥分类



    网桥分类 :

    • 透明网桥
    • 源路由算法




    四、透明网桥 : 自学习算法



    透明网桥 : 以太网 上的 站点 , 不知道发出的 数据帧 , 要经过哪些网桥 , 整个网络的拓扑结构 是通过不断学习 , 得出的 ;



    自学习 算法 :

    网桥刚介入时 , 形成一个空白的转发表 , 通过不断使用的过程 , 逐步填写转发表 中的 地址 和 对应 接口 ;


    网段 11 : A,BA, B 两台主机 ;

    网桥 11 : 转发表 11

    网段 22 : C,DC, D 两台主机 ;

    网桥 22 : 转发表 22

    网段 33 : E,FE , F 两台主机 ;



    AA 主机 发送数据到 BB 主机 :

    AA 发送 数据帧 给 本网段的 BB 主机 , 网桥 11 的 接口 11

    • 广播到 BB 发现是给自己的 , 处理该数据帧;

    • 然后广播到 网桥 11 接口 11 ;

      • 数据帧源地址 : 首先 在 网桥 11 转发表 中 查看数据帧源地址 AA , 没有该地址 , 将 "AA、 网桥 11 接口 11" 记录到转发表中 ;

      • 数据帧目的地址 : 然后 在 网桥 11 转发表 中 查询目的地址 BB , 没有该地址 , 将其发送出去 ;

    ② 此时会向 网段 22C,DC,D 主机 , 网桥 22 的接口 11 发送该数据帧 ;

    • 主机 CC 接收到该帧 , 发现不是给自己的 , 丢弃 ;
    • 主机 DD 接收到该帧 , 发现不是给自己的 , 丢弃 ;
    • 网桥 22 接口 11 收到该帧
      • 数据帧源地址 : 首先 在 网桥 22 转发表 中 查看数据帧源地址 AA , 没有该地址 , 将 "AA、 网桥 22 接口 11" 记录到转发表中 ;
      • 数据帧目的地址 : 然后 在 网桥 22 转发表 中 查询目的地址 BB , 没有该地址 , 将其发送出去 ;


    FF 主机 发送数据到 CC 主机 :

    FF 发送 数据帧 给 本网段的 EE 主机 , 网桥 22 的 接口 22

    • 广播到 EE 发现不是给自己的 , 直接丢弃 ;

    • 然后广播到 网桥 22 接口 22 ;

      • 数据帧源地址 : 首先 在 网桥 22 转发表 中 查看数据帧源地址 FF , 没有该地址 , 将 "FF、 网桥 22 接口 22" 记录到转发表中 ;

      • 数据帧目的地址 : 然后 在 网桥 22 转发表 中 查询目的地址 CC , 没有该地址 , 将其发送出去 ;

    ② 此时会向 网段 22C,DC,D 主机 , 网桥 11 的接口 22 发送该数据帧 ;

    • 主机 CC 接收到该帧 , 处理 ;
    • 主机 DD 接收到该帧 , 发现不是给自己的 , 丢弃 ;
    • 网桥 11 接口 22 收到该帧
      • 数据帧源地址 : 首先 在 网桥 11 转发表 中 查看数据帧源地址 FF , 没有该地址 , 将 "FF、 网桥 11 接口 22" 记录到转发表中 ;
      • 数据帧目的地址 : 然后 在 网桥 11 转发表 中 查询目的地址 CC , 没有该地址 , 将其发送出去 ;

    BB 发送数据给 AA :

    BB 发送 数据帧 给 本网段的 AA 主机 , 网桥 11 的 接口 11

    • 广播到 AA 发现是给自己的 , 处理该数据帧 ;

    • 然后广播到 网桥 11 接口 11 ;

      • 数据帧源地址 : 首先 在 网桥 11 转发表 中 查看数据帧源地址 BB , 没有该地址 , 将 "BB、 网桥 11 接口 11" 记录到转发表中 ;

      • 数据帧目的地址 : 然后 在 网桥 11 转发表 中 查询目的地址 AA , 发现 AA 就在左边网段内 , 不再向后转发 , 直接丢弃该数据 ;


    如果每个站点都发送过数据帧 , 那么每个网桥中 , 都记录有完整的转发表 ;

    转发表不是一成不变的 , 网桥会每隔几分钟 , 就会重新学习一次 , 更新转发表 , 可以实时反映最新的网络拓扑状态 ;





    五、源路由网桥



    源路由网桥 简介 :

    ① 源路由网桥 : 发送数据帧 时 , 将 详细的 最佳路由信息 放在帧首部 ;

    ② 工作机制 : 发送方 AA 发送数据前 , 先 以广播的方式 , 向 接收方 BB 发送一个 发现帧 , 会得到 各种路由方案 ;

    ③ 最佳路径方案 : 选择一个 路由最少 , 时间最短 的路径 , 作为最佳路径 ; 以后凡是由 AA 发送到 BB 的数据帧 , 都使用该方案 ;





    六、以太网交换机



    以太网交换机 : 是一个多接口网桥 , 以太网交换机上有十几个端口 , 每个端口可以连接 集线器 或 主机 ;

    以太网交换机 每个端口 引出的都是一个冲突域 ;

    以太网交换机 可以 让 每个 连接在该交换机的 主机 独占媒体带宽 ;


    以太网交换机分类 :

    • 直通式交换机
    • 存储转发式交换机

    ① 直通式交换机 : 只检查 目的地址 ( 6 字节 ) , 检查完后 , 直接转发 ; 延迟小 , 可靠性低 , 不支持不同速率的端口交换 ;

    ② 存储转发式交换机 :将 数据帧 放入高速缓存 中 , 检查正确性 , 正确转发 , 错误丢弃 ; 延迟大 , 可靠性高 , 支持不同速率的端口交换 ;





    七、冲突域 和 广播域



    冲突域 : 同一个 冲突域 中 , 每个节点都能收到被发送的 数据帧 ; 同一时间 只能有一台设备 发送信息 的范围 ;

    广播域 : 网络中能收到任何一台设备发出的广播帧的 设备的集合 ; 某站点发出一个广播信号 , 所有能接受这个信号的设备范围 , 称为广播域 ;

    物理层设备 : 中继器 , 集线器 ;

    • 不能隔离冲突域
    • 不能隔离广播域

    数据链路层设备 : 网桥 , 交换机 ;

    • 能隔离冲突域
    • 不能隔离广播域

    网络层设备 : 路由器 ;

    • 能隔离冲突域
    • 能隔离广播域




    八、冲突域 和 广播域 示例



    下图中 冲突域 与 广播域 个数 ?

    在这里插入图片描述

    广播域判断 :

    • 路由器可以隔离广播域 , 查看是否有路由器 , 如果有一个路由器 , 路由器两个接口连接两个网络 , 那么就有两个广播域 ;
    • 物理层 , 数据链路层 设备 不能隔离广播域 , 如果没有路由器 , 那么所有的设备构成一个广播域 , 广播域个数是 11 个 ;

    冲突域 :

    • 物理层设备 不能隔离冲突域 , 集线器是物理层设备 , 在集线器设备上连接的多个主机 , 组成一个冲突域 ;
    • 数据链路层设备可以隔离冲突域 , 以太网交换机 是数据链路层设备 , 每个接口都是一个 冲突域 , 其有四个接口 , 引出 44 个冲突域 ;
    展开全文
  • sock使用UDP协议进行广播发送数据

    千次阅读 2018-08-21 23:01:07
    wlp3s0b1 Link encap:以太网 硬件地址 inet 地址:192.168.1.102 广播:192.168.1.255 掩码:255.255.255.0 可以看到主机的广播地址是192.168.1.255 编写UDP服务器程序: #include &l...

    使用ifconfig命令查看自己的广播地址:

    wlp3s0b1  Link encap:以太网  硬件地址  
              inet 地址:192.168.1.102  广播:192.168.1.255  掩码:255.255.255.0
             
             
    

    可以看到主机的广播地址是192.168.1.255

    编写UDP服务器程序:

    #include <sys/socket.h>
    #include <netdb.h>
    #include <unistd.h>
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <signal.h>
    #include <time.h>
    #include <arpa/inet.h>
    
    int sockfd;
    
    void sig_handler(int signo);
    
    int main(int argc, char * argv[])
    {
        if(argc < 2)
        {
            printf("usage: %s port\n", argv[0]);
            exit(1);
        }
        if(signal(SIGINT, sig_handler) == SIG_ERR)    //开始捕获信号 SIGINT 
        {
            perror("signal sigint error!");
            exit(1);
        }
        /*步骤1: 创建socket*/
        sockfd = socket(AF_INET, SOCK_DGRAM, 0);
        if(sockfd < 0)
        {
            perror("socket error!");
            exit(1);
        }
      
        /*步骤2: 调用bind函数对socket和地址进行绑定*/
        struct sockaddr_in serveraddr;
        memset(&serveraddr, 0, sizeof(serveraddr));
        serveraddr.sin_family = AF_INET;
        serveraddr.sin_port = htons(atoi(argv[1])); //port
        serveraddr.sin_addr.s_addr = INADDR_ANY;  //ip匹配所有的ip
        if(bind(sockfd, (struct sockaddr*)&serveraddr, sizeof(serveraddr)) < 0)
        {
            perror("bind error!");
            exit(1);
        }
     
        struct sockaddr_in clientaddr;
        socklen_t len = sizeof(clientaddr);
        char buffer[1024];
        while(1)
        {
            memset(buffer, 0, sizeof(buffer));
            memset(&clientaddr, 0, sizeof(clientaddr));
    
            if(recvfrom(sockfd, buffer, sizeof(buffer), 0, (struct sockaddr*)&clientaddr, &len) < 0)
            {
                perror("recvfrom error!");
                exit(1);
            }
            else
            {
                char ip[16];
                inet_ntop(AF_INET, &clientaddr.sin_addr.s_addr, ip, sizeof(ip));
                int port = ntohs(clientaddr.sin_port);
                printf("%s(%d): %s\n", ip, port, buffer);
            }
    
            
        }    
    
    
    
    
    
    
    }
    
    
    
    void sig_handler(int signo)
    {
        if(signo == SIGINT)
        {
            printf("receiver clolse!\n");;
            close(sockfd);
            exit(1);
        }
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    编写UDP广播程序:

    #include <sys/socket.h>
    #include <netdb.h>
    #include <unistd.h>
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <signal.h>
    #include <time.h>
    #include <arpa/inet.h>
    
    int sockfd;
    
    void sig_handler(int signo);
    
    int main(int argc, char * argv[])
    {
        if(argc < 3)
        {
            printf("usage: %s port\n", argv[0]);
            exit(1);
        }
        if(signal(SIGINT, sig_handler) == SIG_ERR)    //开始捕获信号 SIGINT 
        {
            perror("signal sigint error!");
            exit(1);
        }
        /*步骤1: 创建socket*/
        sockfd = socket(AF_INET, SOCK_DGRAM, 0);
        if(sockfd < 0)
        {
            perror("socket error!");
            exit(1);
        }
        int opt = 1;
        
        setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &opt, sizeof(opt));
    
    
        /*步骤2: 调用bind函数对socket和地址进行绑定*/
        struct sockaddr_in serveraddr;
        memset(&serveraddr, 0, sizeof(serveraddr));
        serveraddr.sin_family = AF_INET;
        serveraddr.sin_port = htons(atoi(argv[2])); //port
        inet_ntop(AF_INET,  (struct sockaddr*)&serveraddr.sin_addr.s_addr,argv[1], sizeof(argv[1]));
        printf("I will broadcast...\n");
    
        char *info = "hello Andrew";
    
        size_t size = strlen(info) * sizeof(char);
        if(sendto(sockfd, info, size, 0, (struct sockaddr *)&serveraddr, sizeof(serveraddr)) < 0)
        {
            perror("sendto error!");
            exit(1);
        }
        else
        {
            printf("broadcastn success!\n");
        }
    
    
    }
    
    
    
    void sig_handler(int signo)
    {
        if(signo == SIGINT)
        {
            printf("receiver clolse!\n");;
            close(sockfd);
            exit(1);
        }
    }
    
    
    
    
    
    
    
    
    
    
    
    
    
    

    测试:

    运行服务器:

    andrew@andrew-Thurley:~/work/network$ bin/receiver 8888
    127.0.0.1(35423): hello Andrew
    127.0.0.1(43304): hello Andrew
    127.0.0.1(58134): hello Andrew
    127.0.0.1(53262): hello Andrew
    127.0.0.1(35285): hello Andrew
    127.0.0.1(58630): hello Andrew
    127.0.0.1(41278): hello Andrew
    127.0.0.1(39032): hello Andrew
    127.0.0.1(55642): hello Andrew
    127.0.0.1(44132): hello Andrew
    127.0.0.1(35112): hello Andrew
    
    

    运行客户端:

    andrew@andrew-Thurley:~/work/network$ bin/broadcast 192.168.1.255
    usage: bin/broadcast port
    andrew@andrew-Thurley:~/work/network$ bin/broadcast 192.168.1.255 8888
    I will broadcast...
    broadcastn success!
    andrew@andrew-Thurley:~/work/network$ bin/broadcast 192.168.1.255 8888
    I will broadcast...
    broadcastn success!
    andrew@andrew-Thurley:~/work/network$ bin/broadcast 192.168.1.255 8888
    

     

     

     

     

     

     

     

    展开全文
  • 在局域网中,针对使用总线和Hub形成的局域网,则使用的是广播信道,在数据链路层使用的协议是CSMA/CD(载波监听多路访问/冲突检测)接下来针对局域网做重点分析:局域网的特点网络为一个单位所拥有,且地理范围和...

    在广域网中,针对用户连接ISP进行上网时,使用点对点的链路,用到的协议就是PPP点对点协议。

    在局域网中,针对使用总线和Hub形成的局域网,则使用的是广播信道,在数据链路层使用的协议是CSMA/CD(载波监听多路访问/冲突检测)

    接下来针对局域网做重点分析:

    局域网的特点

    网络为一个单位所拥有,且地理范围和站点数目均有限

    局域网具有的一些优点

    • 具有广播功能,可以从一个站点很方便地访问全网,局域网的主机可共享连接在局域网上的各种硬件资源和软件资源。
    • 便于系统的扩展和逐渐的演变
    • 提高了系统的可靠性、可用性和生存性

    局域网按网络拓扑进行分类:

    拓扑结构

    图中的总线网两端的匹配电阻吸收在总线上传播的电磁波信号能量,避免在总线上产生有害的电磁波反射。

    为了能够使众多用户能够合理而方便地共享通信媒体资源,所以需要考虑共享信道的问题。

    在技术上有两种实现方法:

    • 静态划分信道

      • 频分复用
      • 时分复用
      • 波分复用
      • 码分复用
    • 动态媒体接入控制(多点接入)

      • 随机接入:用户可随机发送信息,但是如果多个用户在同一时刻发送信息,那么再共享媒体上就要产生碰撞(冲突),似的这些用户都发送失败,所以必须要有解决碰撞的网络协议。
      • 受控接入:用户不能随意发送信息,必须服从一定的控制,比如有分散控制的令牌环局域网和集中控制的多点线路探询(轮询)

    采用静态划分信道可以解决问题,用户只要分配到了信道就不会和其他用户发生冲突。但是这种划分信道的方法代价高,不适合局域网使用

    对于不同速率以太网的一般叫法:

    • 传统以太网:10Mb/s速率的以太网
    • 快速以太网:100Mb/s速率的以太网
    • 吉比特以太网:1Gb/s速率的以太网
    • 10吉比特以太网:10Gb/s速率的以太网

    以太网的两个标准

    • DIX Ethernet V2 标准
    • IEEE 802.3 标准

    以太网的起源

    以太网是施乐公司于1975年研制成功的。那时,以太网是一种基带总线局域网,当时的数据率为2.94Mb/s。以无源电缆作为总线来传送数据帧,并以曾经在历史上表示传播电磁波的以太来命名。1976年7月,Mercalfe和Boggs发表了他们的以太网里程碑论文。1980年9月,DEC公司和英特尔公司还有施乐公司联合提出了以太网规约的第一版 DIX V1,后来经过1982年的修改成了一直沿用至今的 DIX Ethernet V2 标准。(DIX为三家公司名称的首字母缩写)

    在此基础上,IEEE 802委员会的802.3工作组于1983年制定了第一个IEEE的以太网标准。即,IEEE 802.3 标准,速率为10Mb/s。

    由于有关厂商在商业上的竞争,IEEE 802委员会未能形成统一的最佳局域网标准,所以被迫指定了几个不同的局域网标准,比如802.4令牌总线网,802.5令牌环网等。为了使数据链路层适应比较多的局域网标准,IEEE 802委员会就把局域网的数据链路层拆成了两个子层,即逻辑链路控制LLC子层媒体接入控制MAC子层。

    与接入到传输媒体(传输线)有关的内容都放在MAC子层,而LLC子层则与传输没图无关,不管采用何种传输媒体,MAC子层相对于LLC子层来说都是透明的。

    到了20世纪90年代后,竞争激烈的局域网市场逐渐明朗,以太网在局域网市场中获得了垄断地位,并且由于Internet的快速发展而TCP/IP系统经常使用 DIX Ethernet V2 标准的局域网,所以现在基于IEEE 802.3的局域网已经基本消失了。所以LLC协议基本失去作用,很多厂商的适配器上只装有MAC协议。

    适配器

    计算机与外界局域网是通过通信适配器来进行连接的。这个适配器就是我们常说的网络接口卡(NIC)即网卡。适配器和局域网之间通信是通过电缆或者双绞线一串行方式进行的,适配器和计算机之间的通信是通过计算机主板上的I/O总线以并行传输方式进行的。所以网卡一个重要功能就是进行数据串行传输和并行传输的转换。

    适配器在接收和发送各种帧时不使用计算机的CPU,当网卡收到错误的帧时,直接丢掉,当收到正确的帧时,通过中断方式告诉CPU并将数据交付网络层。

    注:计算机的硬件地址(MAC地址)就在网卡中,而计算机的逻辑地址——IP地址,则在计算机的存储器中。

    展开全文
  • 以太网数据帧相关

    千次阅读 2013-09-25 16:23:07
    以太网帧格式如下: 802.3 以太网帧结构 前导码 帧开始符 MAC 目标地址 MAC 源地址 802.1Q 标签 (可选) 以太类型或长度 负载 冗余校验 帧间距 10101010 7个octet ...
  • 以太网的三种广播

    千次阅读 2012-09-08 18:49:57
    MAC层的广播是目的MAC为48个1,MAC层的组播为目的MAC第一个字节最低位是1. IP的广播有三种: 255.255.255.255叫本地广播,也叫直接,不能跨路由广播。 172.16.53.255叫子网广播广播给172.16.53.255这个子网,...
  • 使用广播信道的以太网

    千次阅读 2016-02-11 16:03:41
    使用广播信道的以太网1. 使用集线器的星形拓扑 双绞线以太网总是和集线器配合使用的。每个站需要用两对无屏蔽双绞线(做在一根电缆内),分别用于发送和接收。 10BASE-T双绞线以太网的出现,是局域网发展史上的一个...
  • 以太网数据帧和ARP协议

    千次阅读 2019-07-02 13:12:14
    以太网数据帧 在以太网环境下,数据链路层的数据帧格式为: 在以太网环境下,需要得知目的主机的mac地址才可以进行数据帧的发送,但是在数据帧从上层向下封装时,并无法得知目的主机的mac地址,所以在数据链路层...
  • 以太网数据包如何发送

    千次阅读 2013-10-12 17:23:20
    以太网中数据包是如何发送的?ip和MAC有什么关系呢?下面所讲的数据传送只设计网络层和数据链路层。在linux下。 在局域网内,一台主机H1(192.168.1.110)想发送数据给主机H2(192.168.1.111)时。数据是怎样过去...
  • ,举个简单的例子,那就是PC1发送一个广播帧,接在交换机上的所有的PC都会收到这个广播数据帧并且都要去分析这个报文(即使它可能并不需要这个数据并且最终将收到的数据帧丢弃,但check数据是否是发送给自己的这一...
  • 以太网数据帧结构以及大小限制

    千次阅读 2018-04-09 21:47:58
    以太网数据帧结构 以太网是目前最流行的一种局域网组网技术(其他常见局域网组网技术还有令牌环局域网、无线局域网、ATM局域网),以太网技术的正式标准是IEEE 802.3标准,它规定了在以太网中传输的数据帧结构,如...
  • 数据链路层——广播信道CSMA/CD协议

    千次阅读 2017-11-26 12:01:10
    传统以太网如果Alice在给Bob发送消息时,此时恰好Tom发给Alice的消息也到达了。 解决: 引入信道分配机制:在发送消息之前首先检测信道上有没有别的消息;若没有,则发送;若有,则等待一段时间再尝试发送。 ...
  • 以太网数据链路层)学习笔记

    万次阅读 2016-05-05 18:08:44
    以太网的发展过程: 传输媒体从采用同轴电缆到双绞线缆和光纤 从共享式以太网发展到交换式以太网 出现VLAN和三层交换技术 从低速以太网发展到高速以太网 传输媒体从采用同轴电缆到双绞线缆... 帧为单位发收数据。怎么
  • 以太网数据帧的格式分析

    千次阅读 2009-07-23 11:18:00
    一、 以太网数据帧的格式分析大家都知道我们目前的局域网大多数是以太网,但以太网有多种标准,其数据帧有多种格式,恐怕有许多人不是太清楚,本文的目的就是通过帧格式和Sniffer捕捉的数据包解码来区别它们。...
  • 为什么以太网数据帧最小为64字节

    千次阅读 2013-11-22 08:35:13
    如果把"以太网"比作是一栋"房子",这栋房子可以算得上是人类构建的非常了不起的"建筑"了,以太网设计人员制定了一系列的标 准,这些看似有... 首先我们先来看一下以太网数据帧的格式:    
  • 以太网中,第 2 层单播、组播和广播通信会使用不同的 MAC 地址。 单播 单播 MAC 地址是帧从一台发送设备发送到一台目的设备时使用的唯一地址。 例如,IP 地址为 192.168.1.5 的主机(源)向 IP 地址为 ...
  • 一,概述 局域网是专有网络,通常位于一个建筑物内,或者一个校园内,也可以远...高的数据传输速率、低误码率 为一个单位所拥有:易于建立、维护、扩展 2,局域网主要优点 能方便地共享昂贵的外部设备、主机...
  • 以太网

    千次阅读 2018-03-17 11:20:34
    3.0以太网发展过程与内容简介以太网是当今最广泛的局域网。... 最初以太网是总线式以太网(共享式以太网以太网交换机诞生,共享式以太网转变为交换式以太网交换导致大量MAC帧广播导致危害,VLAN出现三层交...
  • 数据链路层——以太网帧结构

    千次阅读 2020-05-16 22:28:13
    目录前言帧格式Ethernet_II帧格式IEEE802.3帧格式数据帧传输以太网的MAC地址 前言        数据包在以太网物理介质上传播之前必须封装头部和尾部信息,封装后的数据包称为数据帧...
  • 组播:就是把数据发送给一组主机或者发送给感兴趣的主机。(组播的MAC地址是:01-00-5E开头的,组播的IP地址224.0.0.0到239.255.255.255。发送组播时源地址是单播目的地址和目的MAC地址是组播IP地址...
  • 以太网传输数据格式

    千次阅读 2012-02-06 10:45:20
    目的地址出现全地址时,表示该帧被局域网上所有站同时接收,称为“广播”(Broadcast),通常DA的最高位来判断地址的类型,若第一字节最低位为“0”则表示单址,第一字节最低位为“1”则表示组播。 源地址: ...
  • TCP/IP实现 (三) 以太网数据收发

    千次阅读 2018-11-07 18:45:25
    一.以太网帧结构 以太网帧结构由48位的目的地址和源地址组成,紧接着是一个16位的类型字段(表示该帧所携带的数据类型,如IP分组是0x0800),最后是CRC... 以太网接口会接收目的地址(单播地址或广播)为自己的帧...
  • 广播信道传统以太网1.计算机如何连接到局域网——适配器2.CSMA/CD协议3.使用集线器的星形拓扑4.以太网的信道利用率5.以太网的MAC层 《计算机网络》——第三章:数据链路层 本章研究:在同一个局域网中,分组怎样从一...
  • 什么是以太网

    千次阅读 2020-03-26 23:12:30
    一般都是集线器或交换机作为核心节点,再从集线器或交换机拉很多根网线出来,把各台主机连接到这个核心节点上。 以太网(Ethernet)是最广泛安装的局域网技术。正如现在在IEEE 802.3标准中指出的,以太网原来由...
  • 数据链路层,以太网

    千次阅读 2018-12-18 11:28:52
    (2)“同一种数据链路”:手机通过路由器上外网,手机与路由器之间通过无线网WiFi的方式进行传输的,这是一种数据链路;数据通过以太网线和运营商路由器相连,这也是一个数据链路;运营商路由...
  • 以太网数据帧(802.3)最大与最小长度

    万次阅读 多人点赞 2017-03-20 19:40:01
    以太网(IEEE 802.3)帧格式: 1、前导码:7字节0x55,一串1、0间隔,用于信号同步 2、帧起始定界符:1字节0xD5(10101011),表示一帧开始 3、DA(目的MAC):6字节 4、SA(源MAC):6字节 5、类型/长度:2字节,0~...
  • 目前移植uip,发现UDP 服务器模式下,必须指定本地端口以及客户端端口,否则只能讲客户端端口设置为0,才能接收任意端口的数据,但是无法发送数据,因为此时客户端端口设置为0了,我通过将原始数据包中的客户端端口保存下来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,378
精华内容 15,351
关键字:

以太网的数据是以广播方式发送的