Hyper Text Transfer Protocol
当我们在浏览器输入一个地址的时候,就能够访问服务器的某个页面
而实际上,这个过程是我们本地浏览器应用程序和服务器上的应用程序交互的过程,也就是在计算机网络当中学到的应用层的内容
所以HTTP协议是属于应用层的协议
HTTP协议通常由请求和响应两种类型组成
请求
请求消息
请求消息由请求行,请求头部,空行和请求数据组成
请求行用于描述请求或响应的基本信息,请求头部用于更详细的说明报文,请求数据为实际传输的数据
请求头部信息提供了以下信息:
Host:主机名(IP地址)
User-Agent:浏览器基本资料
Accept:浏览器能够识别的响应类型
Accept-Language:浏览器默认语言
Accept-Encoding:浏览器能够识别的压缩方式
Referer:来路页面
Connection:是否保持连接
...
比如:
请求方法
HTTP 请求方法一般分为 8 种,这里只介绍最常用的两种
- GET 用来请求访问已被 URI 识别的资源。指定的资源经服务器端解析后返回响应内容。也就是说,如果请求的资源是文本,那就保持原样返回(获取资源)
- POST 虽然 GET 方法也可以传输主体信息,但是便于区分,我们一般不用 GET 传输实体信息,反而使用 POST 传输实体信息(传输实体)
URI格式
HTTP 协议使用 URI 定位互联网上的资源
其所使用的URI的格式应该为(–只为区分作用,实际格式中不存在)(带*为可选)
[方案或协议]--[主机(域名或IP地址)]--[端口]*--[路径]*--[查询]*--[片段]*
比如:
http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
响应
响应信息
响应信息由状态行,消息报头,响应正文组成
响应代码
- 200 表示响应成功了,比如打开页面, 就会看到200响应码
- 301 表示客户端跳转,永久性的跳转\
- 302 客户端跳转,临时性的跳转
- 304 表示资源未被修改
- 404表示访问的页面不存在
- 500 表示服务端的错误
- ……….
请求响应过程
- DNS服务器根据URL地址进行域名解析,找到域名所在的服务器的IP地址
- HTTP客户端在80端口发起一个到服务器的TCP连接
- 客户与服务器通过套接字Socket保持连接
- HTTP客户端向服务器发送一个HTTP请求报文
- HTTP服务器接受请求报文,进行解析工作,并把解析结果封装到HTTP响应报文中,发送给客户端
- 双方断开TCP连接