飞道的博客

计算机网络面试的基本问题

366人阅读  评论(0)

计算机网络

面试基本题



9. tcp和udp

tcp是面向连接的,可靠的, 面向字节流的
udp是无连接的,不可靠的, 面向报文的

因为tcp要保证数据传输的正确性和顺序性,因此速度没有udp快
应用场景:TCP适用于对数据正确性要求较高的应用,如文件传输;UDP适用于对数据速度要求较高的应用,如视频和音频的实时传输。

10.三次握手过程&为什么是三次

讲清楚每次是什么报文,标志位SYN, ACK的情况,序列号确认号的情况

为什么是三次不是两次或者四次:
四次太多,如果把第二次拆开是没必要的,浪费资源
两次不够,是因为tcp是全双工的连接——可以同时收和发
为了保证双方的一个收发的能力,前两次握手能保证客户端的发送能力以及服务端的收和发的能力,但是不能保证客户端的收的能力

11.SYN攻击,以及怎么预防

就是一群机器(dos攻击)给你服务器去发第一次握手的同步syn报文,然后你服务器收到之后要回syn+ack,但是之后那边不给你第三次握手的ack确认报文,就可能触发重传,让你服务器大量端口被占用,造成资源的浪费。

核心原因在于服务器资源枯竭,半连接队列没了
半连接队列就是一个储存还没有建立连接状态信息的队列

做法:1.尽快断开这个连接比如重发的次数减少或者,增大这个半连接队列
2.不用这个半连接队列去存连接的信息,用SYN_cookie去存

12.序列号能不能固定

1.防止历史报文被下一个相同的四元组接受
2.会出现一些安全类的问题,比如伪造相同的序列号

13.tcp的keep-alive

保活,隔一段时间去发一个keep-alive报文,看看有没有响应;用来确认双方的连接是否还存在
http的keep-alive是长连接

14. 四次挥手,为什么需要四次,存在三次么

两端都要有FIN报文和ACK报文
被动断开连接的一端的FIN和ACK分开是因为可能它还在发送信息,要把数据处理完再发FIN报
存在三次,如果正好那边数据发完了,内核也会合在一起的。

15.time_wait,客户端主动断开,服务端出现大量time_wait怎么办

time_wait持续2MSL,之后再断开连接

2MSL 的时间是从客户端接收到 FIN 之后,发送 最后一个ACK报文之后 开始计时的,2MSL时长 这其实是相当于至少允许报文丢失一次

为什么会有大量time_wait出现,服务端相互调用,断开连接的动作太多。
解决 —— 往长连接上靠

有可能是,没有使用长连接,长连接超时,长连接请求数量达到上限(keepalive_requests)

16.TCP怎么保证可靠

1.序列号
2.重传
3.连接管理(握手)
4.流量控制, 跟据对方数据的处理能力调节发送速度(滑动窗口)
5.拥塞控制,根据网络调整发送速率 (慢启动,拥塞避免,快重传,快恢复)

17. 滑窗的机制,窗口大小,窗口大小为0怎么办

滑窗的机制,就是对方在确认报中会把窗口大小给发过来,然后发送端根据这个窗口大小去动态调整窗口的size

窗口大小在报头就带着了

窗口大小为0的话,就会阻止发送方给接收方传递数据,直到窗口变为非 0 为止,这就是窗口关闭。
有一个零窗口的计时器,超时的话就会主动发探测报文,对方处理完数据就会把增大后的窗口在确认报里传过来。如果 3 次过后接收窗口还是 0 的话,有的 TCP 实现就会发 RST 报文来中断连接。

18.如何跟据udp实现可靠传输

udp是写在内核里的,不能去改的
我们可以在应用层去做一些改进加一些控制,实现可靠传输,比如加一些序列号,比如实现一些窗口
udp基本上是0,可以基于它做加法。

19.DNS工作流程,基于tcp还是udp

DNS基于udp,但是域名服务器很多,他们之间的信息交互是tcp

DNS域名解析是一个把域名映射到ip地址的过程:
1.首先浏览器缓存查询,查询本地缓存看有没有域名对应的ip地址
2.如果没有的话,请求本地的DNS服务器
3.如果本地DNS服务器没有的话会问根DNS服务器
4.然后根DNS服务器会把请求发送给对应的顶级 DNS 服务器,顶级 DNS 服务器会把请求转发给该域名的权威 DNS 服务器,该服务器知道该域名对应的 IP 地址,然后返回给对应的ip地址

20. ping的工作流程是怎么样的,能不能ping端口

ping主要看某个主机是否可达,能不能ping的通,检测网络中两个设备之间的连通性
底层依赖一个ICMP协议(网络层的),不能ping端口

ARP(地址解析,ip->物理地址)

地址解析协议,将ip地址映射到物理地址(mac)
工作流程:广播
当一个设备想要发送数据包到另一个设备时,它需要知道该设备的 MAC 地址。如果它没有该信息,它将发送一个 ARP 请求报文,询问网络中的其他设备是否已经知道目标设备的 MAC 地址。如果某个设备已经知道目标设备的 MAC 地址,它将发送一个 ARP 回复报文,告诉请求设备目标设备的 MAC 地址。

为什么有ip地址还要有mac地址:因为ipv4不够


转载:https://blog.csdn.net/lebowskii/article/details/128897942
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场