精华内容
下载资源
问答
  • 以太网数据帧格式及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地址。

     

     

    展开全文
  • 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
    

     

     

     

     

     

     

     

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

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

    以太网帧格式如下:

    802.3 以太网帧结构
    前导码 帧开始符 MAC 目标地址 MAC 源地址 802.1Q 标签 (可选) 以太类型或长度 负载 冗余校验 帧间距
    10101010 7个octet10101011 1个octet6 octets6 octets(4 octets)2 octets46–1500 octets4 octets12 octets
      64–1522 octets 
    72–1530 octets 
    84–1542 octets

    1、前导码和帧开始符:
    一个帧以7个字节的前导码和1个字节的帧开始符作为帧的开始。快速以太网之前,在线路上帧的这部分的位模式是10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011。由于在传输一个字节时最不重要的位最先传输(即低位最先传输),因此其相应的16进制表示为0x55 0x55 0x55 0x55 0x55 0x55 0x55 0xD5。
    10/100M 网卡(MII PHY)一次传输4位(一个半字)。因此前导符会成为7组0x5+0x5,而帧开始符成为0x5+0xD。1000M网卡(GMII)一次传输8位,而10Gbit/s(XGMII) PHY芯片一次传输32位。 注意当以octet描述时,先传输7个01010101然后传输11010101。由于8位数据的低4位先发送,所以先发送帧开始符的0101,之后发送1101。

    2、目的地址:6字节

    3、源地址:6字节

    4、类型/长度:2字节,0~1500保留为长度域值,1536~65535保留为类型域值(0x0600~0xFFFF)

    5、数据:46~1500字节

    6、帧校验序列(FCS):4字节,使用CRC计算从目的MAC到数据域这部分内容而得到的校验和。


        当数据帧到达网卡时,在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行CRC检验,如果帧校验和错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等),如果符合,就将帧交"设备驱动程序"做进一步处理。这时我们的抓包软件才能抓到数据。


        以太网规定,以太网帧数据域部分最小为46字节,以太网帧最小是6+6+2+46+4=64。


    展开全文
  • 在局域网中,针对使用总线和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地址,则在计算机的存储器中。

    展开全文
  • 以太网数据帧和ARP协议

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

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

    千次阅读 2013-10-12 17:23:20
    以太网中数据包是如何发送的?ip和MAC有什么关系呢?下面所讲的数据传送只设计网络层和数据链路层。在linux下。 在局域网内,一台主机H1(192.168.1.110)想发送数据给主机H2(192.168.1.111)时。数据是怎样过去...
  • 以太网数据帧结构以及大小限制

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

    万次阅读 2016-05-05 18:08:44
    以太网的发展过程: 传输媒体从采用同轴电缆到双绞线缆和光纤 从共享式以太网发展到交换式以太网 出现VLAN和三层交换技术 从低速以太网发展到高速以太网 传输媒体从采用同轴电缆到双绞线缆... 帧为单位发收数据。怎么
  • “Hub”是“中心”的意思,集线器的主要功能是对接收到的信号进行再生整形放大,扩大网络的传输距离,同时把所有节点集中在它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层,即“物理层”。...
  • 以太网数据帧的格式分析

    千次阅读 2009-07-23 11:18:00
    一、 以太网数据帧的格式分析大家都知道我们目前的局域网大多数是以太网,但以太网有多种标准,其数据帧有多种格式,恐怕有许多人不是太清楚,本文的目的就是通过帧格式和Sniffer捕捉的数据包解码来区别它们。...
  • 数据链路层——广播信道CSMA/CD协议

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

    千次阅读 2013-11-22 08:35:13
    如果把"以太网"比作是一栋"房子",这栋房子可以算得上是人类构建的非常了不起的"建筑"了,以太网设计人员制定了一系列的标 准,这些看似有... 首先我们先来看一下以太网数据帧的格式:    
  • 一,概述 局域网是专有网络,通常位于一个建筑物内,或者一个校园内,也可以远...高的数据传输速率、低误码率 为一个单位所拥有:易于建立、维护、扩展 2,局域网主要优点 能方便地共享昂贵的外部设备、主机...
  • 数据链路层——以太网帧结构

    千次阅读 2020-05-16 22:28:13
    目录前言帧格式Ethernet_II帧格式IEEE802.3帧格式数据帧传输以太网的MAC地址 前言        数据包在以太网物理介质上传播之前必须封装头部和尾部信息,封装后的数据包称为数据帧...
  • 以太网

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

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

    千次阅读 2011-05-26 08:57:24
    以太网中,第 2 层单播、组播和广播通信会使用不同的 MAC 地址。 单播 单播 MAC 地址是帧从一台发送设备发送到一台目的设备时使用的唯一地址。 例如,IP 地址为 192.168.1.5 的主机(源)向 IP 地址为 ...
  • 以太网数据帧(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~...
  • 广播信道传统以太网1.计算机如何连接到局域网——适配器2.CSMA/CD协议3.使用集线器的星形拓扑4.以太网的信道利用率5.以太网的MAC层 《计算机网络》——第三章:数据链路层 本章研究:在同一个局域网中,分组怎样从一...
  • ,举个简单的例子,那就是PC1发送一个广播帧,接在交换机上的所有的PC都会收到这个广播数据帧并且都要去分析这个报文(即使它可能并不需要这个数据并且最终将收到的数据帧丢弃,但check数据是否是发送给自己的这一...
  • 局域网使用广播通信 可以随意向网络中添加设备。 总线网 星形网,使用集线器。现在多使用星形网络。 环状网 树形网 其中匹配电阻用来吸收总线上传播的信号。 共享通信媒体 静态划分信道 频分复用、时分复用、波分...
  • TCP/IP实现 (三) 以太网数据收发

    千次阅读 2018-11-07 18:45:25
    一.以太网帧结构 以太网帧结构由48位的目的地址和源地址组成,紧接着是一个16位的类型字段(表示该帧所携带的数据类型,如IP分组是0x0800),最后是CRC... 以太网接口会接收目的地址(单播地址或广播)为自己的帧...
  • 以太网单播、组播、广播

    千次阅读 2012-08-08 09:27:20
    组播:就是把数据发送给一组主机或者发送给感兴趣的主机。(组播的MAC地址是:01-00-5E开头的,组播的IP地址224.0.0.0到239.255.255.255。发送组播时源地址是单播目的地址和目的MAC地址是组播IP地址...
  • 数据链路层,以太网

    千次阅读 2018-12-18 11:28:52
    (2)“同一种数据链路”:手机通过路由器上外网,手机与路由器之间通过无线网WiFi的方式进行传输的,这是一种数据链路;数据通过以太网线和运营商路由器相连,这也是一个数据链路;运营商路由...
  • 目前移植uip,发现UDP 服务器模式下,必须指定本地端口以及客户端端口,否则只能讲客户端端口设置为0,才能接收任意端口的数据,但是无法发送数据,因为此时客户端端口设置为0了,我通过将原始数据包中的客户端端口保存下来...

空空如也

空空如也

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

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