计算机网络面试题总结(持续更新中~)

以下题目整理自:牛客网

相关总结:

C/C++面试题总结

数据结构与算法面试题总结

操作系统面试题总结

设计模式面试题总结

数据库面试总结

 

1、OSI,TCP/IP,五层协议的体系结构,以及各层协议?

参考答案:

OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP/IP分层(4层):网络接口层、 网际层、传输层、 应用层。
五层协议 (5层):物理层、数据链路层、网络层、传输层、 应用层。


每一层的协议如下:
物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器)
数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS


每一层的作用如下:
物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
数据链路层:将比特组装成帧和点到点的传递(帧Frame)
网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
会话层:建立、管理和终止会话(会话协议数据单元SPDU)
表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
应用层:允许访问OSI环境的手段(应用协议数据单元APDU)

 

2、IP地址的分类?

参考答案:

A类地址:以0开头,   第一个字节范围:1~126(1.0.0.0 - 126.255.255.255);

B类地址:以10开头,  第一个字节范围:128~191(128.0.0.0 - 191.255.255.255);

C类地址:以110开头, 第一个字节范围:192~223(192.0.0.0 - 223.255.255.255);

D类地址:以1110开头,第一个字节范围:224~239(224.0.0.0 - 239.255.255.255);(作为多播使用)

E类地址:保留

其中A、B、C是基本类,D、E类作为多播和保留使用。

 

以下是留用的内部私有地址:

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

 

IP地址与子网掩码相与得到网络号:

ip       : 192.168.2.110

&

Submask : 255.255.255.0

----------------------------

网络号   :192.168.2  .0

注:主机号,全为0的是网络号(例如:192.168.2.0),主机号全为1的为广播地址(192.168.2.255)

 

3、ARP是地址解析协议,简单语言解释一下工作原理。

参考答案:

1)首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。

2)当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。

3)当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。

4)源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

注:广播发送ARP请求,单播发送ARP响应。

 

4、各种协议的介绍:

参考答案:

ICMP协议: 因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。

TFTP协议: 是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

HTTP协议: 超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。

NAT协议:网络地址转换属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,

DHCP协议:动态主机配置协议,是一种让系统得以连接到网络上,并获取所需要的配置参数手段,使用UDP协议工作。

具体用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。

 

5、描述RARP协议

参考答案:

RARP是逆地址解析协议。

作用:完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。

工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。

 

6、TCP三次握手和四次挥手的全过程

参考答案:

三次握手
第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

三次握手简化版

第一次握手,发送SYN报文,传达信息:“你好,我想建立连接”;

第二次握手,回传SYN+ACK报文,传达信息:“好的,可以建立链接”;

第三次握手,回传ACK报文,传到信息:“好的,我知道了,那我们连接”。然后就建立连接了。在发送报文之前各方都要确认可以进行连接。

四次挥手
与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些据),但是,此时主动关闭方还可以接受数据。

第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个号)。

第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。

第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

四次挥手简化版

第一次挥手:客户端发送一个FIN包给服务器,说:"我要发的数据发送完了,我关闭数据传输通道了"。

第二次挥手:服务器收到FIN包后,发送一个ACK包给客户端,说:"好的,你传输的数据我都接受到了"。

第三次挥手:服务器发送FIN包给客户端,关闭数据传送通道,"我的数据也发送完了,我的数据传输通道也关闭了"。

第四次挥手:客户端收到FIN,发送一个ACK包给服务器,"好的,你的数据我也都接受完了,拜拜"。

 7、为什么要三次握手?而不是两次握手?(为什么客户端最后一次还要发送一次确认)

参考答案:

主要为了防止已失效的连接请求报文段突然又连接到了服务器,因而产生错误。

之所以采取三次握手机制,不过是为了信息传输的可靠性,如果其中某个握手失败,这个过程将会重复,来确保其可靠性。

如果采取两次握手,相当于第二次握手结束便建立连接,如果发送SYN的一方不想连接了,也不会有反馈,另一方却一直在等待,浪费了时间。

当然可以采取4次甚至N次握手,但是有必要吗?建立连接的时间太长,效果也会大打折扣。

所以3次只是折中方案,既保证了可靠性,又节省了建立连接的时间。

已失效的连接请求报文段是指: 客户端发出的第一个连接请求报文段未丢失,而是长时间滞留了,以致延误到连接释放的某个时间才到达服务器。本来这是一个早已失效的报文段。但服务器收到此失效的连接请求报文段后,误以为是客户端又发出一次新的连接请求。于是就向客户端发出确认报文段,同意建立连接。而客户端并未真正发出建立连接请求,因此不会向服务器发送数据,服务器却一直等待客户端发送数据,这样就白白浪费了服务器的许多资源。

 

