9.网络
- HTTP协议(什么是HTTP,HTTP当中的get和post有什么区别)
- HTTPS与网络安全(HTTPS连接建立流程是什么,它与安全又有怎么的关系呢)
- TCP/UDP(TCP连接建立的三次握手,四次挥手以及UDP和长链接之间都有怎样的关系和含义呢)
- DNS解析
- Session/Cookie
HTTP: 超文本传输协议(HyperText Transfer Protocol)
你是怎么理解HTTP的?关于HTTP协议包含哪些内容呢?
超文本传输协议。
- 包含请求/响应报文(具体说出报文包含的字段)。
- 连接建立流程
- HTTP的特点
请求报文 具体组成
注意:
1、get请求没有实体主体。
2、post请求有实体主体。
响应报文 具体组成
HTTP的请求方式有哪些?
1.GET:从服务器获取一段内容,不包含请求体
2.POST:使用客户端提供的数据更新实体
3.HEAD:获取响应的元数据而无需检索响应的全部内容
4.PUT:使用客户端提供的数据添加实体
5.DELETE:使用客户端提供吧的请求体来删除实体
GET和POST请求方式的区别?
1.Get从服务器获取数据,Post向服务器发送数据
2.Get将参数拼接到URL后面,Post将请求参数放到Body里面
3.Get传送数据量小,Post传送数据量不受限制
4.Get安全性低,Post安全性高
从语义的角度来回答(RFC官方文档)
GET:获取资源,安全的,幂等的,可缓存的
POST:处理资源,非安全的,非幂等的,不可缓存的
安全性:不应该引起server端的任何状态变化。常见的安全性的方式:GET, HEAD, OPTIONS;
幂等性:同一个请求方法执行多次和执行一次的效果完全相同 PUT,DELETE
可缓存性:请求是否可以被缓存(GET, HEAD)
了解哪些状态码,他们的含义是什么?
连接建立流程
HTTP请求是建立在TCP通道上的。
三次握手:
- 客户端发送一个同步报文。
- 服务端收到以后,发送给客户端一个同步确认报文。
- 客户端收到以后,向服务端发送一个确认报文。
收发数据
四次挥手:
- 客户端发送一个终止报文。
- 服务端收到以后,发送给客户端一个确认报文;
此时,由客户端到服务端的连接断开了。
但是,服务端还可能向客户端发送数据。
- 还需服务端向客户端发送终止报文。
- 客户端向服务端发送确认报文。
HTTP特点
- 无连接
指的是HTTP有一个建立连接和释放连接的过程。
通过HTTP持久连接方案,来解决无连接。 - 无状态
指的是同一个用户发送多次HTTP请求,服务端是不知道是同一个用户的。
通过Cookie/Session方案,来解决无状态。
HTTP持久连接
- 非持久连接:每发送一次HTTP响应,都要重新建立一个TCP通道,经历三次握手和四次挥手。
- 持久连接:多个HTTP响应都在一个TCP通道上,只有经过一定时间才会重新建立一个新的TCP通道。
- HTTP为了提升请求响应的效率,所以才有了持久连接这个方案
HTTP持久连接头部字段
- Connection : keep-alive 客户端期许采用持久连接
- time: 20 持久连接需要持续多长时间,20S内如果再次发起同一个域名或者IP的请求,可以 复用TCP通道
- max: 10 最多可以支持多少个HTTP请求和响应对
怎样判断一个请求是否结束?
一个TCP上有多个HTTP请求,判断前一个是否结束很关键。
-
请求和响应报文都有头部字段,在响应报文的头部字段中会涉及到
Content-length: 1024
在我们发送请求,server回复时,会携带响应数据的大小,就是Content-length,当客户端所接收的字节数到达这个值时,说明这个HTTP请求响应已经全部接收了,意味着结束 -
POST请求时,Server端返回往往是多次响应返回给这些数据的,可以通过头部字段
chuked: 最后一个块是空chuked
来判断一个请求是否结束
当有多个块通过HTTP的TCP连接传输给客户端时,每个报文都会带有一个chuked字段,而最后一个块,它是一个空的chuked,可以根据chuked是否为空来判断上一个请求是否结束
Charles查尔斯小瓶子(网络调试代理)抓包原理是怎样的?
当你开着charles去刷新某个网页时,charles会抓到你请求的数据
查尔斯抓包原理是什么?
利用了HTTP的中间人攻击漏洞来进行实现的
关于HTTP的中间人攻击是什么?
当客户端发送请求时,中间人会拦截住,然后假冒客户端的身份,去向server请求, server会返回结果给中间人,然后中间人再把结果返回给客户端
中间人可以篡改我们请求的参数,包括server返回的数据也可以篡改