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

说明:

  • 面试群,群号: 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编址,定义路由功能;如不同设备的数据转发。
  • 传输层:端到端传输数据的基本功能;如 TCP、UDP。
  • 会话层:控制应用程序之间会话能力;如不同软件数据分发给不同软件。
  • 表示层:数据格式标识,基本压缩加密功能。
  • 应用层:各种应用软件,包括 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.**服务器缓存的原因是什么?**如何实现的?

答案:
原因

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

实现方法

  • 让代理服务器进行缓存;
  • 让客户端浏览器进行缓存。
相关推荐
以太浮标3 小时前
华为eNSP模拟器综合实验之- VLAN终结实践案例分析
网络·计算机网络·华为·智能路由器
编程彩机3 小时前
互联网大厂Java面试:从Java SE到大数据场景的技术深度解析
java·大数据·spring boot·面试·spark·java se·互联网大厂
梵刹古音4 小时前
【C语言】 结构化编程与选择结构
c语言·开发语言·嵌入式
静心观复9 小时前
内存带宽的计算方法
计算机网络
岁岁种桃花儿9 小时前
SpringCloud超高质量面试高频题300道题
spring·spring cloud·面试
努力学算法的蒟蒻9 小时前
day75(2.3)——leetcode面试经典150
面试·职场和发展
南风知我意95710 小时前
【前端面试3】初中级难度
前端·javascript·面试
华清远见成都中心10 小时前
GPIO(通用输入输出)面试中高频问题
单片机·面试·职场和发展
小李独爱秋13 小时前
计算机网络经典问题透视:无线局域网的物理层主要有哪几种?
服务器·网络·物联网·计算机网络·信息与通信
BHXDML15 小时前
计算机网络实验:(五)路由协议的配置
网络·计算机网络·智能路由器