HTTP超文本传输协议
HTTP的请求方式有哪些?
GET请求和POST请求的区别?
HTTP请求的特点
HTTP的请求方式有哪些?
GET、POST、HEAD、PUT、DELETE、OPTIONS
GET请求和POST请求的区别?
GET是用来获取资源,需要遵从安全的、幂等的、可缓存的原则
POST是用来处理资源,非安全的、非幂等的、不可缓存的
安全性
:不应该引起Server段的任何变化。 GET HEAD OPTIONS 都遵从
幂等性
:同意请求方法执行多次和执行一次的结果是一致的
可缓存性
:请求是否可以被缓存,GET、HEAD都可以
HTTP状态码
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,表明服务器暂时处于超负载或正在停机维护,无法处理请求
HTTP建立连接流程:
- 通过TCP三次握手
- 在这条连接上进行请求/响应
-
经历TCP四次挥手进行连接释放
三次握手四次挥手.jpg
三次握手
1、客户端发送链接需要发送一个SYN同步报文到Server端
2、当Server收到同步报文之后(或者说建立连接之后),返回给客户端一个SYN+ACK这样的TCP报文
3、客户端收到Server回复之后,再次回送一个ACK确认报文
四次挥手
客户端主动发起FIN终止报文,来断开客户端与Server端的连接,Server会发一个ACK确认信息
Server可能还会发送一些东西,在某一时刻Server向客户端发送FIN终止报文,来断开Server和客户端的连接,客户端收到之后回发一个ACK确认报文给Server端
HTTP的特点
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是空的来判断前一个网络请求是否结束。
charles抓包原理是怎样的?
利用了http的中间人攻击这个漏洞。
中间人攻击:
当client发送一个http请求时,是由中间人进行hold住,然后中间人假冒client的身份向server端进行同样的请求,然后server端返回结果给中间人,再由中间人返给client。
如果使用http进行请求或者响应时,中间人可以篡改我们发起的请求参数,server端发回的数据也可以被篡改之后再发给client。

网友评论