Web前端面试题及答案——计算机网络

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yaocong1993/article/details/84652913

题目来自面试/笔试第一弹 —— 计算机网络面试问题集锦

参考计算机网络体系结构综述(上)  计算机网络体系结构综述(下) 《计算机网络(第七版)》谢希仁

OSI与TCP/IP参考模型

开放系统互连(OSI)参考模型是理论上的标准,TCP/IP参考模型是事实上的标准。

OSI模型将体系结构在功能上分为7层,每层完成特定的网络功能。

应用层:为用户的应用进程提供网络通信服务。

表示层:数据的编码,压缩和解压缩,加密和解密。

会话层:是用户应用程序和网络之间的接口,负责在网络中的两节点之间建立、维持和终止通信。

传输层:负责向两台主机中进程之间的通信提供通用的数据传输服务。通用指多种应用可以使用同一个运输层服务,因此运输层有复用和分用的功能。(把来自会话层的完整报文分割成数据段,构造协议数据单元,交给网络层进行传输)。

网络层:负责为分组交换网上的不同主机提供通信服务。转发,将分组从路由器的输入端口转移到合适的输出端口;路由,通过路由算法确定分组从源到目的经过的路径;连接建立,不是所有网络都需要,某些网络的重要功能,如虚电路。

数据链路层:将IP数据报加头加尾构成帧,通常头部加物理地址等信息,尾部加差错检测等信息。通过差错控制、流量控制等方法,实现数据在不可靠的物理线路上的可靠传递。

物理层:在物理介质上正确、透明地传送比特流(由1、0转化为电流强弱进行传输,到达目的地后再转换为1、0)。

一、应用层

1、Http和Https的区别(待确认)

Http协议运行在TCP之上,明文传输,客户端与服务器端都无法验证对方的身份;Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行于TCP之上,是添加了加密和认证机制的HTTP。二者之间存在如下不同:

端口不同:Http与Http使用不同的连接方式,用的端口也不一样,前者是80,后者是443;

资源消耗:和HTTP通信相比,Https通信会由于加减密处理消耗更多的CPU和内存资源;

开销:Https通信需要证书,而证书一般需要向认证机构购买; 
  
Https的加密机制是一种共享密钥加密和公开密钥加密并用的混合加密机制。

2、Get与Post的区别

均是将数据提交到远程服务器。

 

get

post

功能 常用于向服务器查询某些信息 用于向服务器发送应该被保存的数据

数据存储位置

URL后面,?分割URL和数据,&相连参数

请求体

数据大小

不超过2000字符

无限制

应用场景

非敏感数据和小数据

敏感数据和大数据,更安全

3、常见状态码及原因短语

1××:表示通知信息,如请求已被接受或正在处理。
2××:请求成功。
3××:重定向,要完成请求必须进行进一步处理。
4××:客户端错误,请求不合法。 
5××:服务器端错误,服务器失效无法完成请求。 

状态码

描述

原因短语

200

请求成功。一般用于GET和POST方法

OK

301

资源移动。所请求资源已移动,浏览器自动跳转到新的URL

Moved Permanently

304

未修改。所请求资源未修改,浏览器读取缓存数据

Not Modified

400

请求语法错误,服务器无法理解

Bad Request

404

未找到资源,可以设置个性“404页面”

Not Found

500

服务器内部错误

Internal Server Error

4、TCP和UDP分别对应的常见应用层协议

(1)TCP对应的应用层协议

HTTP:超文本传送协议,浏览器如何向Web服务器请求文档,服务器如何把文档传送给浏览器。默认端口号80。

SMTP:简单邮件传送协议,邮件服务器之间传递消息所使用的协议,客户端是发送消息的服务器,服务器是接收消息的服务器。端口号25。

POP3:邮件读取协议,用于从服务器获取邮件。端口号110。

FTP:文件传送协议。端口号21。

Telnet:远程终端协议。用户可在其所在地登录到远程的另一台主机上,可将击键传到远程主机,也能将远程主机的输出返回到用户屏幕。支持BBS的服务器将23号端口打开,对外提供服务。

(2)UDP对应的应用层协议

DNS:域名解析,将域名地址转换为IP地址。端口号53。

SNMP:简单网络管理协议,管理网络设备。端口号161。

