• 以太网协议介绍(ARP、UDP、ICMP、IP)


    以太网协议介绍

    一、ARP协议

    image-20230927174655552

    请求:

    image-20230928093935204

    应答:

    image-20230928094117392

    ARP协议

    image-20230928094353878

    0x0001 0x0800 6 4
    
    硬件类型:2个字节,arp协议不仅能在以太网上运行还能在其他类型的硬件上运行。以太网用1来表示;
    协议类型:两字节。指的是arp协议的上层协议是什么,以太网中上层协议是IP,用0x0800表示;
    硬件地址长度:1个字节。表示MAC地址的长度,即12-34-56-78-9a-ab,一共6位,所以这里填写6;
    协议地址长度:一个字节。表示的是IP地址的长度。192.168.1.102,一共4个字节(byte);
    OP:表示操作码,为1时表示请求,为2的时候是应答操作;
    源mac地址:主机A的mac地址。长度为6字节;
    源IP地址:主机A的IP地址。4个字节;
    目的MAC地址:B主机的MAC地址。4个字节;
    目的IP地址:B主机的IP地址。长度为6字节。
    
    注意:
    A发送请求时,源地址是指A的;当B主机应答的时候源地址是指B的。即谁发送源地址就是谁,目的地址是要发送的目标地址。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    以太网ARP数据包格式

    image-20230928100413094

    FCS:校验

    在以太网帧头部分也包含了目的地址的mac和ip地址。

    二、以太网帧格式:

    image-20230928100643903

    以太网通信是通过包的形式进行传输的,不像串口协议一样单位是byte。

    前导码:7个字节。由7个0x55组成,0x55=0101_0101;
    SFD:帧开始的界定符,长度为1个字节。固定值0xd5;
    目的MAC地址:数据发送给谁,目的端的MAC地址,6个字节;
    源MAC地址:谁发送的数据,6个字节;
    长度or类型:如下图解析;
    以太网数据格式:这个字段最低46byte,最高1500Byte,1500是最大的传输单元,单个数据包如果超过1500字节的话会被对端设备丢弃;
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20230928101927779

    image-20230928101029056

    帧间隙:

    image-20230928110639925

    三、以太网的UDP协议

    image-20230928114741852

    TCP和UDP的区别

    image-20230928115105059

    ​ osi 7层模型:实现通信的任务image-20230928115454453

    对于fpga开发,只需要关注传输层,网络层、数据链路层、物理层,嵌入式开发需要关注的是应用层、表示层、会话层。

    物理层:底层硬件支持,利用传输介质为数据链路层提供物理连接,实现比特流的透明传输,使数据链路层不必考虑网络的介质是什么。PHY芯片、网线、RJ45座子等;
    数据链路层:定义在单个链路上如何传输数据,其功能就是将数据组合成数据块(数据)。并提共数据差错校验的功能,帧是数据链路层传输的单位。如以太网的数据帧格式;
    网络层:通过IP寻址来建立两个节点之间的连接,为数据包选择路由,如IP协议层;
    传输层:作用是为上层协议提供端到端(端口到端口)的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题,如:TCP/UDP;
    
    会话层:建立和管理应用程序之间的通道
    表示层:主要的功能就是定义数据传输过程中的数据格式以及加密;
    应用层:计算机用户以及各种应用程序和网络之间的接口,功能说就是直接向用户提供服务,完成用户希望在网络上完成的各种工作。如文件传输服务(FTP)、超文本传输协议(HTTP)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    UDP数据格式:

    image-20230928135547991

    四、IP协议简介

    IP:internet protocol(网际协议)

    IP协议是TCP/IP协议簇中的核心协议之一,也是TCP/IP协议的载体,IP协议规定了数据传输时的基本单元和格式。所有的TCP、UDP以及ICMP数据都是以IP数据报格式传输的。

    IP数据报格式:

    image-20230928140215148

    IP首部是以4(32bit)个字节为单位,

    image-20230928141746026

    版本:IPv4 or IPv6;IPv4的地址是4个字节,即为0100,IPv6是6个字节,即0110; 
    首部长度:指的是IP首部一共有多少个4个字节(以4个字节为单位),如果不包含可选字段,这里就填写5,5 * 4byte = 20 byte;
    服务类型:一般设置为0,表示一般的服务;
    总长度:IP首部和IP数据一共多长,最大的值为65535,但是实际上传送不了那么多,因为还要考虑以太网的帧格式长度,也就是只能传输1千多;
    标识:初始值为0,每发送一个UDP数据包,这个值就累加1
    标志:3bit,表示如有10000个数据,但是一次传输不了那么多,用于表示分片,需要对数据包进行分片;位号表示2  1  0,位号2为保留位为0,位号1为禁止分片位(不需要分片置为1,需要分片置为0),位号0表示需要更多的分片(在位号1使能的情况下使用),一般使用值为0。一般设为:010,表示不分片;
    片偏移:分片的时候才有意义,当前的数据包位于整个数据包哪一个位置,方便后面解析的时候对其进行拼接;
    生存时间:防止数据被无止境的复制下去,数据每经过1次路由器,生存时间就会减1;一般设置为64或者128;
    协议:如果是UDP协议的时候就是17.如下图常用国际协议编号所示;
    首部校验和:下面进行讲解,IP首部校验和计算方法图;
    源IP地址:发送端的IP地址;
    目的IP地址:接收端的IP地址;
    可选字段:也是按照4个字节为单位;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    image-20230928144649361

    image-20230928145047538

    举个例子:

    image-20230928145257602

    以太网UDP数据格式:

    image-20230928150127685

    UDP首部中端口号很重要,用于表示数据来自哪里和发送到哪里。

    image-20230928150221276

    如果IP的检验和不正确的话,接收端将会丢掉数据包,UDP校验和大部分的接收端是不管的,所以一般置为0x00。

    五、ICMP协议

    ICMP(Internet control message protocol的缩写),即互联网控制消息协议。它用于TCP/IP网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些消息,使得网络管理者可对所发生的问题做出诊断,然后适当的措施解决问题。

    ICMP信息功能:

    查询类报文:主要用于信息的查询和采集,比较教材传输路径上的每个路由器都是谁,本次传输的报文是否达到目的地等等。如ping功能就是这个。

    差错诊断类报文:主要用于诊断网络故障,比如传输报文被丢弃的原因是什么等等。

    ICMP协议包格式:

    image-20230928152007534

    ICMP查询报文:

    image-20230928152318672

    ICMP报文类型:

    image-20230928152521484

    	--晓凡   2023年10月2日于武汉书
    
    • 1
  • 相关阅读:
    为什么通过一致性正则化方法就可以避免将所有未标记数据集分配给同一类?
    探索list与iterator的区别及yield的用法
    机器学习(十五):异常检测之隔离森林算法(IsolationForest)
    本地生活商家想选择靠谱的服务商就这样做,还可以借助批量剪辑来进一步提升营销价值
    【maven】idea中基于maven-webapp骨架创建的web.xml问题
    1.2.1 创建型设计模式
    ARM64内联汇编
    Java修仙记之记录一次与前端女修士论道的经历
    django+drf+vue 简单系统搭建 (1) - django创建项目
    Java自动化框架:jenkins执行git命令
  • 原文地址:https://blog.csdn.net/xzs520xzs/article/details/133485280