HTTP超文本传输协议
HTTP 定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及万维网服务器怎样把万维网文档传送给浏览器

HTTP1.0
page=111
HTTP/1.0采用非持续连接方式
在该方式下,每次浏览器要请求一个文件都要与服务器建立TCP连接,当收到响应后就立即关闭连接

- 每请求一个文档就要有两倍的RTT的开销。若一个网页上有很多引用对象(例如图片等),那么请求每一个对象都需要花费2RTT的时间
- 为了减小时延,浏览器通常会建立多个并行的TCP连接同时请求多个对象。但是,这会大量占用万维网服务器的资源,特别是万维网服务器往往要同时服务于大量客户的请求,这会使其负担很重
HTTP1.1
page=113
HTTP/1.1采用采用持续连接方式
- 在该方式下,万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。这并不局限于传送同一个页面上引用的对象,而是只要这些文档都在同一个服务器上就行
- 为了进一步提高效率,HTTP/1.1的持续连接还可以使用流水线方式工作,即浏览器在收到HTTP的响应报文之前就能够连续发送多个请求报文。这样的一个接一个的请求报文到达服务器后,服务器就发回一个接一个的响应报文。这样就节省了很多个RTT时间,使TCP连接中的空闲时间减少,提高了下载文档的效率
HTTP报文格式
page=114
HTTP的报文格式
HTTP 是面向文本的,其报文中的每一个字段都是一些 ASCII 码串,并且每个字段的长度都是不确定的

请求报文由请求行,首部行,实体主体,三个部分组成
一个请求行下,可以跟多个首部行
请求行
请求行由三个部分组成
- 方法
- URL
- 版本
每个内容之间用空格分割,行末尾用CRLF表示换行
| 方法 | URL | HTTP版本 | CRLF换行符 | ||
|---|---|---|---|---|---|
| GET | /index.html | HTTP/1.1 | |||
![]() | |||||
| 也就是这个图中请求报文的第一行 |
GET /index.html HTTP/1.1方法-HTTP

首部行
首部行由三个部分组成:
- 首部字段名
- 冒号
- 值
| 首部字段名 | : | 值 | CRLF | |
|---|---|---|---|---|
![]() | ||||
| 也就是这个图中二、三、四,五行以及空行的这几个部分 |
携带的User-Agent浏览器版本认证,希望服务器返回的语言这些信息都以键值对写在首部行里
实体主体
通常不使用
HTTP响应报文格式
状态行
首部行
实体主体
三个部分组成

状态行

| 版本 | 状态码 | 短语 | CRLF | ||
|---|---|---|---|---|---|
常见的状态行

状态码
状态码有五大种33个
1xx状态码
1xx:这一类型的状态码,代表请求已被接受,需要继续处理。这类响应是临时响应,只包含状态行和某些可选的响应头信息,并以空行结束。
2xx状态码
2xx:这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。
3xx状态码
3xx:这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的Location域中指明。
4xx状态码
4xx:这类的状态码代表客户端类的错误。
5xx状态码
5xx:服务器类的错误。
响应首部
也还是键值对的集合

实体
客户端请求的东西,服务器端把东西放在实体部分给它返回回来