TFTP:简单文件传输协议。端口号69。

5、Session、Cookie与Application

6、从输入网址到获得页面的过程

https://www.jianshu.com/p/23b388f8e5aa

(1)DNS域名解析,获取IP地址

在浏览器缓存、hosts文件、路由器缓存中查找url对应的IP地址。

如果没有找到,则发起一个DNS请求到本地域名服务器,在其缓存中进行查找。

如果没有,本地DNS服务器向根DNS服务器发起请求,根DNS服务器返回顶级DNS服务器的地址;本地DNS服务器向顶级DNS服务器发起请求,顶级DNS服务器返回权限DNS服务器的地址;本地DNS服务器向权限DNS服务器发起请求,权限DNS服务器查询到域名对应的IP后,将IP地址返回给本地DNS服务器;本地DNS服务器接收后将其保存到缓存中,以备下次查询。本地DNS服务器将IP地址返回给客户主机浏览器。

(2)浏览器向Web服务器发送HTTP请求

浏览器以一个随机的端口(1024~65535)向服务器的Web程序端口(HTTP协议使用80/8080端口,HTTPS使用443端口)发起TCP连接请求。三次握手后,建立TCP连接。

建立连接后,发送一个HTTP请求,包含请求行、请求头、请求正文。

(3)服务器处理请求,返回HTTP响应

后端服务器从固定的端口接收到TCP报文后,对HTTP协议进行解析,然后将相应的数据封装为HTTP Request对象,供上层使用。

HTTP响应,包括状态行、响应头、响应正文。

(4)浏览器显示页面信息

用户请求的HTML文档通过浏览器的网络层到达渲染引擎后,渲染工作开始。

  • 浏览器把HTML代码解析成一个DOM树,根节点是document对象,每个标签都是一个节点,包括display:none的标签和JS动态添加的元素等。(遇到对js、css文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源)

  • 浏览器把所有样式解析成样式结构体,去掉浏览器不能识别的样式。

  • DOM树和样式结构体组合后构建render树,其中的每个节点都有样式,render树不包括display:none的节点、head节点等。根据CSS2的标准,render树中的每个节点都称为Box。

  • render树构建完毕后,浏览器根据render树绘制页面。

二、传输层

1、TCP与UDP的区别

二者均是传输层协议。

TCP UDP
面向连接 无连接
点对点(一对一) 支持一对一、一对多、多对一、多对多的通信模式
可靠的 不可靠,尽最大努力交付 
拥塞控制、流量控制 没有拥塞控制
面向字节流 面向报文
首部开销大(20个字节) 首部开销小(8个字节)
全双工、发送方/接收方缓存  

2、TCP协议的三次握手与四次挥手

(1)TCP连接建立过程中采用“三次握手机制”

第一次握手:客户端发出连接请求报文段,其中将SYN标志位置为1表示要建立连接,选择一个初始序列号seq=x,不携带数据但消耗一个序号。之后TCP客户进程进入SYN-SENT(同步已发送)状态。

第二次握手:服务器收到连接请求报文段后,如同意建立连接,向客户端发送确认。在确认报文段中将SYN位和ACK位都置1,确认号是ack=x+1,选择一个初始序号seq=y,不携带数据但消耗一个序号。TCP服务器进程进入SYN-RCVD(同步收到)状态。

第三次握手:TCP客户进程收到服务器的确认后,检查ack是否是x+1,ACK是否是1。如果正确,向服务器发送确认报文段,其中ACK置1,确认号ack=y+1,序号seq=x+1,可以携带数据,但如果不携带数据则不消耗序号。服务器检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器进入ESTABLISHED(已建立连接)状态。

(2)TCP连接释放过程中采用“四次挥手机制”

第一次挥手:客户端的应用进程发出连接释放报文段,停止发送数据。FIN置1,序号seq=u,是前面已经传送过的数据的最后一个字节的序号加1,不携带数据但消耗一个序号。客户端进入FIN-WAIT-1(终止等待1)状态,等待服务器的确认。

第二次挥手: 服务器收到连接释放报文段后发出确认。ACK置1,确认号ack=u+1,序号seq=v,是服务器前面已经传送过的数据的最后一个字节的序号加1。服务器进入CLOSE-WAIT(关闭等待)状态。从客户端到服务器的连接释放了。

