前言
本系列博客主要记录有关嵌入式方面的面试重点知识,本系列已经更新的篇目有如下:
【本篇】3.1 TCP UDP
内容如有错误请在私信或者评论区及时指正,谢谢~
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则是一种更广义的标识符,用于唯一地标识和命名资源。