HTTP协议相关
HTTP 超文本传输协议
GET、POST、HEAD、PUT、DELETE、OPTIONS
GET是用来获取资源,需要遵从安全的、幂等的、可缓存的原则
POST是用来处理资源,非安全的、非幂等的、不可缓存的
安全性 :不应该引起Server段的任何变化。 GET HEAD OPTIONS 都遵从
幂等性 :同意请求方法执行多次和执行一次的结果是一致的
可缓存性 :请求是否可以被缓存,GET、HEAD都可以
2XX、3XX、4XX、5XX
2XX 成功
200 OK,表示从客户端发来的请求在服务器端被正确处理
204 No content,表示请求成功,但响应报文不含实体的主体部分
205 Reset Content,表示请求成功,但响应报文不含实体的主体部分,但是与 204 响应不同在于要求请求方重置内容
206 Partial Content,进行范围请求
3XX 重定向
301 moved permanently,永久性重定向,表示资源已被分配了新的 URL
302 found,临时性重定向,表示资源临时被分配了新的 URL
303 see other,表示资源存在着另一个 URL,应使用 GET 方法获取资源
304 not modified,表示服务器允许访问资源,但因发生请求未满足条件的情况
307 temporary redirect,临时重定向,和302含义类似,但是期望客户端保持请求方法不变向新的地址发出请求
4XX 客户端错误
400 bad request,请求报文存在语法错误
401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息
403 forbidden,表示对请求资源的访问被服务器拒绝
404 not found,表示在服务器上没有找到请求的资源
5XX 服务器错误
500 internal sever error,表示服务器端在执行请求时发生了错误
501 Not Implemented,表示服务器不支持当前请求所需要的某个功能
503 service unavailable,表明服务器暂时处于超负载或正在停机维护,无法处理请求
四次挥手
客户端主动发起FIN终止报文,来断开客户端与Server端的连接,Server会发一个ACK确认信息
Server可能还会发送一些东西,在某一时刻Server向客户端发送FIN终止报文,来断开Server和客户端的连接,客户端收到之后回发一个ACK确认报文给Server端
1)无连接
经过了建立连接和释放连接的过程。可以通过HTTP的持久连接方案来进行无连接的补偿。
2)无状态
对于同一个用户,多次进行http请求时,server是不知道是否是同一个用户。可以通过cookie/session来解决。
非持久连接的定义:
每次进行http请求都是重新创建一个TCP连接,经历三次握手和四次挥手。
持久连接的定义:
打开一条tcp通道,多个http请求在同一条tcp通道上进行,在一段time后关闭。(在一定时间内多次进行请求的过程)
头部字段
Connect: keep-alive 表示客户端期许采用持久连接
time: 20 持续时间
max: 5 最多发生多少个HTTP请求
Content-length: 1024 根据客户端接收的字节数是否达到了Content-length
chunked , 比如通过post请求server端给客户端可能会多次响应返回数据,当有多个块通过http的tcp连接传给客户端时,每一个报文都会带有chunked字段,而最后一个块是一个空的chunked。所以可以通过判断哪个chunked是空的来判断前一个网络请求是否结束。
利用了http的中间人攻击这个漏洞。
中间人攻击:
当client发送一个http请求时,是由中间人进行hold住,然后中间人假冒client的身份向server端进行同样的请求,然后server端返回结果给中间人,再由中间人返给client。
如果使用http进行请求或者响应时,中间人可以篡改我们发起的请求参数,server端发回的数据也可以被篡改之后再发给client。
2023-05-30 广告