【嵌入式八股19】嵌入式通信协议

一、TCP/IP 模型

TCP/IP 模型是网络通信的基础架构,它将网络通信分为多个层次,不同层次实现不同的功能,且对应着不同的协议和网络设备。以下是 OSI 模型、Linux 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) - - 中继器:用于放大和再生物理信号,延长信号的传输距离。集线器:是一种多端口的中继器,将多个设备连接在一起,共享带宽。

alt

alt

二、以太网协议

以太网协议是局域网中常用的通信协议,它定义了数据帧的格式,具体如下:

字段 长度 说明
前导码 7 字节 由 10101010 这样的位序列组成,用于使接收端的物理层与发送端的物理层实现时钟同步,不能算是以太网数据帧,是以太网在物理层上发送以太网数据时添加上去的。
SFD(帧起始定界符) 1 字节 固定为 10101011,标志着一个以太网数据帧的开始,同样是物理层添加的内容。
目标地址 6 字节 表示数据帧的接收方的 MAC 地址。
源地址 6 字节 表示数据帧的发送方的 MAC 地址。
长度/类型 2 字节 当值大于 1518 时,表示该以太网帧中的数据属于哪个上层协议。例如,0x0800 表示 IP 数据包,0x0806 表示 ARP 数据包;当值小于等于 1518 时,表示数据字段的长度。
数据 46~1500 字节 存放上层协议的数据,如 IP 数据包等。如果数据长度小于 46 字节,需要填充字节以达到最小长度要求。
CRC 校验 4 字节 用于对数据帧进行循环冗余校验,检测数据在传输过程中是否发生错误。

补充说明:

  1. 前导码和 SFD 主要用于物理层的同步和帧起始标识,不属于真正的数据帧内容。
  2. 长度/类型字段的取值决定了其具体含义,是区分上层协议还是表示数据长度的关键。
  3. 单播地址、组播地址:目标地址的第一个字节的 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 地址。

补充说明:

  1. MAC 地址长度和 IP 地址长度通常分别为 6 和 4 字节,这是根据常见的以太网和 IP 协议的地址格式确定的。
  2. 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 - 保留用于实验和研究,目前尚未广泛使用,也可用于广播地址。

其他相关说明:

  1. 主机号全为 0 表示本网络本身,例如对于 A 类网络 1.0.0.0,这里的主机号全为 0,代表整个 1 号网络。主机号全为 1 表示本网络广播地址,如 1.255.255.255 就是 1 号网络的广播地址,该地址的数据包会发送给网络中的所有主机。
  2. 127.0.0.0 是环路自检地址,表示任意主机本身,用于本地主机的自我测试和通信,如 ping 127.0.0.1 可以测试本地网络协议栈是否正常。
  3. 0.0.0.0 表示本网络的本主机,常用于主机在启动时还未获取到具体 IP 地址的情况,作为临时的源地址。
  4. 专用地址: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 地址冲突和安全问题。
  5. IP 地址与子网掩码相与得到网络号,通过子网掩码可以确定 IP 地址中哪些位是网络地址,哪些位是主机地址,从而实现子网划分和网络管理。

五、TCP 与 UDP 的区别

TCP(传输控制协议)和 UDP(用户数据报协议)是传输层的两种重要协议,它们在多个方面存在明显差异:

TCP UDP
面向连接,需要三次握手建立连接,四次挥手关闭连接,确保连接的可靠性和稳定性。 不需要建立连接,直接发送数据报,适用于对实时性要求高、对数据可靠性要求相对较低的场景。
提供无差错、不丢失、不重复,且按序到达的数据传输服务,通过序列号、确认应答、重传机制等保证数据的准确性。 不保证数据可靠、按序到达,可能会出现数据丢失、重复或乱序的情况,但传输效率高,延迟低。
面向字节流,将应用层的数据看作连续的字节流进行传输,适合传输大量数据,如文件传输。 面向报文,每个 UDP 数据报都是独立的报文,不考虑数据的连续性,适合传输少量数据,如 DNS 查询请求。
有拥塞控制机制,通过慢开始、拥塞避免、快重传、快恢复等算法,根据网络拥塞情况调整发送速率,不会使源主机的发送速率过高导致网络拥塞。 没有拥塞控制机制,发送方以固定的速率发送数据,可能会在网络拥塞时加剧网络负担。
连接只能是点到点的,即一个发送方对应一个接收方,适用于一对一的通信场景。 支持一对一,一对多,多对一和多对多的交互通信,如组播和广播通信可以使用 UDP 协议。
首部开销 20 字节,包含源端口号、目的端口号、序列号、确认号、控制位等信息,用于实现可靠传输和连接管理。 首部开销小,只有 8 个字节,包含源端口号、目的端口号、长度、校验和等信息,减少了数据传输的额外开销。
常见应用协议有 ftp、telnet、http、https、SMTP、POP3 等,这些应用对数据的可靠性要求较高。 常见应用协议有 DNS、DHCP、tftp、

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式八股/模拟面试拷打 文章被收录于专栏

一些八股模拟拷打Point,万一有点用呢

全部评论

相关推荐

被捞咯,去年11月才投递他家比较晚了,没面试上,当时身边的XDM有拿他家offer的,都说钱给的不错,就蛮想也能拿他家offer的。听说月薪开的还蛮乐观,年终能给到3个月左右,还有项目奖金和过程激励,其它的福利比如带薪年假有14天,生活保障有宿舍、住房补贴和饭堂,保障比较全面。分享下面试过程,先是自我介绍,一定要重点介绍实习做过的项目,或者在学校里实操过什么项目,参加过什么比赛,听说硬件岗位有实操经验会比较加分,面试官确实扒了项目里很多细节,包括做这个项目有没有创新点,很关注有没有创新意识,还有解决问题的能力。其它的问题有些是围绕数电和模电基础知识去问,比如是否了解单管放大器指标、应用场景等;电路设计的问题也会问,比如常见分立器件组成模块设计流程,还有对绘图及仿真软件的了解等等。总的来说,问题设计和考察比较全面和专业,对面试官影响蛮好的,很和蔼,有些地方答得磕绊或者停顿思考,他也会给些提示。整个面试流程听HR说是3轮,出offer的速度会比较快,HR也好沟通,喊她帮忙修改过面试时间,她很快就帮我调整好了,还喊我帮忙推荐身边还在看工作机会的同学,说春招的需求还蛮多的,硬件岗位除了射频还有基带,软件有嵌入式、安卓软开、go等等,感兴趣的xd可以冲!#海能达校招#
查看6道真题和解析
点赞 评论 收藏
分享
评论
4
3
分享

创作者周榜

更多
牛客网
牛客企业服务