http详解
标签(空格分隔): 网络安全
1.什么是http?
http是一个客户端和服务器端请求和响应的标准TCP,其实它是建立在TCP之上的。
当我们打开百度页面的时候是这样的:https://www.baidu.com/
这里是https,多了个s,其实就是SSL,TLS,是用来加密的,所以http的技术基石如下:
**http协议:**http协议是超文本传输协议,适用于服务器传输到客户端浏览器的传输协议,web上,服务器和客户端是通过http协议进行通信会话的,其会话的结构就相当于一个简单的请求/响应序列,也就是客户端发出请求,服务器端做出响应。
2.http工作流程
http是基于传输层的tcp协议的,而tcp协议是面向链接的端到端协议。因此,使用http协议传输前,首先应该建立tcp连接,首先就是tcp的三次握手可参考:TCP三次握手
在web上,http协议使用tcp协议而不是udp协议的原因在于,一个网页必须传送很多的数据,而且必须保证其数据的可靠考和安全性。tcp协议提供船速控制,按照顺序组织数据和错误纠错的一系列功能。
一个http操作可以将其分为四个步骤:
1.客户端与服务端需要建立连接,比如某个超级链接,这时http就开始了
2.建立连接成功后,发送http请求
3.服务器连接请求后,响应其响应的信息
4.客户端接受到服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
3.http报文
(1).请求报文格式:
请求行 通用信息头 请求头 实体头 (空行) 报文主体
- 请求行:其中包含方法字段+url+http协议版本
- 通用信息头:包含cache-control头域用于指定请求和响应遵循的缓存机制,其次就是keep-alive表示长连接,就是说其连接持续有效
- 请求头host头域:包含Referer头域其是循序客户端指定请求的url的资源地址;其次就是user-agent头域,用来表示客户端浏览器的内核信息和版本信息;accept表示客户端可识别的响应列表的类型;accept-language表示可客户端可以接受的自然语言类型;accept-encoding表示客户端可接受的编码格式类型;host请求的主机名;cookie存储客户端cookie信息
- 报文主体:请求信息
(2).响应报文格式:
状态行 通用信息头 响应头 实体头 (空行) 报文主体
- 状态行:HTTP协议版本 + 状态码 + 状态代码的文本描述
- 通用信息头:keep-alive 是其连接持续有效;Date头域表示时间描述
- 响应头:Server头处理请求的原始服务器的软件信息
- 实体头:Content-Type头便是接收方实体的介质类型
- 报文主体:这里就是HTML响应页面了,在截图tab页中的response中可查看。
4.补充
请求方式:
- GET 请求获取Request-URI所标识的资源
- POST 在Request-URI所标识的资源后附加新的数据
- HEAD 请求获取由Request-URI所标识的资源的响应消息报头
- PUT 请求服务器存储一个资源,并用Request-URI作为其标识
- DELETE 请求服务器删除Request-URI所标识的资源
- TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
- CONNECT 保留将来使用
- OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求
常见状态码:
1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求
其中:
- 200 OK:请求成功(其后是对GET和POST请求的应答文档。)
- 301 Move Permanentry:永久重定向
- 302 Found :临时重定向
- 304 Not Modified :未按预期修改文档
- 401 Unauthonzed :表示请求未授权
- 403 Forbidden :服务器收到了请求但是拒绝服务
- 404 Not Found :服务器无法找到被请求的页面
- 503 Server Unavailable :服务器不能处理当前的客户端请求
- 505 HTTP Version Supported :服务端不支持当前http版本