8、为什么客户端在TIME-WAIT状态必须等待2MSL的时间?

参考答案: 

第一,为了保证客户端发送的最后一个ACK报文段能到达服务器。

第二,为了防止已失效的连接请求报文段连接服务器。

 

补充:

如果已经建立了连接,但是客户端突然出现故障了怎么办?

    TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。
 

 

9、在浏览器中输入www.baidu.com后执行的全部过程

参考答案: 

① 客户端浏览器通过DNS解析到www.baidu.com 的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.181.27.48,然后通过TCP进行封装数据包,输入到网络层。

② 在客户端的传输层,把HTTP会话请求分成报文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。

③ 客户端的网络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,无非就是通过查找路由表决定通过那个路径到达服务器。

④ 客户端的数据链路层,包通过链路层发送到路由器,通过ARP协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后,就可以使用ARP的请求应答交换的IP数据包,现在就可以传输了,然后发送IP数据包到达服务器的地址。

 

10、TCP和UDP的区别?

参考答案:

① 区别

  • TCP提供面向连接的、可靠的数据流传输,而UDP提供的是非面向连接的、不可靠的数据流传输。
  • TCP传输单位称为TCP报文段,UDP传输单位称为用户数据报。
  • TCP注重数据安全性,UDP数据传输快,因为不需要连接等待,少了许多操作,但是其安全性却一般。

② TCP对应的协议:

(1) FTP:定义了文件传输协议,使用21端口
(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3) SMTP简单邮件传送协议,用于发送邮件。服务器开放的是25号端口。
(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口
(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
 

③ UDP对应的协议:

(1) DNS:用于域名解析服务,将域名地址(如www.baidu.com)转换为IP地址(119.75.220.12)。DNS用的是53号端口
(2) SNMP简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
(3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

 

11、DNS域名系统,简单描述其工作原理。

参考答案:

       当DNS客户机需要在程序中使用名称时,它会查询DNS服务器来解析该名称。客户机发送的每条查询信息包括三条信息,包括:指定的DNS域名,指定的查询类型,DNS域名的指定类别。基于UDP服务,端口53。 该应用一般不直接为用户使用,而是为其他应用服务,如HTTP,SMTP等在其中需要完成主机名到IP地址的转换。
 

补充:转自DNS(Domain Name System,域名系统)

1) 什么是 DNS?

DNS(Domain Name System,域名系统),因特网上作为域名和 IP 地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的 IP 数串。通过主机名,最终得到该主机名对应的 IP 地址的过程叫做域名解析(或主机名解析)。通俗的讲,我们更习惯于记住一个网站的名字,比如 www.baidu.com,而不是记住它的 ip 地址,比如:167.23.10.2。而计算机更擅长记住网站的 ip 地址,而不是像www.baidu.com 等链接。因为,DNS 就相当于一个电话本,比如你要找 www.baidu.com这个域名,那我翻一翻我的电话本,我就知道,哦,它的电话(ip)是 167.23.10.2。

2) DNS 查询的两种方式:递归查询和迭代查询

1、递归解析

当局部 DNS 服务器自己不能回答客户机的 DNS 查询时,它就需要向其他DNS 服务器进行查询。此时有两种方式,一种是递归方式。局部 DNS服务器自己负责向其他 DNS 服务器进行查询,一般是先向该域名的根域服务器查询,再由根域名服务器一级级向下查询。最后得到的查询结果返回给局部 DNS服务器,再由局部 DNS 服务器返回给客户端。

2、迭代解析

当局部 DNS 服务器自己不能回答客户机的 DNS 查询时,也可以通过迭代查询的方式进行解析。局部 DNS 服务器不是自己向其他 DNS 服务器进行查询,而是把能解析该域名的其他 DNS 服务器的 IP 地址返回给客户端DNS 程序,客户端 DNS 程序再继续向这些 DNS 服务器进行查询,直到得到查询结果为止。也就是说,迭代解析只是帮你找到相关的服务器而已,而不会帮你去查。

3) DNS 负载均衡

当一个网站有足够多的用户的时候,假如每次请求的资源都位于同一台机器上面,那么这台机器随时可能会崩溃。处理办法就是用 DNS 负载均衡技术,它的原理是在 DNS 服务器中为同一个主机名配置多个 IP 地址,在应答 DNS 查询时,DNS 服务器对每个查询将以DNS 文件中主机记录的 IP 地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。例如可以根据每台机器的负载量,该机器离用户地理位置的距离等等。

 

