80道面试经典题目
1.OSI参考模型七层网络协议?
物理层:定义计算机、网络设备、以及直接连接的介质、接口类型的标准,建立比特流的传输,用来组件物理网络的连接。
数据链路层:建立逻辑连接、进行硬件地址寻址,差错校验、差错恢复等功能。
网络层:进行逻辑地址寻址,实现不同网络之间的通信,定义了IP地址,为数据传输选择最近路径,实现不同网段之间通信。
传输层:可靠与不可靠的传输,实现程序与程序之间的连接,需要借助两个协议TCP(可靠)和UDP(不可靠),不同的程序对应不同的端口号,传输前的错误检测、流控。程序与程序直接的连接识别的是端口号,不同的程序有不同的编号,即为端口号。
会话层:建立、管理、建立会话、中止会话(如下载,断了后,还可续传)。
表示层:数据的表示、安全加密、压缩等方面功能(如:传输的文件类型不同,媒体、加密文件等表示形式不同)。
应用层:网络服务与最终用户的一个接口,用户接口。
2.七层网络协议各层分别对应什么设备?
物理层:网卡
数据链路层:交换机
网络层:路由器
传输层:防火墙
会话层:xxx
表示层; xxx
应用层:计算机
3.七层网络协议主要各层次包含的协议?
应用层: http FTP TFTP SMTP SNMP DNS
传输层:TCP UDP
网络层:ICMP IGMP IP ARP RARP
4.常见协议的解释?
1)HTTP协议:超文本传输协议。
HTTP是一个基于TCP/IP通信协议来传递数据,属于应用层的面向对象协议,HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
灵活:HTTP允许传输任意类型的数据对象。
无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
支持B/S及C/S模式。
协议部分:该URL的协议部分为http:,代表网页使用的是HTTP协议。可用多种协议,如HTTP、FTP等等。后面的//为分隔符。
域名部分:该URL的域名部分为www.aspxfans.com。在URL中,也能用IP地址来作为域名使用
端口部分:该URL的端口部分为:8080。跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,则将采用默认端口
虚拟目录部分:该URL的虚拟目录部分是/news/。从域名后第一个 /开始,到最后的 /为止,它也并不是一个URL必须的部分。
文件名部分:该URL的文件名部分如:index.asp。文件名部分也不是一个URL必须的部分,若省略该部分,则用默认的文件名。
锚部分:该URL的锚部分是name。从“#”开始到最后,都是锚部分。锚部分也不是一个URL必须的部分。
参数部分:该URL的参数部分是boardID=5&ID=24618&page=1。从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
GET请求: 地址拼接在url上,不太安全。
POST请求: 提交到后台时候一般使用,比较安全。
2)FTP协议: 文件传输协议。交互时使用,依赖于TCP,是面向连接,可靠的。端口:20和21(21是用于连接,20是用于传输)
3)TFTP协议:简单文件传输协议。允许仅单向传输的文件,依赖于UDP,减少开销,不可靠。端口69.
4)SMTP协议: 简单电子邮件传输协议。使用tcp协议的25端口发送邮件。
邮件服务常见端口: 发邮件服务的端口:25.
收邮件服务的端口(比较多):
109端口: POP2邮局协议2服务开放的,几乎被淘汰了,用于收邮件。
110端口: POP3邮局协议3服务开放的,大多再用,用于收邮件。
143端口: IMAP服务开放的,用于收邮件。
5)SNMP协议: 简单网络管理协议。
SNMP是基于TCP/IP协议族的网络管理标准,是一种在IP网络中管理网络节点(如服务器、工作站、路由器、交换机等)的标准协议。SNMP能够使网络管理员提高网络管理效能,及时发现并解决网络问题以及规划网络的增长。网络管理员还可以通过SNMP接收网络节点的通知消息以及告警事件报告等来获知网络出现的问题
6)DNS协议:域名解析协议。
如果说ARP协议是用来将IP地址转换为MAC地址,那么DNS协议则是用来将域名转换为IP地址(也可以将IP地址转换为相应的域名地址)。
DNS既使用TCP协议,也适用UDP协议,DNS在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议。
DNS为什么既使用TCP又使用UDP?
UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节。
7)ICMP协议: internet控制消息(报文)协议。
ICMP协议是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用
ICMP的作用就是让我们能够检测网路的连线状况﹐也能确保连线的准确性。ICMP 是个非常有用的协议﹐尤其是当我们要对网路连接状况进行判断的时候。
8)IP协议: 将多个包教会网络连接起来,在源地址和目标地址之间传递数据包。IP不提供可靠的传输服务,不提供端到端或节点到节点间的确认。
9)ARP协议:地址解析协议。将IP地址解析成mac地址。
是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
10)RARP协议:反向地址解析协议。将mac地址解析成IP地址。就是将局域网中某个主机的物理地址转换为IP地址.
11)Telnet协议: 远程访问协议。
5.各层的PDU数据单元?
每一层都有PDU:协议数据单元
传输层的PDU:称为段,
网络层:称为报文或包
数据链路层:称为数据帧
物理层:称为比特流
6.ping使用什么协议?
ping是使用icmp协议(网络控制消息协议)
7.tcp协议和udp协议区别?
Tcp协议:是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“握手”,和四次断开,才能建立起来,其中的过程非常复杂。效率低,但可靠传输。类似打电话。
Udp协议:是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。不需要三次握手和反复确认,效率高,但是不可靠,类似于发短信。
8.TCP/IP协议分为哪四层,具体作用是什么?
这4层分别为:
应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。
传输层:在此层中,它提供了节点间的数据传送,应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。
互连网络层:负责提供基本数据封包传送功能,让每一数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。
网络接口层(主机-网络层):接收IP数据报并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。
9.CDN技术原理?
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求,其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
10.阿里云上cdn的配置?
如:发版的apk的url地址(cdn),如:http://s2.duyao001.com/static_girl/apk/PoisonNovel_girl.apk
1)阿里云cdn上添加加速域名:s2.duyao001.com,同时生成一个cname的值,配置源站slb(slb后是3台maya的nginx机器)。(cname值就相当于和源站里配置的slb的IP)
2)配置加速域名和cname值的解析(解析类型:cname类型,s2.duyao001.com cname值) 即:加速域名和通过slb和nginx服务器对应。
11.nginx做反向代理处理http请求的大致流程?
1)当HTTP请求交给Nginx处理时,首先Nginx会取出header头中的Host (此处也就是 www.baidu.com),然后将其与所有的配置文件中的每个server段中的server_name进行匹配,以此决定到底有哪个server块来处理这个请求。(当然有时也可能一个Host与多个server块中的server_name都匹配,这时会根据匹配的优先级选择实际处理的server块,优先级这里就不再细说。)
2)当HTTP请求匹配到了配置文件中的server_name,这样接下来nginx就会根据header中的Request URI字段进行与location匹配,匹配到了 location / 。
3)接下来继续由nginx处理可以看到 proxy _pass http://xxx ; 这就是进行反向代理处理,使用的是nginx的upstream模块进行反向代理实现。
4)通过proxy _pass http://xxx中的xxx可找到对应的upstream块,然后,可以根据其中的server 后端web服务ip:8081;再次进行代理请求,
此时发送的GET包内容:Host字段 and Request URI字段 都和上面一样,
5)当代理HTTP请求到达后端web的服务器:8081后,若后端web也是nginx,则服务器会对其进行类似上面的nginx处理HTTP请求一样,进行server_name 和 location匹配,并将相应的请求资源返回代理服务器。
6)Nginx反向代理服务器接收到后端web服务器的返回资源后,再将其返回给客户端浏览器。
以上就是Nginx作反响代理时HTTP请求与处理的大致流程。
12.TCP协议和IP协议之间的关系?
TCP协议:传输控制协议。 IP协议:互联网络协议
TCP/IP协议的基本传输单位是数据包(Datagram)。