网络相关面试问题

注意:本文主讲网络相关面试问题,包括HTTP协议、HTTPS协议与网络安全、TCP/UDP区别、DNS解析。

一、HTTP协议(超文本传输协议)

1、主要包含内容
请求/响应报文、连接建立流程、HTTP特点。

2、请求/响应报文

屏幕快照 2019-09-05 上午1.37.41.png
屏幕快照 2019-09-05 上午1.38.29.png

(1)、http的请求方式都有哪些?
GET、POST、HEAD、PUT、DELETE、OPTIONS
(2)、GET和POST方式的区别?
初级工程师回答
1>、GET请求参数以?分割拼接到URL后面,POST请求参数在Body里面。
2>、GET参数长度限制2048个字符,POST一般没有该限制。
3>、GET请求不安全,POST请求比较安全。
高级工程师回答,从语义的角度回答(标准答案)
get:获取资源。安全的、幂等的、可缓冲的。
post:处理资源。非安全的、非幂等的、不可缓冲的。

安全性:不应该引起Server端的任何状态变化。例如:get、head、options
幂等性:同一个请求方法执行多次和执行一次的效果完全相同。例如:get、put、delete
可缓冲性:请求是否可以被缓存(代理服务器可以做缓存,多次请求时可能是获取的缓存)。例如:get、head

(3)、你都了解哪些状态码,他们的含义是什么?
1XX、2XX、3XX、4XX

3、连接建立流程

屏幕快照 2019-09-05 下午9.23.17.png

4、HTTP的特点:无连接、无状态。
(1)、无连接。解决方案:HTTP的持久连接。

屏幕快照 2019-09-05 下午9.29.37.png

1>、持久连接头部字段:
Connection:keep-alive (允许持久连接)
time:20 (持久连接连接时长)
max:10 (该http连接最多可以发生多少次请求)
2>、咋样判断一个请求是否结束?
Content-length :1024 (响应头)
chunked,最后会有一个空的chunked,server会给客户端返回多次响应,根据判断响应报文的头部字段chunked。

(2)、无状态。解决方案:cookie、session。

Session/Cookie介绍

1>、Cookie

屏幕快照 2019-09-05 下午10.50.04.png

1、咋样设置Cookie?
客户端发送的Cookie在http请求报文的Cookie首部字段中;
服务器端设置http响应报文的Set-Cookie首部字段。
2、咋样修改Cookie?
(1)、新Cookie覆盖旧Cookie。
(2)、覆盖规则:name、path、domain等需要与原Cookie一致。
3、咋样删除Cookie?
(1)、新Cookie覆盖旧Cookie。
(2)、覆盖规则:name、path、domain等需要与原Cookie一致。
(3)、设置Cookie的expires=过去的一个时间点,或者maxAge=0。
4、咋样保证Cookie的安全?
(1)、对Cookie进行加密处理。
(2)、只在HTTPS上携带Cookie。
(3)、设置Cookie为httpOnly,防止跨站脚本攻击。

2>、Session
Session也是用来记录用户状态,区分用户的;状态存放在服务器端。
Session和Cookie的关系是咋样的?Session需要依赖于Cookie机制。

屏幕快照 2019-09-05 下午10.39.34.png

5、Charles抓包原理是咋样的?
利用HTTP中间人攻击漏洞实现的。

屏幕快照 2019-09-05 下午9.45.34.png

二、HTTPS协议与网络安全

1、HTTPS和HTTP有咋样的区别?
HTTPS = HTTP+SSL/TLS。HTTPS是安全版的HTTP, 是由一个SSL/TLS,插在传输层之上,应用层之下的协议来保证的。

https协议栈

2、HTTPS连接建立流程:

HTTPS连接建立流程.png

(1)、会话秘钥:
会话秘钥 = random S + random C + 预主秘钥
(2)、https都使用了哪些加密手段?为什么
1>、连接建立过程使用非对称加密,非对称加密很耗时的。
2>、后续通讯过程使用对称加密。
(3)、对称加密(AES):

屏幕快照 2019-09-05 上午12.23.37.png

(4)、非对称加密(RSA):

屏幕快照 2019-09-04 下午11.44.23.png

三、TCP/UDP区别

1、UDP(用户数据报协议)
特点:无连接;尽最大努力交付(不保证可靠传输);面向报文(既不合并,也不拆分)。

屏幕快照 2019-09-05 上午12.31.42.png

功能:复用、分用;差错检测。

复用、分用.png
差错检测.png

2、TCP(传输控制协议)
特点:面向连接;可靠传输;面向字节流;流量控制;拥塞控制。
(1)、面向连接
三次握手原因(不是两次握手原因):当客户端发送连接报文时,当出现网络超时时,会启动超时重发策略,服务端同时也会返回超时重发的报文,当客户端收到的报文是超时重发的,会取消和服务端创建连接,只保证会创建一个TCP连接。

屏幕快照 2019-09-05 上午1.25.35.png
屏幕快照 2019-09-05 上午1.25.51.png

(2)、可靠传输
如何保证可靠传输:无差错、不丢失、不重复、按序到达
如何实现:通过停止等待协议实现。无差错、超时重发、确认丢失、确认迟到。

屏幕快照 2019-09-05 上午1.21.59.png
屏幕快照 2019-09-05 上午1.21.38.png
屏幕快照 2019-09-05 上午1.19.01.png

(3)、面向字节流

屏幕快照 2019-09-05 上午1.06.16.png

(4)、流量控制
滑动窗口协议

屏幕快照 2019-09-05 上午1.12.43.png

(5)、拥塞控制
慢开始、拥塞避免;快恢复、快重传。

屏幕快照 2019-09-05 上午1.16.38.png

四、DNS解析

1、了解DNS解析吗?
域名到IP地址的映射,DNS解析请求采用UDP数据报,且明文。

屏幕快照 2019-09-05 下午9.57.37.png

2、DNS解析查询方式
(1)、递归查询

屏幕快照 2019-09-05 下午10.00.21.png

(2)、迭代查询

屏幕快照 2019-09-05 下午10.01.21.png

3、DNS解析存在哪些常见的问题?
(1)、DNS劫持问题

屏幕快照 2019-09-05 下午10.05.24.png

DNS劫持与HTTP的关系是咋样的?
没有关系。(1)、DNS解析发生在HTTP建立连接之前;(2)、DNS解析请求使用UDP数据报,端口号53。

咋样解决DNS劫持?
1>、httpDNS

屏幕快照 2019-09-05 下午10.13.27.png
屏幕快照 2019-09-05 下午10.14.48.png

2>、长连接

屏幕快照 2019-09-05 下午10.16.51.png

(2)、DNS解析转发问题

屏幕快照 2019-09-05 下午10.10.55.png

最后总结点东西吧,面试官经常问的问题有:

1、HTTP中的get和post方式有什么区别?
2、HTTPS连接建立的流程是咋样的?
3、TCP和UDP有什么区别?
4、请简述TCP的慢开始过程?
5、客户端咋样避免DNS劫持?

你可能感兴趣的:(网络相关面试问题)