【嵌入式八股19】嵌入式通信协议
一、TCP/IP 模型
TCP/IP 模型是网络通信的基础架构,它将网络通信分为多个层次,不同层次实现不同的功能,且对应着不同的协议和网络设备。以下是 OSI 模型、Linux TCP/IP 模型的对比,以及各层常用协议和相关网络设备的介绍:
应用层(application) | 应用层:该层主要为用户提供应用程序接口,实现用户与网络的交互,处理应用程序的逻辑和数据处理。 | telnet、DHCP、TFTP、FTP、MQTT、NFS、DNS、FTP、SNMP 等。这些协议在不同的应用场景中发挥着重要作用,如 FTP 用于文件传输,DNS 用于域名解析。 | - |
表示层(presentation) | - | - | - |
会话层(session) | - | - | - |
传输层(transport) | 传输层:负责在源主机和目的主机的应用进程之间建立端到端的逻辑连接,实现数据的可靠传输或高效传输。 | TCP(传输控制协议):提供面向连接的、可靠的数据传输服务,适用于对数据准确性要求高的场景,如文件传输、网页浏览等。UDP(用户数据报协议):提供无连接的、不可靠的数据传输服务,但传输效率高,适用于对实时性要求高的场景,如视频流、音频流传输等。 | 四层交换机:可以根据传输层的端口号等信息进行数据转发,实现负载均衡等功能。 |
网络层 | 网络层(Network):主要功能是实现不同网络之间的互联,为数据包选择合适的路由路径。 | IP(网际协议):是网络层的核心协议,负责数据包的寻址和路由。ICMP(网际控制报文协议):用于在 IP 主机、路由器之间传递控制消息,如差错报告、网络状态查询等。IGMP(网际组管理协议):用于管理 IP 组播成员,实现组播通信。ARP(地址解析协议):用于将 IP 地址解析为 MAC 地址。 | 路由器:能够根据网络层的 IP 地址信息,将数据包从一个网络转发到另一个网络。三层交换机:在二层交换机的基础上,增加了网络层的路由功能,可以根据 IP 地址进行数据转发。 |
数据链路层(Datalink) | 网络接口层:负责将网络层的数据包封装成数据帧,并通过物理链路进行传输,同时处理物理层的错误检测和纠正。 | Ethernet(以太网协议):是目前应用最广泛的局域网协议,定义了数据帧的格式和传输规则。PPP(点到点协议):用于在两个节点之间建立直接的链路连接,常用于拨号上网等场景。PPPoE(以太网上的点对点协议):结合了 PPP 和 Ethernet 的优点,用于在以太网上实现 PPP 连接。 | 交换机(二层交换机):根据数据链路层的 MAC 地址进行数据帧的转发,实现局域网内设备之间的通信。网桥:用于连接两个或多个局域网,实现不同局域网之间的数据转发。网卡(一半物理层,一半链路层):是计算机与网络之间的接口设备,负责将计算机的数据转换为网络信号进行传输,并接收网络信号转换为计算机可识别的数据。 |
物理层(physcial) | - | - | 中继器:用于放大和再生物理信号,延长信号的传输距离。集线器:是一种多端口的中继器,将多个设备连接在一起,共享带宽。 |
二、以太网协议
以太网协议是局域网中常用的通信协议,它定义了数据帧的格式,具体如下:
前导码 | 7 字节 | 由 10101010 这样的位序列组成,用于使接收端的物理层与发送端的物理层实现时钟同步,不能算是以太网数据帧,是以太网在物理层上发送以太网数据时添加上去的。 |
SFD(帧起始定界符) | 1 字节 | 固定为 10101011,标志着一个以太网数据帧的开始,同样是物理层添加的内容。 |
目标地址 | 6 字节 | 表示数据帧的接收方的 MAC 地址。 |
源地址 | 6 字节 | 表示数据帧的发送方的 MAC 地址。 |
长度/类型 | 2 字节 | 当值大于 1518 时,表示该以太网帧中的数据属于哪个上层协议。例如,0x0800 表示 IP 数据包,0x0806 表示 ARP 数据包;当值小于等于 1518 时,表示数据字段的长度。 |
数据 | 46~1500 字节 | 存放上层协议的数据,如 IP 数据包等。如果数据长度小于 46 字节,需要填充字节以达到最小长度要求。 |
CRC 校验 | 4 字节 | 用于对数据帧进行循环冗余校验,检测数据在传输过程中是否发生错误。 |
补充说明:
- 前导码和 SFD 主要用于物理层的同步和帧起始标识,不属于真正的数据帧内容。
- 长度/类型字段的取值决定了其具体含义,是区分上层协议还是表示数据长度的关键。
- 单播地址、组播地址:目标地址的第一个字节的 bit0 为 0 代表单播地址,即数据帧只发送给一个特定的接收方;为 1 代表组播地址,数据帧会发送给一组接收方。
三、ARP 地址解析协议
ARP(地址解析协议)用于将 IP 地址解析为 MAC 地址,其数据报格式如下:
以太网首部 | 14 字节 | 包含目标 MAC 地址、源 MAC 地址和类型字段,与以太网帧的首部格式一致,用于在以太网中传输 ARP 数据报。 |
硬件类型 | 2 字节 | 表示硬件地址的类型,如以太网的硬件类型为 1。 |
协议类型 | 2 字节 | 表示要解析的协议地址类型,如 IP 协议的类型为 0x0800。 |
MAC 地址长度 | 1 字节 | 表示 MAC 地址的长度,通常为 6 字节。 |
协议地址长度 | 1 字节 | 表示协议地址(如 IP 地址)的长度,通常为 4 字节。 |
OP(操作码) | 2 字节 | 表示 ARP 操作的类型,1 代表 ARP 请求,即发送方请求获取目标 IP 地址对应的 MAC 地址;2 代表 ARP 应答,即接收方回复发送方其 IP 地址对应的 MAC 地址。 |
源 MAC 地址 | 6 字节 | 发送方的 MAC 地址。 |
源 IP 地址 | 4 字节 | 发送方的 IP 地址。 |
目标 MAC 地址 | 6 字节 | 目标的 MAC 地址,在 ARP 请求中可能为全 0(表示未知),在 ARP 应答中为正确的目标 MAC 地址。 |
目标 IP 地址 | 4 字节 | 要解析的目标 IP 地址。 |
补充说明:
- MAC 地址长度和 IP 地址长度通常分别为 6 和 4 字节,这是根据常见的以太网和 IP 协议的地址格式确定的。
- OP 字段明确了 ARP 操作的具体类型,是 ARP 请求还是 ARP 应答,决定了数据报的处理方式。
四、IP 地址分类
IP 地址由网络地址和主机地址两部分组成,根据其开头和取值范围,可以分为以下几类:
A 类 | 0 | 1~126 | 1.0.0.0 - 126.255.255.255 | 255.0.0.0 | 给规模特别大的网络使用,网络数量较少,但每个网络可容纳的主机数量很多。 |
B 类 | 10 | 128~191 | 128.0.0.0 - 191.255.255.255 | 255.255.0.0 | 给一般的中型网络,网络数量适中,每个网络可容纳的主机数量也适中。 |
C 类 | 110 | 192~223 | 192.0.0.0 - 223.255.255.255 | 255.255.255.0 | 给小型网络,网络数量较多,但每个网络可容纳的主机数量相对较少。 |
D 类 | 1110 | 224~239 | 224.0.0.0 - 239.255.255.255 | - | 用于多点广播(组播),可以将数据发送给一组特定的主机。 |
E 类 | 11110 | 240~255 | 240.0.0.0 - 255.255.255.255 | - | 保留用于实验和研究,目前尚未广泛使用,也可用于广播地址。 |
其他相关说明:
- 主机号全为 0 表示本网络本身,例如对于 A 类网络 1.0.0.0,这里的主机号全为 0,代表整个 1 号网络。主机号全为 1 表示本网络广播地址,如 1.255.255.255 就是 1 号网络的广播地址,该地址的数据包会发送给网络中的所有主机。
- 127.0.0.0 是环路自检地址,表示任意主机本身,用于本地主机的自我测试和通信,如 ping 127.0.0.1 可以测试本地网络协议栈是否正常。
- 0.0.0.0 表示本网络的本主机,常用于主机在启动时还未获取到具体 IP 地址的情况,作为临时的源地址。
- 专用地址:A 类:10.0.0.0—10.255.255.255,B 类:172.16.0.0—172.31.255.255,C 类:192.168.0.0—192.168.255.255。这些专用地址在局域网中使用,不会在公网中路由,避免了 IP 地址冲突和安全问题。
- IP 地址与子网掩码相与得到网络号,通过子网掩码可以确定 IP 地址中哪些位是网络地址,哪些位是主机地址,从而实现子网划分和网络管理。
五、TCP 与 UDP 的区别
TCP(传输控制协议)和 UDP(用户数据报协议)是传输层的两种重要协议,它们在多个方面存在明显差异:
面向连接,需要三次握手建立连接,四次挥手关闭连接,确保连接的可靠性和稳定性。 | 不需要建立连接,直接发送数据报,适用于对实时性要求高、对数据可靠性要求相对较低的场景。 |
提供无差错、不丢失、不重复,且按序到达的数据传输服务,通过序列号、确认应答、重传机制等保证数据的准确性。 | 不保证数据可靠、按序到达,可能会出现数据丢失、重复或乱序的情况,但传输效率高,延迟低。 |
面向字节流,将应用层的数据看作连续的字节流进行传输,适合传输大量数据,如文件传输。 | 面向报文,每个 UDP 数据报都是独立的报文,不考虑数据的连续性,适合传输少量数据,如 DNS 查询请求。 |
有拥塞控制机制,通过慢开始、拥塞避免、快重传、快恢复等算法,根据网络拥塞情况调整发送速率,不会使源主机的发送速率过高导致网络拥塞。 | 没有拥塞控制机制,发送方以固定的速率发送数据,可能会在网络拥塞时加剧网络负担。 |
连接只能是点到点的,即一个发送方对应一个接收方,适用于一对一的通信场景。 | 支持一对一,一对多,多对一和多对多的交互通信,如组播和广播通信可以使用 UDP 协议。 |
首部开销 20 字节,包含源端口号、目的端口号、序列号、确认号、控制位等信息,用于实现可靠传输和连接管理。 | 首部开销小,只有 8 个字节,包含源端口号、目的端口号、长度、校验和等信息,减少了数据传输的额外开销。 |
常见应用协议有 ftp、telnet、http、https、SMTP、POP3 等,这些应用对数据的可靠性要求较高。 | 常见应用协议有 DNS、DHCP、tftp、 |
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
嵌入式八股/模拟面试拷打 文章被收录于专栏
一些八股模拟拷打Point,万一有点用呢