超文本传输协议HTTP
定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
HTTP协议是无状态的,是面向文本的。
在浏览器中输入url地址->显示主页的过程
- 浏览器查找域名的IP地址(DNS查找过程:浏览器缓存、路由器缓存、DNS缓存)
- DNS:获取域名对应IP
- 浏览器向web服务器发送一个HTTP请求(cookies会随着请求发送给服务器)
- 服务器处理请求(请求 处理请求&它的参数、cookies、生成HTTP响应)
- 服务器发回一个HTTP响应
- 浏览器渲染并显示
- 连接结束
- TCP:与服务器建立TCP连接
- IP:建立TCP连接时,需要发送数据,发送数据在网络层使用IP协议
- OSPF:IP数据报在路由器之间,路由选择使用OSPF
- ARP:路由器通信时,将IP地址转换为MAC地址
- HTTP:TCP连接建立后,使用HTTP访问页面
HTTP状态码
状态码 | 类别 | 原因短语 |
---|---|---|
1XX | 信息性状态码 | 接收的请求正在处理 |
2XX | 成功状态码 | 请求正常处理完毕 |
3XX | 重定向状态码 | 需要进行附加操作以完成请求 |
4XX | 客户端错误状态码 | 服务器无法处理请求 |
5XX | 服务器错误状态码 | 服务器处理请求出错 |
HTTP1.0和HTTP1.1的区别
- 缓存处理。
- 带宽优化及网络连接的使用:HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。
- 错误通知的管理:在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。
- Host头处理:在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机,并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
- 长连接:HTTP 1.1支持长连接和请求的流水线处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection:keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。
HTTP和HTTPS的区别
- HTTPS需要到CA申请证书,需要交费。
- HTTP运行在TCP之上,所有传输的内容都是明文;HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密。
- HTTP和HTTPS使用的是完全不同的连接方式,所用端口也不一样,HTTP是80,HTTPS是443。
- HTTPS可以有效防止运营商劫持,解决了防劫持的一个大问题。
HTTP报文结构
HTTP有两类报文:
- 请求报文:从客户端向服务器发送请求报文
- 响应报文:从服务器到客户端的回答
HTTP请求报文的一些方法
方法(操作) | 意义 |
---|---|
OPTION | 请求一些选项的信息 |
GET | 请求读取由URL所标志的信息 |
HEAD | 请求读取由URL所标志的信息的首部 |
POST | 给服务器添加信息 |
PUT | 在指明的URL下存储一个文档 |
DELETE | 删除指明的URL所标志的资源 |
TRACE | 用来进行环回测试的请求报文 |
CONNECT | 用于代理服务器 |