客户端收到来自服务器端的确认后,进入FIN-WAIT-2(终止等待)状态,等待服务器发出连接释放报文段。

第三次挥手:若服务器已经没有要向客户端发送的数据,发出连接释放报文段。FIN置1,序号seq=w,确认号ack=u+1。服务器进入LAST-ACK(最后确认)状态,等待客户端的确认。

第四次挥手:客户端收到服务器的连接释放报文段后,发出确认。ACK置1,确认号ack=w+1,序号seq=u+1。进入TIME-WAIT(时间等待)状态,经过2MSL后,进入CLOSED状态。

服务器只要收到客户端发出的确认,就进入CLOSED状态。


 

3、TCP连接为什么需要三次握手?

客户端最后还要发送一次确认,主要是为了防止已失效的连接请求报文段突然又送到了服务器,产生错误。

假定客户端发出连接请求报文段,在某个网络结点长时间滞留,延误到连接释放以后的某个时间才到达服务器。这是一个早已失效的报文段,但服务器收到后会误以为客户端又发出一次新的连接请求,于是向客户端发出确认报文段,同意建立连接。假定不采用第三次握手,新的连接就建立了。

由于现在客户端并没有发出建立连接的请求,因此不会理睬服务器的确认,但服务器却误以为新的连接已经建立,一直等待客户端发数据,服务器的资源被浪费。但如果采用三次握手的方法,客户端不会向服务器发出确认,就不会建立连接。

4、TCP协议如何来保证传输的可靠性(待确认)

数据包校验:目的是检测数据在传输过程中的任何变化,若校验出包有错,则丢弃报文段并且不给出响应,这时TCP发送数据端超时后会重发数据;

对失序数据包重排序:既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。TCP将对失序数据进行重新排序,然后才交给应用层;

丢弃重复数据:对于重复数据,能够丢弃重复数据;

应答机制:当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒;

超时重发:当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段;

流量控制:TCP连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据,这可以防止较快主机致使较慢主机的缓冲区溢出,这就是流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。

5、TCP的拥塞处理

拥塞控制是防止过多数据注入网络中,使网络中的路由器或链路不致过载。LastByteSent-LastByteAcked<=CongWin(拥塞窗口),拥塞窗口动态调整改变发送速率。

慢启动:TCP连接建立时,拥塞窗口为1。可用带宽可能远远高于初始,希望速率快速增长(指数型),每个RTT收到每个ACK将拥塞窗口翻倍。

拥塞避免:当拥塞窗口达到丢包事件前值的1/2时(ssthresh变量),将指数型增长切换为线性增长,即每个RTT将拥塞窗口增加1。

快重传、快恢复:收到3个重复ACKs,说明发生丢包,收到失序的报文段。此时不用等到超时,立即重传对方未收到的报文段。将拥塞窗口设置为丢包前拥塞窗口的1/2,然后线性增长。

超时事件:直接将拥塞窗口设为1,然后指数增长,达到ssthresh后再线性增长。

三、网络层

1、IP地址的分类

IP地址就是给互联网上的每一台主机或路由器的每个接口分配一个在全世界范围内的唯一的32位的标识符,方便在互联网上寻址。

IP地址空间划分为A、B、C、D、E五类,其中A、B、C是基本类,D、E类作为多播和保留使用,为特殊地址。

每个IP地址包括两个标识码,即网络号和主机号。同一个物理网络上的所有主机都使用同一个网络号,网络上的一个主机(包括工作站、服务器和路由器等)有一个主机号与其对应。IP地址特点如下:

A类地址:以0开头,第一个字节范围0~127;

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

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

D类地址:以1110开头,第一个字节范围为224~239;

E类地址:以1111开头。

2、IP地址与物理地址

物理地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址。ARP协议用于IP地址与物理地址的对应。

3、ARP协议工作原理

四、网络安全

1、客户端不断进行请求链接会怎样?DDos(Distributed Denial of Service)攻击?

2、XSS攻击

3、SQL 注入XSS 攻击

4、对称加密与非对称加密

 

猜你喜欢

转载自blog.csdn.net/yaocong1993/article/details/84652913
今日推荐