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

发布时间:2024年01月21日

说明:

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

1.TCPUDP的区别

答案:

TCP--- 传输控制协议 , 提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP 连接,之后才能传输数据。
UDP--- 用户数据报协议,是一个简单的面向数据报的运输层协议。 UDP 不提供可靠性,它只是把应用程序传给IP 层的数据报发送出去,但是并不能保证它们能到达目的地。
(1 TCP 是面向连接的, UDP 是面向无连接的
(2 UDP 程序结构较简单
(3 TCP 是面向字节流的, UDP 是基于数据报的
(4 TCP 保证数据正确性, UDP 可能丢包
(5 TCP 保证数据顺序到达, UDP 不保证

2.TCPUDP的优缺点

答案:

TCP优点:可靠稳定
TCP 的可靠体现在 TCP 在传输数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完之后,还会断开来连接用来节约系统资源。
TCP缺点:慢,效率低,占用系统资源高,易被攻击
在传递数据之前要先建立连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞机制等都会消耗大量时间,而且要在每台设备上维护所有的传输连接。然而,每个连接都会占用系统的CPU ,内存等硬件资源。因为TCP 有确认机制、三次握手机制,这些也导致 TCP 容易被利用,实现 DOS 、DDOS、 CC 等攻击。
UDP优点:快,比TCP稍安全
UDP 没有 TCP 拥有的各种机制,是一种无状态的传输协议,所以传输数据非常快,没有 TCP 的这些机制,被攻击利用的机会就少一些,但是也无法避免被攻击。
UDP缺点:不可靠,不稳定
因为没有 TCP 的这些机制, UDP 在传输数据时,如果网络质量不好,就会很容易丢包,造成数据的缺失。

3.TCP UDP适用场景

答案:

TCP 传输一些对信号完整性,信号质量有要求的信息。
UDP 对网络通讯质量要求不高时,要求网络通讯速度要快的场景。

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

答案:

5.请说一下socket网络编程中客户端和服务端用到哪些函数?

答案:

1服务器端函数:

????????(1)socket创建一个套接字

????????(2)bind绑定ip和port

????????(3)listen使套接字变为可以被动链接

????????(4)accept等待客户端的链接

????????(5)write/read接收发送数据

????????(6)close关闭连接

2客户端函数:

? ? ? ?(1)创建一个socket,用函数socket()

????????(2)bind绑定ip和port

????????(3)连接服务器,用函数connect()

????????(4)收发数据,用函数send()和recv(),或read()和write()

????????(5)close关闭连接

6.TCP如何保证可靠性?

答案:

1.检验和:

????????通过检验和的方式,接收端可以检测出来数据是否有差错和异常,假如有差错就会直接丢弃TCP段,重新发送。TCP在计算检验和时,会在TCP首部加上一个12字节的伪首部。检验和总共计算3部分:TCP首部、TCP数据、TCP伪首部.

2.序列号/ 确认应答、超时重传

????????数据到达接收方之后,接收方会发送一个确认应答,表示已经收到数据段,并且确认序号会说明了它下一次需要接收的数据序列号,如果发送方没收到确认应答,那么发送方方会进行重发,这个等待时间一般是2*RTT(往返时间)+一个偏差值。

如果一个包多次重发没有收到接收端的确认包,就会强制关闭连接

3.窗口控制与重发控制/快速重传(重复确认应答)

????????TCP会利用窗口控制来提高传输速度,意思是在一个窗口大小内,不用一定等到应答才能发送下一段数据,窗口大小就是无需等待确认而可以继续发送数据的最大值,如果不使用窗口控制,每一个没收到应答的数据都要重发。

7.简述 TCP 滑动窗口以及重传机制

答案:

1)滑动窗口协议是传输层进行流控的一种措施,接收方通过通告发送方自己的窗口大小,从而控制发送方的发送速度,从而达到防止发送方发送速度过快而导致自己被淹没的目的。滑动可以理解为缓冲区的大小,告诉发送方,自己还能接受多少数据

TCP的滑动窗口解决了端到端的流量控制问题,允许接受方对传输进行限制,直到它拥有足够的缓冲空间来容纳更多的数据。

2)TCP在发送数据时会设置一个计时器,若到计时器超时仍未收到数据确认信息,则会引发相应的超时或基于计时器的重传操作,计时器超时称为重传超时(RTO)?。另一种方式的重传称为快速重传,通常发生在没有延时的情况下。若TCP累积确认无法返回新的ACK,或者当ACK包含的选择确认信息(SACK)表明出现失序报文时,快速重传会推断出现丢包,需要重传。

8.简述 TCP 慢启动

答案:

慢启动(Slow Start),是传输控制协议(TCP)使用的一种阻塞控制机制。慢启动也叫做指数增长期。慢启动是指每次TCP接收窗口收到确认时都会增长。增加的大小就是已确认段的数目。这种情况一直保持到要么没有收到一些段,要么窗口大小到达预先定义的阈值。如果发生丢失事件,TCP就认为这是网络阻塞,就会采取措施减轻网络拥挤。一旦发生丢失事件或者到达阈值,TCP就会进入线性增长阶段。这时,每经过一个RTT窗口增长一个段。

9.三次握手和四次挥手

答案:

1)三次握手目的:是为了确认客户端和服务器都能收发? ?

????????第一次:

????????作用:客户端确认自己可以发 ,服务器确认自己能收客户端发送信息给服务器,服务器接受客户端信息 ????

????????第二次:

????????作用:客户端确认自己能收,服务器能发也能收 ????服务器确认自己能发服务器发送应答给客户端,客户端接收应答和报文

????????第三次:

????????作用:服务器确认客户端可以收到客户端应答服务器

第一次:客户端将标志位SYN设置为1,随机产生一个seq=x,并将该数据包发送给服务端,客户端进入SYN_SENT状态,等待服务端确认

第二次:服务端收到数据包后,由标志位SYN=1可知client请求连接,服务端将标志位SYN和ACK都置1,ack=x+1,并将该数据包发送给客户端确认连接请求,服务端进入SYN_RCVD状态

第三次:客户端收到确认后,检查ack是否为x+1,ACK是否为1,如果正确,将数据包发给服务端,服务端检查ACK是否为1,ack是否为y+1,如果是,则连接成功,服务器和客户端都进入ESTABLISHED

2)四次挥手

客户端发送FIN=1给客户端,告诉服务端数据已经发送完毕,请求终止连接,此时客户端不能发送数据(不包括协议,比如应答这些),但还能接收数据,

服务端接受FIN包之后给客户端回一个ACK包告诉它自己已经收到,此时没有断开socket连接,而是等待剩下的数据传输完成

服务端等待数据传输完毕之后,向客户端发送FIN包,表明可以断开连接

客户端收到后,回应一个ACK包表明已经收到,等待一段时间,确保服务端没有数据再发来,然后彻底断开

10.说说 TCP 2次握手行不行?为什么要3次

答案:

TCP协议双方都必须维护一个序列号,三次握手的过程及时通信双方互相告知序列号起始值,并确认对方已经收到了序列号。

如果只是两次握手,至多只有连接发起方的起始序列号能被确认,另一方选择的序列号则是得不到确认,服务器这边无法判断客户端是否能接收。

11.三次挥手可以吗

答案:

假设是客户端主动断开,在第一次挥手中客户端发起请求断开,接着服务器回了个应答(第二次),表示我已经收到请求。等一段时间,等服务器的数据发送完成之后再向客户端发起断开(第三次)。客户端接受到之后发起应答(第四次)。

如果是三次挥手那么只能是第二和第三次合并,即收到第一次挥手之后,发起应答和断开请求,但是这样会存在服务器有些数据还没发送完成就发起断不开

??一句话:服务器回应你的请求断开,服务器可能还有数据没发送,所以应答和FIN就分开发。

12.简述域名解析过程

答案:

(1)输入域名后,系统首先会在本地的hosts文件检查是否有这个网址的映射,如果有就调用这个IP地址完成域名的解析。

(2)如果没有,就会去查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成解析。

(3)如果上面两种都没有,首先会找TCP/IP参数设置的首选DNS服务器,我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名在本地配置区域资源中,则解析。

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