网络相关知识
一、HTTP
问题1:HTTP是什么?
- HTTP是超文本传输协议。
- 包含请求/响应报文(具体说出报文包含的字段)。
1.1、请求/响应报文
-
请求报文
请求报文
注意:
1、get请求没有实体主体。
2、post请求有实体主体。 -
响应报文
响应报文
问题2:HTTP的请求方式有哪些?
请求方式问题3:GET和POST请求方式的区别?
答案1(比较初级):
高级答案:
安全性解释:
幂等性解释:
可缓存性解释:
问题4:你都了解哪些状态码,它们的含义是什么?
状态码- 200:响应成功。
- 301、302:网络重定向。
- 401、404:客户端本身请求有问题。
- 501、502:服务端本身有异常。
1.2、连接建立流程
tcp的三次握手和四次挥手。
HTTP请求是建立在TCP通道上的。
三次握手:
- 客户端发送一个同步报文。
- 服务端收到以后,发送给客户端一个同步确认报文。
- 客户端收到以后,向服务端发送一个确认报文。
四次挥手:
- 客户端发送一个终止报文。
- 服务端收到以后,发送给客户端一个确认报文;
此时,由客户端到服务端的连接断开了。
但是,服务端还可能向客户端发送数据。
- 还需服务端向客户端发送终止报文。
- 客户端向服务端发送确认报文。
问题5:HTTP连接建立流程?
- 三次握手
- HTTP请求报文和响应报文
- 四次挥手
1.3、HTTP特点
- 无连接
指的是HTTP有一个建立连接和释放连接的过程。
通过HTTP持久连接方案,来解决无连接。 - 无状态
指的是同一个用户发送多次HTTP请求,服务端是不知道是同一个用户的。
通过Cookie/Session方案,来解决无状态。
1.4、HTTP持久连接
非持久连接- 每发送一次HTTP响应,都要重新建立一个TCP通道,经历三次握手和四次挥手。
- 多个HTTP响应都在一个TCP通道上,只有经过一定时间才会重新建立一个新的TCP通道。
1.5、HTTP持久连接头部字段
头部字段- Connection
代表客户端期望持久连接。 - time
代表持久连接持续时间。 - max
代表持久连接允许的最多HTTP请求。
问题6:怎样判断一个请求是否结束?
因为一个TCP上有多个HTTP请求,判断前一个是否结束很关键。
结束
- Content-length
响应报文的头部字段
根据返回结果大小是否达到Content-length来判断。 - chunked
响应报文中的头部字段
POST请求
碰到为空,代表请求结束。
问题7:Charles抓包原理是怎么样的?
利用HTTP的中间人攻击漏洞来实现的。
二、HTTPS与网络安全
2.1、HTTPS概念
HTTPS 层级- IP:网络层
- TCP:传输层
- HTTP:应用层
- SSL/TLS:应用层下面、传输层上面
问题8:HTTPS连接建立流程是怎样的?
HTTPS解释:
1、客户端向服务端发送:TLS版本号、支持的加密算法、随机数C
2、服务端向客户端发送:商定的算法、随机数S、server证书。
3、用服务端
公钥
对客户端私钥
进行加密,然后发送给服务端。4、在服务端,服务端
私钥
对客户端私钥
进行解密。5、之后HTTP请求就通过被
非对称加密
保护的对称秘钥
展开了备注:
客户端的秘钥是
对称加密
。服务端对
对称秘钥
的保护是通过非对称加密
。
会话秘钥
问题9:HTTPS都使用了那些加密手段?为什么?
加密手段2.2、非对称加密
非对称加密- 加密和解密用的是钥不一样。
- 公钥加密、私钥解密
- 私钥加密、公钥解密
2.3、对称加密
对称加密- 用同一个秘钥。
- 秘钥在网络传递过程中,被劫持了,就会造成安全隐患。
- 而非对称加密,只有公钥在网络中传输,私钥不传输,所以比较安全。
三、TCP/UDP
TCP/UDP3.1、UDP(用户数据报协议)
问题10:你是否了解UDP协议?
从特点和功能方面回答。
3.1.1、特点
UDP协议特点- 无连接
发送UDP数据报的时候,不需要
事先建立好连接,也就没有释放连接的过程。 - 尽最大努力交付
不能
保证可靠传输 - 面向报文
既不合并,也不拆分。就是有什么就传递什么
!
面向报文
解释:
应用层
的报文无论大小,直接全部
作为传输层UDP用户数据报
的数据部分,之后将UDP数据报作为IP数据报
的数据部分。
3.1.2、功能
功能- 复用/分用
复用
复用
计算机数据传输是通过网络套接字(socket
)。
网络套接字(socket
)是IP地址与端口的组合。
一台电脑(同一个IP地址
)有不用应用(不同端口号
)。
但是不同的应用
进行数据传输时,可以通过同一个UDP数据报
,再经过IP层。
分用
IP层接收了
IP数据报数据
,将数据拆分成UDP数据报
,每个UDP数据报
都包含有原端口
和目的端口
,根据目的端口
进行分发数据。
-
差错检测
差错检测
解释:
发送端
UDP会对数据报文进行以下处理:
- 以16位字为一个单元。
- 按照
二进制反码
计算出这些16位字的和。 - 将
和的二进制反码
写入检验和位
。
接收方
接收到数据报,再按照上述流程走一遍,如果和UDP首部的检验和位一致,则数据没有错误;反之,代表有错误。
UDP
只能检测是否有错误,对恢复错误无能为力。
问题11:UDP是怎样进行差错检测的?
看上面图解!
补充:
IM等通信软件,都是利用的是UDP用户数据报协议。
3.2、TCP(传输控制协议)
问题12:你是否了解TCP协议?
从特点和功能方面回答。
3.2.1、特点
TCP特点1、面向连接
面向连接问题13:为什么要进行三次握手?
三次握手解释:
从
客户端
发送一个同步报文丢失/超时
,会造成新建
一个TCP通道
角度回答。回答步骤如下:
- 客户端发送同步报文
超时
了。 - 客户端启用
超时重传机制
,重新发送一个同步报文。 - 服务端收到
第二次
发送的报文,会发送给客户端一个确认报文
,如果是两次握手
,至此TCP通道已经建立
了。 - 客户端
超时的报文
,到达了服务端,服务端又会给客户端发送一个确认报文
,如果是两次握手
,又建立
一个TCP通道。
你看看是不是多建立了一个TCP通道,浪费!!!
通过三次握手
就可以解决上述问题,当超时报文
➡️服务端
➡️客户端
,此时客户端不给
服务端发送确认报文
,就不会
新建一个TCP连接。
问题14:为什么要进行四次挥手?
四次挥手解释:
从客户端到服务端建立的TCP通道是
全双工的
。全双工的
概念:客户端
可以给服务端
发送和回复,服务端
可以给客户端
发送和回复。所以需要双方都进行中断。
2、可靠传输
问题15:TCP是怎样保证可靠传输的?
通过停止等待协议
实现的;有以下特点:
-
无差错情况(正常情况)
无差错情况
客户端➡️服务端报文
,服务端➡️客户端确认报文
。
一直循环下去。 -
超时重传(服务端收不到报文)
超时重传
解释:
1、由于网络环境比较差,客户端丢失/滞留
了报文;或者报文被篡改
了等等。会被服务端判定为有差错的报文
。此时,服务端不会
发送确认报文。
2、客户端收不到
确认报文,一定时间后,会重新
发送报文。 -
确认丢失(客户端收不到确认报文)
确认丢失
解释:
1、服务端发送的确认报文
,客户端没有收到。
2、客户端启动超时重传
,重新发送。
3、客户端丢弃
重传的报文,重新发送确认报文
。
4、客户端收到确认报文,一切正常进行。 -
确认迟到(服务端的确认报文迟到了)
确认迟到
解释:
1、前面过程和确认丢失
过程类似。
2、收到迟到的确认报文
什么也不做。
3、面向字节流
面向字节流解释:
发送方发送给TCP的字节,会被
拆分
成不同的字节进行发送,而不是有多少发送多少,由TCP
决定。
4、流量控制
基于滑动窗口协议
来完成的。
解释:
由于接收方的
接收窗口/接收缓存
,没有那么大;此时,通过由接收方向TCP报文首部字段
中更改窗口值
,发送方解析出来后,调整发送窗口
大小,从而达到流量控制
。
简单理解就是:接收方通过告知发送方,自己当前缓存区的大小情况,让发送方减少或增大发送量。
问题16:什么是滑动窗口协议?你是怎么理解的?
见上图解。
5、拥塞控制
1、两个策略
概念 拥塞控制
解释:
1、横轴代表交互次数、纵轴代表窗口值大小。
2、开始,先发送一个报文,如果没有发生网络拥塞;接着,发送两个报文,如果还没有发生网络拥塞,就以
指数规律
成倍发送报文。3、增长到窗口
门限值
后,会采用拥塞避免的策略
,采用线性增长
。4、当增长到一定值时,发生了
网络拥塞
,采用拥塞避免乘法减小的策略
,来恢复到只发送一个报文
。 同时,把拥塞窗口门限值
降为原来的一半
。5、此时,从
新的门限值位置
开启拥塞避免的策略
,采用线性增长
;而不会重新慢开始
。
问题17:请简单描述TCP慢启动的特点?
从慢开始、拥塞避免
角度回答。
见上图解。
问题18:TCP的快恢复、快重传?
从新的门限值位置
开启拥塞避免的策略
,采用线性增长
;而不会重新慢开始
。
四、DNS解析
4.1、概念
DNS解析解释:
DNS解析特点:
UDP数据报
、明文
。
问题19:你是否了解DNS解析?
见上图解
4.2、解析过程
解析过程- 客户端通过
DNS协议
向DNS服务器
进行域名解析
。 - DNS服务器返回解析出来的
IP地址
。 - 客户端根据
IP地址
发送网络请求。
4.2、DNS解析查询方式
问题20:DNS解析查询方式?
查询方式-
递归查询
递归查询
含义:我去给你问一下
-
迭代查询
迭代查询
含义:我告诉你谁可能知道
4.2、DNS存在问题
问题21:DNS解析存在哪些常见的问题?
DNS问题- DNS劫持
DNS劫持
解释:
因为DNS请求采用UDP数据报文
,且是明文
。很容易被劫持的。
问题22:DNS劫持与HTTP的关系是怎样的?
关系- DNS解析转发
DNS解析转发
解释
通俗来讲,你用的电话卡是移动的
,此时进行DNS查询
的时候,会去移动的DNS服务器
去查询。但是这个移动的DNS服务器
为了节约资源,转发到电信的DNS服务器
,此时就形成了DNS解析转发。
4.3、怎样解决DNS劫持
解决- httpDNS
httpDNS
解释
不产生正常的DNS解析了,就不会产生DNS解析的
问题了。
示例图如下:
- 长连接
长连接
这里的长连Server
指的是代理服务器。
五、Session / Cookie
5.1、作用
HTTP协议无状态
特点的补偿。
5.2、Cookie
5.2.1、Cookie概念
问题23:Cookie的概念?
Cookie的概念Cookie整个流程
客户端和服务端设置Cookie
问题24:怎样修改Cookie?
修改Cookie问题25:怎样删除Cookie?
删除Cookie备注
删除Cookie:
覆盖
+ 设置过期时间等
。
问题26:怎样保证Cookie的安全?
安全5.3、Session
5.3.1、Session概念
问题27:Session的概念?
Cookie的概念问题28:Session和Cookie的关系怎样?
- 区别
Session存在服务端
,Cookie存在客户端
。 - 联系
Session需要依赖Cookie机制。
5.3.2、Session工作流程
流程六、网络整体总结
题目问题29:TCP和UDP有什么区别?
1、特点不同
TCP
UDP
2、功能
TCP
提供了流量控制
和拥塞控制
UDP
只提供了复用/分用
、差错检测
基本功能。
其它答案:见上文。