HTTP 超文本传送协议

1 超文本传送协议 HTTP

·HTTP 是面向事务的 (transaction-oriented) 应用层协议。

·使用 TCP 连接进行可靠的传送。 定义了浏览器与万维网服务器通信的格式和规则。

·是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

HTTP 不仅传送完成超文本跳转所必需的信息,而且也传送任何可从互联网上得到的信息,如文本、超文本、声音和图像等。

1.1 HTTP 的操作过程

HTTP 规定:在 HTTP 客户与 HTTP 服务器之间的每次交互,都由一个 ASCII 码串构成的请求和一个类似的通用互联网扩充,即"类MIME (MIME-like)"的响应组成。HTTP 报文通常都使用 TCP 连接传送。

请求一个万维网文档所需的时间:

所需的时间 >= RTT(三报文握手建立 TCP 连接) + RTT(请求和接收文档) + 文档的传输时间 = 2 RTT +文档的传输时间.

用户浏览页面的两种方法:

1.在浏览器的地址窗口中键入所要找的页面的 URL。

2.在某一个页面中用鼠标点击一个可选部分,这时浏览器会自动在互联网上找到所要链接的页面。

1.2 HTTP 的主要特点

·HTTP 使用了面向连接的 TCP 作为运输层协议,保证了数据的可靠传输。

·HTTP 协议本身也是无连接的。

·HTTP 是无状态的 (stateless),简化了服务器的设计,使服务器更容易支持大量并发的 HTTP 请求。

1.3 HTTP/1.1 持续连接

·HTTP/1.1 协议使用持续连接 (persistent connection)。

·持续连接(persistent connection):服务器在发送响应后仍然在一段时间内保持这条连接(不释放),使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。

·只要文档都在同一个服务器上,就可以继续使用该 TCP 连接。

·两种工作方式:

·非流水线方式 (without pipelining)

·流水线方式 (with pipelining)。

1.3.1 非流水线方式

·客户在收到前一个响应后才能发出下一个请求。这比非持续连接的两倍 RTT 的开销节省了建立 TCP 连接所需的一个 RTT 时间。

·缺点:服务器在发送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源。

所需的时间 >= 2 RTT + page.html 传输时间 + 10 RTT + 10 个文档的传输时间 + 空闲时间.

1.3.2 流水线方式

·客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。

·连续的多个请求报文到达服务器后,服务器就可连续发回响应报文。

·使用流水线方式时,客户访问所有的对象只需花费一个 RTT时间,使 TCP 连接中的空闲时间减少,提高了下载文档效率。

所需的时间 >= 1 RTT + 11 个文档的传输时间.

1.4 协议 HTTP/2

·是协议 HTTP/1.1 的升级版本。

1.服务器可以并行发回响应(使用同一个 TCP 连接)。

2.允许客户复用 TCP 连接进行多个请求。

3.把所有的报文都划分为许多较小的二进制编码的帧,并采用了新的压缩算法,不发送重复的首部字段,大大减小了首部的开销,提高了传输效率。

4.向后兼容。

2 代理服务器

·代理服务器 (proxy server) 又称为万维网高速缓存 (Web cache),它代表浏览器发出 HTTP 请求。

·万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。

·当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去互联网访问该资源。

使用高速缓存可减少 访问互联网服务器的时延:

·不使用高速缓存的情况:

·使用高速缓存的情况:

3 HTTP 的报文结构

·两类报文

·请求报文:从客户向服务器的请求。

·响应报文:从服务器到客户的回答。

·由于 HTTP 是面向正文的 (text-oriented),因此报文中每一个字段的值都是一些 ASCII 码串,每个字段的长度都是不确定的。

·三个组成部分

·开始行:用于区分是请求报文还是响应报文。

·首部行:说明浏览器、服务器或报文主体的一些信息。可以有多行,也可以不使用。

·实体主体:请求报文中一般不用,响应报文中也可能没有该字段。

3.1 请求报文

·方法:对所请求的对象进行的操作,实际上就是一些命令。 请求报文的类型是由它所采用的方法决定的。

·URL:所请求的资源的 URL。

·版本:HTTP 的版本。

HTTP 请求报文举例:

3.2 响应报文

·版本:HTTP 的版本。

·状态码:服务器操作完成的状态。

·状态码:都是三位数字,分为5大类:

·1xx 表示通知信息,如请求收到了或正在进行处理。

·2xx 表示成功,如接受或知道了。

·3xx 表示重定向,表示要完成请求还必须采取进一步的行动。

·4xx 表示客户的差错,如请求中有错误的语法或不能完成。

·5xx 表示服务器的差错,如服务器失效无法完成请求。

·响应报文中常见到的三种状态行:

·HTTP/1.1 202 Accepted 接受

·HTTP/1.1 400 Bad Request 错误的请求

·Http/1.1 404 Not Found 找不到

·短语:解释状态码。

4 在服务器上存放用户的信息

·万维网使用 Cookie 跟踪在 HTTP 服务器和客户之间传递的状态信息。

欢迎一起学习~

相关推荐
chuxinweihui1 分钟前
数据链路层
运维·服务器·网络
qq_2515335913 分钟前
使用 Python 提取 MAC 地址
网络·python·macos
aFakeProgramer1 小时前
Linux 启动流程
网络
阿干tkl3 小时前
传统网络与NetworkManager对比
linux·网络
运维有小邓@3 小时前
USB 设备安全攻略:USB 设备管理方案与安全工具
网络
老蒋新思维3 小时前
创客匠人峰会洞察:私域 AI 化重塑知识变现 —— 创始人 IP 的私域增长新引擎
大数据·网络·人工智能·网络协议·tcp/ip·创始人ip·创客匠人
知识分享小能手4 小时前
CentOS Stream 9入门学习教程,从入门到精通,CentOS Stream 9 配置网络功能 —语法详解与实战案例(10)
网络·学习·centos
专业开发者5 小时前
Wi-Fi®:可持续的优选连接方案
网络·物联网
GIS数据转换器5 小时前
综合安防数智管理平台
大数据·网络·人工智能·安全·无人机
chem41116 小时前
魔百盒 私有网盘seafile搭建
linux·运维·网络