2019春招前端面试(计算机网络篇)

TCP/IP

TCP/IP模型

 

 

协议

备注

应用层

FTP、DNS、HTTP

决定了向用户提供应用服务时通信的活动

传输层

TCP、UDP

提供处于网络连接中的两台计算机的数据传输

网络层

IP、ICMP、ARP、RARP

处理在网络上流动的数据包(数据包是网络传输的最小单位),该层规定了传输路线。

链路层

操作系统、硬件的设备驱动、NIC(网络适配器/网卡)

处理连接网络的硬件部分

 

 

TCP/UDP

TCP和UDP都是传输层协议,但两者具有不同的特性和不同的应用场景。

面向报文:是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。因此,应用程序必须选择合适大小的报文。若报文太长,ip层需要分片,降低效率;若太短,会使IP太小。

面向字节流:应用程序和TCP的交互式一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流。TCP就有个缓冲,当应用程序传送的数据块太长,TCP

就会把他划分短一些再传送。

  • TCP和UDP协议的一些应用

使用场景:

TCP: 当对网络通讯质量有要求的时候,比如整个数据要准确无误的传送给对方,往往用于一些要求可靠地应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。

UDP: 对网络通讯质量要求不高,要求网络通讯速度尽量快。

DNS

Domain Name System(域名系统),互联网上作为域名和IP地址相互映射的分布式数据库,能够使用户更方便的访问互联网,而不用去记住能被机器直接读取的IP数串。通过主机名得到该主机对应IP地址的过程叫做域名解析。DNS协议运行在UDP协议之上,使用端口号53。

 

TCP的建立和断开

三次握手

  1. 发送端首先发送一个带有SYN标志的数据包给服务器端,请求建立连接。
  2. 服务器端收到后,会返回一个带有SYN和ACK标志的数据包传达确认信息。
  3. 发送端收到带有确认信息的数据包后,返回一个带有ACK标志的数据包,代表握手成功。

为什么采用三次握手?

防止失效的数据包传送到服务器端,发生错误。

四次挥手

  1. 客户端向服务器端发送FIN,表示请求断开连接,此时客户端处于FIN-WAIT-1状态。
  2. 服务器端收到断开连接请求后,发送ACK确认报文。此时服务器进入CLOSE-WAIT状态并持续一段时间,客户端处于FIN-WAIT-2状态。
  3. 直到服务器端发送完数据,向对方发送FIN/ACK,表示数据传送完毕,可以断开连接。服务器进入LAST-ACK(最后确认)状态。
  4. 客户端收到FIN后,发送ACK确认断开连接,服务器端会进入CLOSED状态,但客户端进入TIME-WAIT(时间等待状态),经过2MSL的时间后,才进入CLOSED状态。

 

为什么客户端最后要等待2MSL

  1. 为了保证客户端最后发送的ACK能够到达服务器端。在2MSL时间内,如果服务器端还没有收到客户端的确认报文,会重新发送一次,客户端就可以重新发送ACK。
  2. 为了防止“失效的数据出现在服务器端”。在2MSL时间内,产生的所有报文段都从网络中消失。

 

 

为什么建立连接是三次,断开连接是四次

建立连接时,被动方收到请求报文时,把SYN和ACK 放在一个报文里发送给客户端。

断开连接时,被动方收到请求后,先发送确认报文表示我收到请求了,但数据还没发送完不能立刻关闭,所以,等数据全部传送完毕后,发送FIN报文请求关闭连接,这里把FIN和ACK分两次发送,所以是四次挥手。

 

HTTP

HTTP的基本优化

影响一个HTTP网络请求的因素有两个:宽带和延迟(浏览器阻塞、DNS查询、建立连接)。

 

HTTP1.0和HTTP1.1的区别

  1. 缓存处理:HTTP1.1引入了更多的缓存控制;
  2. 宽带优化:HTTP1.1请求引入range头域,允许请求资源的某个部分。
  3. 错误的通知处理:新增了24个错误状态码。
  4. Host头处理:一台计算机上会有多个虚拟主机,且共享同一个IP地址,所以HTTP1.1 的请求和响应中增加了host头域,如果不带会报错。
  5. 长连接:HTTP1.1在一次TCP连接和断开中可以进行多次请求和响应,减少了多次 TCP建立和断开的消耗和延迟。(keep-alive)

 

HTTPS和HTTP的区别

HTTP的缺点:

  1. 通信使用明文(不加密),通信内容可能会被窃听;
  2. 不验证通信方的身份,可能遭到伪装;
  3. 不能证明报文的完整性,可能已遭篡改。

HTTPS是身披SSL外壳的HTTP,能够解决以上HTTP的问题。

