物联网

计算机网络高频面试知识点

2020-07-02  本文已影响0人  CryFace

关于网络的高频面试题,整理了了一下大部分网络层,传输层,应用层。所以这里只找面试可能出现的。关于答案相关的很多都来自网上整理的,还有就是谢希仁的计算机网络第七版,在最后面会给上参考资料。

关于计算机网络的体系结构

五层协议

OSI协议

多了表示层和会话层:

TCP/IP

只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。

网络层

网络层的设计思路是:“网络层只向上提供简单灵活的、无连接的、尽最大努力交付的服务。”关于网络层的知识点也很多,但是在面试中的高频知识点不多。

网络层里网际IP协议是TCP/IP体系中两个最重要的协议之一。与IP协议配套使用的还有三个协议:

IP地址是如何分类的?

什么是私有/保留IP地址?

私有/保留就是在互联网上不使用,而被使用在局域网络中的地址或者做其他特殊用途。比如我们的联通运营商就是使用的10.开头的保留地址, 局域网组网,然后用户通过拨号的方式进入局域网,然后再通过访问网关访问Internet,这样做最大的好处就是节约了公网IP地址,极大的降低了成本。

有哪些私有/保留IP地址?

A类:10.0.0.0 ~ 10.255.255.255

B类:172.16.0.0 ~ 172.31.255.255

C类:192.168.0.0 ~ 192.168.255.255

ARP协议是如何解析MAC地址的,什么是ARP欺骗?

网络层的 ARP 协议完成了 IP 地址与物理地址的映射。

首先,每台主机都会在自己的 ARP 缓冲区中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP 列表中是否存在该 IP 地址对应的 MAC 地址:如果有,就直接将数据包发送到这个 MAC 地址;如果没有,就向本地网段发起一个 ARP 请求的广播包,查询此目的主机对应的 MAC 地址。此 ARP 请求数据包里包括源主机的 IP 地址、硬件地址、以及目的主机的 IP 地址。网络中所有的主机收到这个 ARP 请求后,会检查数据包中的目的 IP 是否和自己的 IP 地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的 MAC 地址和 IP 地址添加到自己的 ARP 列表中,如果 ARP 表中已经存在该 IP 的信息,则将其覆盖,然后给源主机发送一个 ARP 响应数据包,告诉对方自己是它需要查找的 MAC 地址;源主机收到这个 ARP 响应数据包后,将得到的目的主机的 IP 地址和 MAC 地址添加到自己的 ARP 列表中,并利用此信息开始数据的传输。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。

ARP默认了其所在的网络是一个善良的网络,每台主机在向网络中发送应答信号时都是使用的真实身份。所以人们就发现ARP应答中的IP地址和MAC地址中的信息是可以伪造的,并不一定是自己的真实IP地址和MAC地址,由此,ARP欺骗就产生了。

什么是icmp协议,它的作用是什么?

它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

运输层

从通信和信息处理两个角度看,运输层向它上面的应用层提供了通信服务。其主要的两个协议是UDP协议(用户数据报协议)和TCP协议(传输控制协议),重点在于TCP协议和可靠传输的原理。

TCP与UDP的特点和区别?

UDP的特点:

TCP的特点:

TCP与UDP的区别:

使用UDP和TCP协议的各种应用和应用层协议

应用 应用层协议 运输协议
名字转换 DNS(域名系统) UDP
文件传送 TFTP(简单文件传送协议) UDP
路由选择协议 RIP(路由信息协议) UDP
IP地址配置 DHCP(动态主机配置协议) UDP
网络管理 SNMP(简单网络管理协议) UDP
远程文件服务器 NFS(网络文件系统) UDP
IP电话 专用协议 UDP
流式多媒体通信 专用协议 UDP
多播 IGMP(网际管理协议) UDP
电子邮件 SMTP(简单邮件传送协议) TCP
远程终端接入 TELNET(远程终端协议) TCP
万维网 HTTP(超文本传送协议) TCP
文件传送 FTP(文件传送协议) TCP

