常见Linux嵌入式面试题--网络编程概念

1.TCP、UDP的区别

TCP 是面向连接的协议,提供可靠的数据传输和错误检测机制。它通过建立连接、数据传输和断开连接来确保数据的完整性和顺序。

UDP 是无连接的协议,提供了一种简单的数据传输机制。它不会建立连接,也没有流量控制和拥塞控制,因此速度较快,但传输不可靠。

2.TCP、UDP的优缺点

TCP 的缺点:

高延迟:由于需要建立连接和保证可靠性,TCP 在传输过程中引入了较大的延迟。

较复杂:TCP 的实现比 UDP 复杂,涉及连接管理、流量控制等机制,需要更多的计算和资源。

UDP 的优点:

低延迟:UDP 没有建立连接和保证可靠性的开销,传输速度较快,适用于实时数据传输。

简单轻量:UDP 的实现相对简单,占用较少的计算和资源。

UDP 的缺点:

不可靠性:UDP 不提供可靠的数据传输机制,不保证数据的完整性和顺序。

无流量控制:UDP 没有内置的流量控制机制,容易导致数据包丢失或丢弃。

TCP 适用场景:

文件传输:当需要确保文件传输的可靠性和完整性时,TCP 是首选协议。

长连接应用:对于需要长时间保持连接的应用,如网页浏览、电子邮件等,TCP 提供了稳定的连接和持久的数据传输。

需要有序性的应用:当数据需要按照特定顺序传输和接收时,TCP 可以确保数据的有序性。

3.TCP UDP适用场景

实时应用:对于实时性要求较高的应用,如音频和视频流媒体、语音通话等,UDP 的低延迟特性更合适。

广播和多播:UDP 支持广播和多播传输,适用于向多个主机同时发送数据的应用

4.TCP为什么是可靠连接

应答和超时重传:TCP 使用确认和超时重传机制来确保数据的可靠传输。发送方会等待接收方的确认,如果在一定时间内没有收到确认,则会重新发送数据。

顺序号和重组:TCP 使用顺序号对数据进行编号,并在接收端根据顺序号将乱序的数据包重组成正确的顺序。

滑动窗口和流量控制:TCP 使用滑动窗口机制来控制发送方发送数据的速率,避免过多数据导致接收方缓冲区溢出,实现流量控制。

5.OSI典型网络模型,简单说说有哪些

七个不同的层级,从底层到顶层依次为:

物理层(Physical Layer):负责传输比特流,处理物理连接、电压等物理特性。

数据链路层(Data Link Layer):在相邻节点之间传输数据帧,处理物理地址(MAC地址)和错误检测。

网络层(Network Layer):负责在不同网络中进行包传输,进行路由选择和逻辑地址(IP地址)寻址。

传输层(Transport Layer):提供端到端的可靠或不可靠的数据传输服务,主要有TCP和UDP协议。

会话层(Session Layer):建立、管理和终止会话(连接)以实现进程之间的通信。

表示层(Presentation Layer):数据格式的转换、加密解密、数据压缩等,确保不同系统能够正确解释和处理数据。

应用层(Application Layer):提供用户与网络应用程序之间的接口,例如HTTP、FTP、SMTP等。

6.三次握手、四次挥手

三次握手(Three-Way Handshake)和四次挥手(Four-Way Handshake)是TCP建立和终止连接的过程:

三次握手:

客户端发送一个带有SYN(同步序列号)标志的请求报文段给服务器,表示客户端准备建立连接。

服务器收到请求后,回复一个带有SYN/ACK(同步/确认序列号)标志的报文段给客户端,表示接受连接请求,并同时告知自己的初始序列号。

客户端收到服务器的回复后,再发送一个带有ACK(确认序列号)标志的报文段给服务器,表示已收到服务器的确认,连接建立成功。

四次挥手:

客户端发送一个带有FIN(结束标志)的报文段给服务器,表示客户端要关闭连接。

服务器收到客户端的关闭请求后,发送一个带有ACK标志的报文段给客户端,表示确认收到关闭请求。

服务器关闭与客户端的数据传输通道,发送一个带有FIN标志的报文段给客户端。

客户端收到服务器的关闭请求后,发送一个带有ACK标志的报文段给服务器,表示确认收到关闭请求,连接终止。

通过三次握手和四次挥手,TCP协议可以在两个通信实体之间建立可靠的连接并安全地终止连接

SMTP等。

7.MTU和粘包

MTU(Maximum Transmission Unit)是指在网络通信中可以传输的最大数据包大小。它是链路层的一个参数,表示在特定网络中能够通过的最大数据包的长度。

粘包是指发送方在发送数据时,多个小的数据包被黏在一起形成一个大的数据包,接收方在接收时无法正确地区分和处理这些小的数据包。

MTU的常见值为1500是因为在以太网(Ethernet)中,定义了一种常用的帧格式,称为以太网帧(Ethernet Frame),其中数据字段的最大长度为1500字节。

这个1500字节的数值包括数据部分和其他帧头(如目标MAC地址、源MAC地址、长度/类型等)所占用的字节数。以太网是一种广泛应用的局域网技术,因其高效性和可靠性而成为许多网络的基础。因此,在以太网中,通常将MTU设置为1500字节,以适应这种帧格式。

需要说明的是,MTU的实际值可以因网络设备、网络协议或特定需求而有所不同。在某些情况下,MTU可能会被调整为小于1500字节的值,以适应特殊网络环境或要求较低延迟的应用场景。

粘包问题常见于基于流式传输的协议(如TCP),由于数据的发送和接收没有固定的边界,导致多个数据包被一次性发送或接收,造成粘包现象。

解决粘包问题的方法有以下几种:

定长包:发送方在每个数据包的前面加上固定长度的标识,接收方按照该长度进行切割和处理。但是会浪费空间。

分隔符:发送方在数据包之间加入特定的分隔符,接收方根据分隔符进行拆分和处理。适用于内容不包含分隔符的情况。

包头+包体:发送方在每个数据包的开头加上包头信息,包头中包含了数据包的长度等信息,接收方首先读取包头来获取数据包的长度,然后根据长度读取对应长度的数据。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值