SSL是一种网络安全技术,运行在TCP之上,HTTP之下。

他们的端口不一样,HTTP是80,HTTPS是443.

HTTP----->SSL------->TCP

SPDY:HTP1.x的优化

(核心思想:尽量减少TCP的连接数)

1.多路复用:通过单一的TCP连接,可以处理多个HTTP请求。

2.请求优先级:给请求分配优先级。

3.压缩HTTP首部

4.推送功能:支持服务器端主动向客户端推送数据的请求。

5.服务器提示功能:服务器主动提示客户端请求所需的资源,在资源已缓存的情况下,可以避免发生不必要的请求。

HTTP------>SPDY------>SSL------->TCP

 

HTTP2.0:SPDY的升级版

1.二进制传输:HTTP1.x的解析是基于文本的,但文本的形式多样。二进制只有0和1 的组合,实现方便且健壮。

2.多路复用:解决同一域名下请求数量过多造成队头阻塞问题。在一个TCP连接中可以 有多个流,即可以发送多个请求。在客户端,帧可以乱序发送,(每个帧都会标识属于 哪个流)到对端后,根据帧首部的流标识重新组装。

3.header压缩:对header进行了压缩,减小了大小,又在两端建立了Header索引表, 后面在传输过程中就可以传输已经记录过的header键名。

4.服务器推送:提前给客户端提供必要的资源。

 

HTTP方法

GET:获取资源

POST:传输资源

PUT:传输文件(不安全)

HEAD:获得报文首部

DELETE:删除文件/资源(不安全)

OPTIONS:询问支持的方法

 

GET和POST的区别

 

GET

POST

1

回退时是无害的

会再次提交请求

2

提交的URL可以被收藏

不可以

3

请求会被浏览器主动缓存

不会

4

请求参数会被完整的保存在历史记录

不会

5

只能进行URL编码

支持多种编码方式

6

URL参数有长度限制

没有限制

7

只接受ASCII字符

没有限制

8

参数通过URL传递,不安全

参数在request body中

 

 

 

 

 

 

HTTP报文组成

报文首部+报文主体

报文首部:请求行/状态行+请求/响应首部字段+通用首部字段+实体首部字段

请求行:请求方法+请求URI+协议版本

状态行:状态码+协议版本

HTTP是不保存状态的协议(cookie引入)

 

Cookie localstorage和 sessionstorage

1.cookie会随请求发送到服务器;

2.有效时间:cookie设置失效时间;sessionStorage仅在会话关闭前有效,localStorage除非手动清除,否则永久有效;

3.存储量:cookie小(4k左右);webStorage(大致5MB)

 

Cookie 和session

Session在服务器里,cookie在客户端;

Session运行依赖session id,而session id存在cookie中。

持久连接keep-alive

只要任一方没有提出断开连接请求,就可以保持TCP连接状态。

管线化

同时并行发送多个请求

HTTP状态码

状态码类别

类别

原因短句

1xx

Informational(信息性状态码)

接收的请求正在处理

2xx

Success(成功状态码)

请求正常处理完成

3xx

Redirection(重定向状态码)

需要进行附加操作以完成请求

4xx

Client Error(客户端错误状态码)

服务器无法处理请求

5xx

Server Error(服务器端错误)

服务器处理请求出错

 

状态码

原因短句

说明

200

OK

客户端发来的请求在服务器端正常处理了

301

Moved Permanently

永久重定向

302

Found

临时重定向

304

Not Modified

客户端有缓存的资源,可直接使用

404

Not Found

服务器上找不到请求的资源

500

Internal Server Error

服务器端在执行请求时发生错误

 

浏览器内多个标签页进行通讯

  1. WebSocket:web浏览器与web服务器之间全双工通信标准。
  2. Cookie:在页面设置一个定时器不断刷新,检查Cookies值是否变化。
  3. localStorage:是多个标签共用的存储空间。
  4. sharedWorker:h5新特性,可以被同源的多个window共同使用。

 

Web攻击技术

CSRF(跨站点请求伪造)

XSS(跨站脚本攻击)

跨域

同源策略:协议+域名+端口

  1. JSONP:动态插入js标签,通过Script标签引入一个JS文件,这个JS文件加载后 会执行我们在URL中写入的回调函数,并且把我们需要的json数据作为参数传入。
  2. CORS:服务器在响应头设置相应选项,浏览器如果支持这种方法的话就将这种跨 站资源视为合法,进而取得资源。
  3. Document.domain:仅限主域相同,子域不同的应用场景。
  4. webSocket:不受同源策略限制。

你可能感兴趣的:(面试)