三次握手四次挥手全过程

三次握手

  1. 第一次握手,客户端给服务器发送一个SYN包,序号为x,等待服务器的响应。

  2. 第二次握手,服务器给客户端发送了有ACK/SYN标志的包,序号为y,确认号为x+1,并等待客户端响应。

  3. 第三次握手,客户端收到服务器的确认包后,给服务器发送了一个ACK包,序号为x+1,确认号为y+1。

    三次握手完毕后,就可以正式传递数据了。

四次挥手

  1. 第一次挥手,客户端给服务器发送一个FIN包,此时客户端不会再向服务器发送数据,但客户端能接收服务器的数据。

  2. 第二次挥手,当服务器收到FIN包后,会给客户端发一个确认包,并传递剩下的数据。

  3. 第三次挥手,当服务器将剩余数据发送完后,就向发送方发一个FIN包。此时服务器也不会继续向客户端发送数据了。

  4. 第四次挥手,客户端收到服务器的FIN包后,就向服务器发送一个确认包。

    服务端接收到后,完成四次挥手。服务器断开连接,客户端在等待一段时间后也断开连接。

为什么需要三次握手,四次挥手?

三次握手的目的是建立可靠的通信信道,无论是客户端,还是服务器都需要确保自己和对方的发送/接收功能都是正常的,三次握手的过程就能保证这一点。

如果不进行挥手操作,比如客户端直接断开与服务器的连接,那么服务器不知情,还会继续向客户端发送数据,这就造成资源浪费。

为什么需要有Time_Wait状态和等待2MSL?

为了保证客户端发送的最后一个确认,能够达到服务器

这个ACK可能丢失,就会导致服务器在LAST-ACK状态,没办法正常结束,那么服务器收不到就会超时重传可以断开的消息。

那么A就能够在这个2MSL中收到这个重传的消息,并且重新计时2MSL。

而且,客户端持续2MSL时间后断开,就可以保证这个连接的所有报文都会死亡,可以看下MSL的含义,也就是2MSL之后,断开这个连接之后,肯定不会还存在这个连接的旧的报文了。

补充:MSL(最大报文段的生成时间)在RFC793中规定hi2分钟,实际应用是30秒,1分钟,2分钟等

为什么不能两次握手,或者三次挥手?

  1. 二次握手不行,假设客户端的一个SYN包在网络中滞留了很久,这就是个失效的报文段了,如果服务器收到这个报文段,就认为这是一个连接请求,并建立连接。这样,就会浪费服务器资源,采用三次握手就能避免这种情况。

  2. 三次挥手不行,如果没有最后一次挥手,即服务器在第三次挥手,即发送完FIN包后就断开连接,如果这个包丢失了,那么客户端就会一直等待,这显然是不行的。

SSL四次挥手过程?描述一下

TCP是如何保证可靠传输的?

应用层

URI和URL的区别?

URL我们说是叫统一资源定位符,URI我更愿意叫做统一资源标识符。

举个例子:

一个人,身份证是他的唯一标识,可以作为统一资源标识符,而地址是为了找到他,所以是统一资源定位符。

HTTP请求的GET与POST方式的区别?

从输入网址到获取页面的过程?

常见的HTTP请求?

HTTP状态码有哪几类?常见的状态码有哪些?

200:请求成功状态码。
301:永久重定向。该资源已经分配了新的 URI,服务器返回301响应时,会自动将请求者转移到新URI。
302:临时重定向。表示请求的资源临时分配了新的 URI,希望用户(本次)能使用新的 URI 访问。
404:服务器找不到目标资源。
500:服务器内部出错,无法完成请求。

HTTP与HTTPS的区别?

参考资料

计算机网络第七版-谢希仁

CyC2018/CS-Notes

Java工程师面试宝典

网络是如何连接的?网络发展简介(四)

计算机网络-高频面试题详细总结

阿提说说

上一篇 下一篇

猜你喜欢

热点阅读