#07【面试问题整理】嵌入式软件工程师

本文是嵌入式软件工程师面试重点,详细介绍了TCP与UDP的区别、优缺点、适用场景以及TCP的可靠性机制。内容涵盖TCP的连接管理、数据可靠性、传输速度与UDP的实时性、灵活性对比,帮助理解两者在网络通信中的应用。
摘要由CSDN通过智能技术生成

前言

        本系列博客主要记录有关嵌入式方面的面试重点知识,本系列已经更新的篇目有如下:

        ​ 1.1进程线程的基本概念

        1.2 并发,同步,异步,互斥,阻塞,非阻塞的理解

        1.3 孤儿进程、僵尸进程、守护进程的概念

        【本篇】3.1 TCP UDP

        5.1 Linux内核相关

        5.2 其他操作系统常见面试题

        6.0 单片机常见面试题

        内容如有错误请在私信或者评论区及时指正,谢谢~

3.1 TCP UDP


3.1.1 TCP、UDP的区别 

TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的网络传输协议,它们有以下区别:

1)连接:TCP是面向连接的协议,而UDP是无连接的协议。在发送数据前,TCP通过三次握手建立连接,而UDP不需要建立连接。

2)可靠性:TCP提供可靠的数据传输,保证了数据的可靠性和完整性。TCP通过序号、确认应答和超时重传等机制来实现可靠性。而UDP不提供可靠性保证,数据可能丢失、损坏或重复。

3)传输速度:UDP比TCP快,因为它不需要建立连接和提供可靠性保障。在一些场景中,如视频、音频等实时应用,UDP更适合。

4)数据量限制:UDP的数据包大小通常受限于底层网络协议(如以太网),一般不超过1472字节。而TCP的数据包大小则取决于操作系统和底层网络协议。

5)应用场景:TCP适用于可靠性要求高的应用场景,如网页浏览、电子邮件等。UDP适用于对速度和实时性要求高的应用场景,如在线游戏、视频流等。

6)头部开销:TCP的首部较大,为20个字节,而UDP的首部较小,为4个字节。

3.1.2 TCP、UDP的优缺点

TCP和UDP都有各自的优缺点,以下是它们的比较:

1)TCP的优点:

可靠:TCP提供了可靠的连接,保证了数据的可靠性和完整性,适用于对数据准确性要求高的场景。

高速:TCP的传输速度相对较快,尤其是在底层网络支持的情况下。

适应性:TCP的协议规范和实现独立于底层网络协议,可以适应不同的网络环境。

多路复用:TCP通过连接机制实现了多路复用,可以同时处理多个数据流,提高了传输效率。

2)TCP的缺点:

连接管理:TCP需要建立连接和断开连接的过程,这可能会导致一定的开销和延迟。

数据顺序:TCP在传输过程中需要维护数据顺序,如果某个数据包丢失或乱序,需要重新发送,这可能会影响传输速度。

数据量限制:TCP的数据包大小受限于底层网络协议,如以太网的最大传输单元(MTU),超过该限制可能导致数据被分割为多个小包传输。

流量控制:TCP的传输速率受限于底层网络协议的带宽,如果发送速率过快,可能导致数据包丢失或传输受阻。

3)UDP的优点:

快速:UDP的传输速度相对较快,尤其适用于实时性要求高的场景,如在线游戏、视频流等。

灵活性:UDP的数据包大小灵活,可以根据应用需要调整,同时不需要维护数据顺序。

简单:UDP的协议相对简单,易于实现和维护,适用于一些轻量级的应用场景。

多路复用:UDP的多路复用机制可以提高传输效率,同时处理多个数据流。

4)UDP的缺点:

不可靠:UDP不提供可靠性保障,数据可能丢失、损坏或重复,适用于一些对数据准确性要求不高的场景。

数据顺序:UDP的数据包顺序需要应用程序自行处理,适用于一些简单的应用场景。

数据量限制:UDP的数据包大小通常受限于底层网络协议(如以太网),一般不超过1472字节。4. 流控制:UDP的发送速率受限于底层网络协议的带宽和接收方的能力,可能导致数据包丢失或传输受阻。

数据错误处理:UDP的数据包在传输过程中可能发生错误,如损坏或重复,应用程序需要自行处理这些问题。

连接管理:UDP没有建立连接和断开连接的过程,因此不需要维护连接状态,这使得它更加轻量级,适用于一些简单的应用场景。

