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 服务器和客户之间传递的状态信息。

欢迎一起学习~

相关推荐
9稳2 小时前
基于单片机的智能楼宇门禁系统设计
网络·单片机·嵌入式硬件
Bright Data3 小时前
在 Axios 中设置代理
http·https·axios·api·socks·代理服务器·proxy server
熬了夜的程序员3 小时前
Go 语言封装 HTTP 请求的 Curl 工具包
后端·程序人生·http·golang
网络安全指导员3 小时前
kali linux 漏洞扫描
linux·运维·开发语言·网络·安全·web安全
写完这行代码打球去4 小时前
为什么大模型网站使用 SSE 而不是 WebSocket?
网络·websocket·网络协议
起床学FPGA5 小时前
wireshark点击快捷无法打开
网络·测试工具·wireshark
Wlq04155 小时前
计算机网络概述
网络·计算机网络
q567315235 小时前
用Haskell语言和wreq库配合HTTP写个爬虫程序
爬虫·网络协议·http
book01216 小时前
简单以太网配置
网络·智能路由器
煲冬瓜的程序猿6 小时前
BGP实验(一)IBGP全互联配置
网络·网络协议