嵌入式软件工程师面试题——2025校招社招通用(计算机网络篇)(二十九)

发布时间:2024年01月21日

说明:

  • 面试群,群号: 228447240
  • 面试题来源于网络书籍,公司题目以及博主原创或修改(题目大部分来源于各种公司);
  • 文中很多题目,或许大家直接编译器写完,1分钟就出结果了。但在这里博主希望每一个题目,大家都要经过认真思考,答案不重要,重要的是通过题目理解所考知识点,好应对题目更多的变化;
  • 博主与大家一起学习,一起刷题,共同进步;
  • 写文不易,麻烦给个三连!!!

1.说说什么是 TCP 粘包和拆包?

答案:

TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。

2.如何解决粘包和拆包问题

答案:

粘包的问题出现是因为不知道一个用户消息的边界在哪,如果知道了边界在哪,接收方就可以通过边界来划分出有效的用户消息。

所以可以:

  • 固定长度的消息;
  • 特殊字符作为边界;要注意特殊字符转义
  • 自定义消息结构。比如这个消息结构体,首先 4 个字节大小的变量来表示数据长度,真正的数据则在后面

3.Tcp为什么比UDP可靠

答案:

1.确认和重传机制

主要还三次握手和四次挥手

2.数据排序

TCP有专门的序列SN字段,可提供re-order

3.流量控制

窗口和计时器的使用,TCP窗口中指明双方能够接发的最大数据数量

4.拥塞控制

TCP的拥塞控制由4个核心算法组成,“慢启动”,“拥塞避免”,“”快速重传,“快速恢复”

4.IPv4和IPv6的区别

答案:

(1)协议地址的区别

地址长度:IPv4协议具有32位(4字节)地址长度;IPv6协议具有128位(16字节)地址长度

地址的表示方法:IPv4地址是以小数表示的二进制数。 IPv6地址是以十六进制表示的二进制数。

(2)地址解析协议

IPv4协议:地址解析协议(ARP)可用于将IPv4地址映射到MAC地址。

IPv6协议:地址解析协议(ARP)被邻居发现协议(NDP)的功能所取代。

(3)身份验证和加密

IPv6提供身份验证和加密,但IPv4不提供。

(4)数据包的区别

包的大小:IPv4协议的数据包最小值为576个字节;IPv6协议的数据包最小值为1280个字节。

包头:IPv4长度为20~40字节;IPv6固定40字节。

5.OSI 的七层模型分别是?各自的功能是什么?

答案:

简要概括
  • 物理层:底层数据传输,如网线;网卡标准。
  • 数据链路层:定义数据的基本格式,如何传输,如何标识;如网卡MAC地址。
  • 网络层:定义IP编址,定义路由功能;如不同设备的数据转发。
  • 传输层:端到端传输数据的基本功能;如 TCPUDP
  • 会话层:控制应用程序之间会话能力;如不同软件数据分发给不同软件。
  • 表示层:数据格式标识,基本压缩加密功能。
  • 应用层:各种应用软件,包括 Web 应用。
说明:
  • 在四层,既传输层数据被称作Segments);
  • 三层网络层数据被称做Packages);
  • 二层数据链路层时数据被称为Frames);
  • 一层物理层时数据被称为比特流Bits)。
总结
  • 网络七层模型是一个标准,而非实现。
  • 网络四层DNS的工作原理?模型是一个实现的应用模型。
  • 网络四层模型由七层模型简化合并而来。

6.说一下一次完整的HTTP请求过程包括哪些内容?

答案:

第一种回答
建立起客户机和服务器连接。
建立连接后,客户机发送一个请求给服务器。
服务器收到请求给予响应信息。
客户端浏览器将返回的内容解析并呈现,断开连接。
第二种回答
域名解析 --> 发起 TCP 3 次握手 --> 建立 TCP 连接后发起 http 请求 --> 服务器响应 http 请求,浏览器得到html代码 --> 浏览器解析 html 代码,并请求 html 代码中的资源(如 js css 、图片等) --> 浏览器对页面进行渲染呈现给用户。

7.DNS的工作原理?

答案:

将主机域名转换为 ip 地址,属于应用层协议,使用 UDP 传输。
总结: 浏览器缓存,系统缓存,路由器缓存, IPS 服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存
一、主机向本地域名服务器的查询一般都是采用递归查询。
二、本地域名服务器向根域名服务器的查询的迭代查询。
1) 当用户输入域名时,浏览器先检查自己的缓存中是否 这个域名映射的 ip 地址,有解析结束。
2 )若没命中,则检查操作系统缓存(如 Windows hosts )中有没有解析过的结果,有解析结束。
3 )若无命中,则请求本地域名服务器解析( LDNS )。
4 )若 LDNS 没有命中就直接跳到根域名服务器请求解析。根域名服务器返回给 LDNS 一个 主域名服务器地址。
5 ) 此时 LDNS 再发送请求给上一步返回的 gTLD ( 通用顶级域), 接受请求的 gTLD 查找并返回这个域
名对应的 Name Server 的地址
6 Name Server 根据映射关系表找到目标 ip ,返回给 LDNS
7 LDNS 缓存这个域名和对应的 ip , 把解析的结果返回给用户,用户根据 TTL 值缓存到本地系统缓存中,域名解析过程至此结束

8.为什么域名解析用UDP协议?

答案:

因为 UDP 快啊! UDP DNS 协议只要一个请求、一个应答就好了。
而使用基于 TCP DNS 协议要三次握手、发送数据以及应答、四次挥手,但是 UDP 协议传输内容不能超过512 字节。
不过客户端向 DNS 服务器查询域名,一般返回的内容都不超过 512 字节,用 UDP 传输即可。

9.为什么区域传送用TCP协议?

答案:

因为 TCP 协议可靠性好啊!
你要从主 DNS 上复制内容啊,你用不可靠的 UDP ? 因为 TCP 协议传输的内容大啊,你用最大只能传 512字节的UDP 协议?万一同步的数据大于 512 字节,你怎么办?所以用 TCP 协议比较好!

10.当 ping 一个 IP 地址时发生了什么

答案:

从ping?的man手册就可以看出来,ping实际上发送了?ICMP ECHO_REQUEST?的报文。

ping -- send ICMP ECHO_REQUEST packets to network hosts

通过让目标 IP 地址返回?ICMP ECHO_RESPONSE?报文来判断 IP 可不可达。

ICMP?分为?Query?查询报文及?Error Message?报文,ping 为查询报文

11.HTTP长连接和短连接的区别

答案:

HTTP/1.0 中默认使用短连接。也就是说,客户端和服务器每进行一次 HTTP 操作,就建立一次连接,任务结束就中断连接。
而从 HTTP/1.1 起,默认使用长连接,用以保持连接特性。

12.服务器缓存的原因是什么?如何实现的?

答案:

原因
  • 缓解服务器压力;
  • 降低客户端获取资源的延迟:缓存通常位于内存中,读取缓存的速度更快。并且缓存服务器在地理位置上也有可能比源服务器来得近,例如浏览器缓存。
实现方法
  • 让代理服务器进行缓存;
  • 让客户端浏览器进行缓存。

文章来源:https://blog.csdn.net/weixin_45257157/article/details/135732299
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。