12、了解交换机、路由器、网关的概念,并知道各自的用途。

参考答案:

1)交换机

在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。交换机拥有一条高带宽的背部总线和内部交换矩阵。交换机的所有的端口都挂接在这条背部总线上,当控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口。目的MAC若不存在,交换机才广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部地址表中。

交换机工作于OSI参考模型的第二层,即数据链路层。交换机内部的CPU会在每个端口成功连接时,通过ARP协议学习它的MAC地址,保存成一张 ARP表。在今后的通讯中,发往该MAC地址数据包将仅送往其对应的端口,而不是所有的端口。因此,交换机可用于划分数据链路层广播,即冲突域;但它不 能划分网络层广播,即广播域

交换机被广泛应用于二层网络交换,俗称“二层交换机”。

交换机的种类有:二层交换机、三层交换机、四层交换机、七层交换机分别工作在OSI七层模型中的第二层、第三层、第四层和第七层,并因此而得名。

2)路由器

路由器(Router)是一种计算机网络设备,提供了路由与转送两种重要机制,可以决定数据包从来源端目的端所经过的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。路由工作在OSI模型的第三层——即网络层,例如网际协议。

路由器的一个作用连通不同的网络,另一个作用是选择信息传送的线路。 路由器与交换器的差别,路由器是属于OSI第三层的产品,交换器是OSI第二层的产品(这里特指二层交换机)。

3)网关

网关(Gateway),网关顾名思义就是连接两个网络的设备,区别于路由器(由于历史的原因,许多有关TCP/IP 的文献曾经把网络层使用的路由器(Router)称为网关,在今天很多局域网采用都是路由来接入网络,因此现在通常指的网关就是路由器的IP),经常在家庭中或者小型企业网络中使用,用于连接局域网Internet。 网关也经常指把一种协议转成另一种协议的设备,比如语音网关。

在传统TCP/IP术语中,网络设备只分成两种,一种为网关(gateway),另一种为主机(host)。网关能在网络间转递数据包,但主机不能转送数据包。在主机(又称终端系统,end system)中,数据包需经过TCP/IP四层协议处理,但是在网关(又称中介系统,intermediate system)只需要到达网际层(Internet layer),决定路径之后就可以转送。在当时,网关 (gateway)与路由器(router)还没有区别。

在现代网络术语中,网关(gateway)与路由器(router)的定义不同。网关(gateway)能在不同协议间移动数据,而路由器(router)是在不同网络间移动数据,相当于传统所说的IP网关(IP gateway)。

网关是连接两个网络的设备,对于语音网关来说,他可以连接PSTN网络和以太网,这就相当于VOIP,把不同电话中的模拟信号通过网关而转换成数字信号,而且加入协议再去传输。在到了接收端的时候再通过网关还原成模拟的电话信号,最后才能在电话机上听到。

对于以太网中的网关只能转发三层以上数据包,这一点和路由是一样的。而不同的是网关中并没有路由表,他只能按照预先设定的不同网段来进行转发。网关最重要的一点就是端口映射,子网内用户在外网看来只是外网的IP地址对应着不同的端口,这样看来就会保护子网内的用户。

 

13、TCP如何实现可靠传输

  1. 校验和:TCP 将保持它首部和数据的检验和,这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段
  2. 将数据切割成合理的长度(应用数据被分割成 TCP 最认为适合发送的数据块大小
  3. 有序接受(TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层)
  4. 丢弃重复的数据(TCP 的接收端会丢弃重复的数据)
  5. 流量控制: TCP 连接的每一方都有固定大小的缓冲空间,TCP 接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据时,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议 ( TCP 利用滑动窗口实现流量控制);
  6. 拥塞控制: 当网络拥塞时,减少数据的发送;
  7. ARQ 协议: 也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,并等待对方确认,在收到确认之后,再发下一个分组;
  8. 超时重传: 当 TCP 发出一个段后,会启动一个定时器,等待目的端确认收到这个报文段,如果不能及时收到这个确认,那么将重发这个报文段。
     

14、UDP如何实现可靠传输

  1. 超时重传(定时器)
  2. 有序接受 (添加包序号)
  3. 应答确认 (Seq/Ack应答机制)
  4. 流量控制 (滑动窗口协议)

你可能感兴趣的:(计算机网络面试题总结)