3.1.3 TCP UDP适用场景

        TCP和UDP都有各自的适用场景。

        TCP(传输控制协议)通常用于对准确性要求相对高的场景,比如文件传输、接受邮件和远程登录。TCP在传输数据时需要进行数据的确认、重发、排序等操作,因此相对来说效率没有UDP(用户数据报协议)高。

        UDP常用于对实时性要求高的场景,例如在线游戏、流媒体传输。UDP不可靠,因此它不适用于需要保证数据完整性和可靠性的应用场景。但因为UDP不需要进行连接管理、确认和重传等操作,所以它的数据传输速度比TCP快。同时,UDP还支持多播技术,可以将数据包发送到多个目的地。

3.1.4 TCP为什么是可靠连接

TCP之所以被认为是可靠连接,是因为它采用了以下几种机制来确保数据的可靠传输:

1)确认和应答机制:TCP通过发送数据后等待接收方的确认,以及在数据传输过程中采用应答机制,确保每个数据包都被正确接收。如果接收方没有确认收到某个数据包,发送方将重新发送该数据包,直到接收方确认收到为止。

2)序列号:TCP给每个数据包分配一个独特的序列号,接收方可以根据序列号对数据包进行排序,确保数据包的顺序正确。

3)超时重传:如果发送方在一定时间内没有收到接收方的确认,将重新发送数据包,以确保数据包能够被正确传输。

4)流量控制:TCP通过流量控制机制,确保发送速度不会超过接收方处理速度,避免数据包丢失或传输错误。

5)拥塞控制:当网络拥塞时,TCP会减缓发送速度,以避免过度拥塞网络,导致数据包丢失。

3.1.5 典型网络模型,简单说说有哪些

1)物理层:这一层的主要功能是建立物理连接,将比特流从一个地方传输到另一个地方,并进行数模转换和模数转换。

2)数据链路层:这一层的主要功能是为网络层提供服务,确保数据在物理层上的传输可靠。数据链路层还提供了一些错误检测和校正功能。

3)网络层:这一层的主要功能是进行逻辑地址寻址,实现不同网络之间的路径选择。

4)传输层:这一层的主要功能是定义传输数据的协议端口号,并进行流控和差错校验。其中最常用的协议是TCP(传输控制协议)和UDP(用户数据报协议)。

5)会话层:这一层的主要功能是建立、管理和终止会话。会话层还提供了一些同步和对话控制的功能。

6)表示层:这一层的主要功能是将数据进行加密、解密、压缩、解压缩等处理,以确保数据的完整性和一致性。

7)应用层:这一层是OSI模型的最上层,它提供了网络服务与最终用户的一个接口,用户可以操作的一个界面终端。

3.1.6 Http1.1和Http1.0的区别

1)持久连接:HTTP 1.0默认使用短连接,即每个请求/响应后都会关闭连接,而HTTP 1.1默认使用持久连接,在同一个连接上可以发送多个请求和响应。

2)请求管道化:HTTP 1.1支持请求管道化,即在一个持久连接上可以同时发送多个请求,而HTTP 1.0不支持请求管道化。

3)缓存处理:HTTP 1.0的缓存处理较为简单,仅支持通过"Expires"和"Cache-Control"头字段进行缓存控制,而HTTP 1.1引入了更多的缓存控制机制,如"ETag"和"If-None-Match"等。

4)错误处理:HTTP 1.0的错误处理较为简单,仅通过状态码表示错误,而HTTP 1.1引入了更多的错误处理机制,如通过"Transfer-Encoding"头字段传输错误信息。

此外,在HTTP 1.1中新增了24个状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

5)Host头字段:HTTP 1.0中没有Host头字段,而HTTP 1.1中要求每个请求都包含Host头字段,以指示请求的目标主机。

3.1.7 URI(统一资源标识符)和URL(统一资源定位符)之间的区别

1)URI是用于标识互联网上的资源的字符串序列,而URI并不关注资源的位置,而只关注它的标识符;

2)URL提供了关于资源在互联网上位置的详细信息,而URI是一种更广义的概念,不仅涵盖了URL,还包括了用于标识资源的其他形式,如URN;

3)URL是URI的一种特殊类型,用于定位互联网上的资源,而URI则是一种更广义的标识符,用于唯一地标识和命名资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值