200字
HTTP超文本传输协议
2026-01-09
2026-01-09

HTTP超文本传输协议

互联网:是网络的网络,是所有类型网络的母集。

因特网:世界上最大的互联网网络。即因特网概念从属于互联网概念。习惯上,大家把连接在因特网上的计算机都成为主机。

万维网:WWW(world wide web)万维网并非某种特殊的计算机网络,是一个大规模的、联机式的信息贮藏库,使用链接的方法能非常方便地从因特网上的一个站点访问另一个站点(超链技术),具有提供分布式服务的特点。万维网是一个分布式的超媒体系统,是超文本系统的扩充,基于B/S架构实现。

URL:万维网使用统一资源定位符(Uniform Resource Locator)来标志万维网上的各种文档,并使每个文档在整个因特网的范围内具有唯一的标识符URL。
HTTP:为解决"用什么样的网络协议来实现整个因特网上的万维网文档”这一难题,就要使万维网客户程序(以浏览器为主,但不限于浏览器)与万维网服务器程序之间的交互遵守严格的协议,即超文本传送协议(HyperText Transfer Protocol)。HTTP是处于应用层的协议,使用TCP传输层协议进行可靠的传送。因此,需要特别提醒的是,万维网是基于因特网的一种广泛因特网应用系统,且万维网采用的是HTTP(80/TCP)和 HTTPS(443/TCP)的传输协议,但因特网还有其他的网络应用系统(如:FTP、SMTP等等)。
HTML:为了解决"怎样使不同作者创作的不同风格的万维网文档,都能在因特网上的各种主机上显示出来,同时使用户清楚地知道在什么地方存在着链接”这一问题,万维网使用超文本标记语言(HyperTextMarkup Language),使得万维网页面的设计者可以很方便地用链接从页面的某处链接到因特网的任何一个万维网页面,并且能够在自己的主机品目上将这些页面显示出来。HTML与txt一样,仅仅是是一种文档,不同之处在于,这种文档专供于浏览器上为浏览器用户提供统一的界面呈现的统一规约。且具备结构化的特征,这是txt所不具备的强制规定。

浏览器访问网页的过程

2861620-20220605201717769-1348318727.png

HTTP 协议通信过程

HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础设计HTTP最初的目的是为了提供一种远距离共享知识的方式,借助多文档进行关联实现超文本,连成相互参阅的WWW(world wide web,万维网)

HTTPD之一---HTTPD服务基础理论 - 一叶知秋~~ - 博客园

HTTP协议分层

HTTP的升级之路-CSDN博客

HTTP相关技术

WEB 开发语言

http:Hyper Text Transfer Protocol 应用层协议,默认端口: 80/tcp

WEB前端开发语言:

  • html
  • css
  • javascript

html

Hyper Text Markup Language 超文本标记语言,编程语言,主要负责实现页面的结构
范例:html 语言

<html>
<head>
<meta http-equiv=content-Type content="text/html;charset=utf-8">
<title>HTML语言</title>
</head>
<body>
<img src="http:/www.ayakakuya.cn/uploads/2026/01/1ogo.png" >
<h1 style="color:red">欢迎</h1>
<p><a href=http://www.ayakakuya.cn>ablog</a>欢迎你</p>
</body>
</html>

CSS

Cascading Style Sheet 层叠样式表, 定义了如何显示(装扮) HTML 元素,比如:字体大小和颜色属性等。样式通常保存在外部的 .css 文件中,用于存放一些HTML文件的公共属性,从而通过仅编辑一个简单的 CSS 文档,可以同时改变站点中所有页面的布局和外观。

范例 :CSS

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>颜色示例</title>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
<body>
<h1>这是 heading1</h1>
<p>这是一段普通的段落。请注意,该段落的文本是红色的。在 body 选择器中定义了本页面中的默认文本颜色。</p>
<p class="ex">该段落定义了 class="ex"。该段落中的文本是蓝色的。</p>
</body>
</html>


body {
    color: red;
}
h1 {
    color: #00ff00;
}
p.ex {
    color: rgb(0, 0, 255);
}

Js

javascript,实现网页的动画效果,但实属于静态资源

Java和javascript的关系: 鱿鱼和乌贼的关系。

范例:javascript

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>我的第一个 JavaScript</title>
</head>
<body>
<h2>我的第一个 JavaScript</h2>
<button type="button"
        onclick="document.getElementById('demo').innerHTML = Date()">
    点击这里来显示日期和时间
</button>
<p id="demo"></p>
</body>
</html>

MIME

MIME : Multipurpose Internet Mail Extensions 多用途因特网邮件扩展

文件 /etc/mime.types ,来自于mailcap包
MIME格式:type/subtype txt html jpg bmp

参考链接:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_Types

URI和URL

参考链接

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web

URI: Uniform Resource Identifier 统一资源标识,分为URL 和 URN
URN:Uniform Resource Naming,统一资源命名
示例: P2P下载使用的磁力链接是URN的一种实现

magnet:?xt=urn:btih:1E45C21458681BFECBEB72D77A2500762D6F799F

URL:Uniform Resource Locator,统一资源定位符,用于描述某服务器某特定资源位置
两者区别:URN如同一个人的名称,而URL代表一个人的住址。换言之,URN定义某事物的身份,而URL提供查找该事物的方法。URN仅用于命名,而不指定地址

URL组成

1923561-20220920104429609-875638578.png

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
scheme:方案,访问服务器以获取资源时要使用哪种协议
user:用户,某些方案访问资源时需要的用户名
password:密码,用户对应的密码,中间用:分隔
Host:主机,资源宿主服务器的主机名或IP地址
port:端口,资源宿主服务器正在监听的端口号,很多方案有默认端口号
path:路径,服务器资源的本地名,由一个/将其与前面的uRL组件分隔
params:参数,指定输入的参数,参数为名/值对,多个参数,用;分隔
query:查询,传递参数给程序,如数据库,用?分隔,多个查询用&分隔
frag:片段,一小片或一部分资源的名字,此组件在客户端使用,用#分隔

网站访问量

网站访问量统计的重要指标

  • IP(独立IP):即Internet Protocol,指独立IP数。一天内来自相同客户机IP 地址只计算一次,记录远程客户机IP地址的计算机访问网站的次数,是衡量网站流量的重要指标
  • PV(访问量): 即Page View, 页面浏览量或点击量,用户每次刷新即被计算一次,PV反映的是浏览某网站的页面数,PV与来访者的数量成正比,PV并不是页面的来访者数量,而是网站被访问的页面数量
  • UV(独立访客):即Unique Visitor,访问网站的一台电脑为一个访客。一天内相同的客户端只被计算一次。可以理解成访问某网站的电脑的数量。网站判断来访电脑的身份是通cookies实现的。如果更换了IP后但不清除cookies,再访问相同网站,该网站的统计中UV数是不变的

**网站统计:**http://www.alexa.cn/rank/

范例:网站访问统计

1.甲乙丙三人在同一台通过ADSL上网的电脑上(中间没有断网),分别访问www.ayakakuya.cn网站,并且每人共用一个浏览器,各个浏览了2个页面,那么网站的流量统计是:
IP:1 PV:6 UV: 1

2.若三人都是ADSL重新拨号后,各个使用不同的浏览器,分别浏览了2个页面,则
IP:3 PV:6 UV:3

网站访问量 PV,IP,UV统计方法

  • 使用文本工具, 比如awk提取IP,sort排序、uniq统计去重后统计IP数
  • 第三方统计工具进行pv统计,比如: 百度统计、腾讯分析、piwik、开发自研统计平台

HTTP工作机制

一次性http事物包括:

  • http请求:http request
  • http响应: http response

Web资源:web resource, 一个网页由多个资源(文件)构成,打开一个页面,通常会有多个资源展示出来,但是每个资源都要单独请求。因此,一个"Web 页面”通常并不是单个资源,而是一组资源的集合

资源类型:

  • 静态文件:无需服务端做出额外处理,服务器端和客户端的文件内容相同
    常见文件后缀:.html, .txt, .jpg, .js, .css, .mp3, .avi

  • 动态文件:服务端执行程序,返回执行的结果,服务器端和客户端的文件内容不相同
    常见文件后缀:.php, .jsp ,.asp

提高HTTP连接性能

  • 并行连接:通过多条TCP连接发起并发的HTTP请求
  • 持久连接:keep-alive,重用TCP连接,以消除连接和关闭的时延,以事务个数和时间来决定是否关闭连接
  • 管道化连接:通过共享TCP连接,发起并发的多个HTTP请求,但需要也要按发起请求的顺序来接收响应,实现难度很大,很多代理服务器和浏览器不支持
  • 复用的连接:交替传送请求和响应报文(实验阶段)

HTTP 协议版本

HTTP 1.X 协议

RFC Hypertext Transfer Protocol -- HTTP/1.1

https://tools.ietf.org/html/rfc2616

http/0.9:

1991,原型版本,功能简陋,只有一个命令GET。GET /index.html ,服务器只能回应HTML格式字符串,不能回应别的格式

http/1.0

1996年5月,支持cache, MIME, method
每个TCP连接只能发送一个请求,发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接引入了POST命令和HEAD命令头信息是 ASCII 码,后面数据可为任何格式。服务器回应时会告诉客户端,数据是什么格式,即Content-Type字段的作用。这些数据类型总称为MIME 多用途互联网邮件扩展,每个值包括一级类型和二级类型,预定义的类型,也可自定义类型, 常见Content-Type值:text/xml image/jpeg audio/mp3

http/1.1

1997年1月,引入了持久连接(persistent connection),即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive。对于同一个域名,大多数浏览器允许同时建立6个持久连接引入了管道机制,即在同一个TCP连接里,客户端可以同时发送多个请求,进一步改进了HTTP协议的效率

新增方法:PUT、PATCH、OPTIONS、DELETE

同一个TCP连接里,所有的数据通信是按次序进行的。服务器只能顺序处理回应,前面的回应慢,会有许多请求排队,造成"队头堵塞"(Head-of-line blocking)

为避免上述问题,两种方法:一是减少请求数,二是同时多开持久连接。

网页优化技巧,如合并脚本和样式表、将图片嵌入CSS代码、域名分片(domain sharding)等

HTTP 协议不带有状态,每次请求都必须附上所有信息。请求的很多字段都是重复的,浪费带宽,影响速度

HTTP1.0和HTTP1.1的区别

HTTP协议各版本比对-CSDN博客

  • 缓存处理,在HTTP1.0中主要使用header里的if-Modified-Since,Expires来做为缓存判断的标准
    HTTP1.1则引入了更多的缓存控制策略例如Entitytag,If-Unmodified-Since,If-Match,If-NoneMatch等更多可供选择的缓存头来控制缓存策略
  • 带宽优化及网络连接的使用,HTTP1.0中,存在一些浪费带宽的现象,例如:客户端只是需要某对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求引入了range头域,它允许只请求资源的某个部分,即返回码是206(PartialContent),方便开发者自由的选择以便于充分利用带宽和连接
  • 错误通知的管理,在HTTP1.1中新增24个状态响应码,如409(Conflict)表示请求的资源与资源前状态冲突;41o(Gone)表示服务器上的某个资源被永久性的删除
  • HoSt头处理,在HTTP1.O中认为每合服务器都绑定一入唯一的IP地址,因此,请求消息中的UR没有传递主机名(hostname)。但随看虚拟主机技术的发展,在一台物理服务器上可以存在多虚拟主机(Multi-homedWebServers),并且它们共享一个IP地址。HTTP1.1的请求消息和响消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(4ooBadRequest)
  • 长连接,HTTP1.1支持持久连接(PersistentConnection)和请求的流水线(Pipelining)处理在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟在HTTP1.1中默认开启Connection:keep-alive,弥补了HTTP1.0每次请求都要创建连接的缺点

HTTP1.0和1.1的问题

  • HTTP1.x在传输数据时,每次都需要重新建立连接,无疑增加了大量的延迟时间,特别是在移动端更为突出
  • HTTP1.x在传输数据时,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份,无法保证数据的安全性
  • HTTP1.x在使用时,header里携带的内容过天,增加了传输的成本,并且每次请求header基本不怎么变化,尤其在移动端增加用户流量
  • 虽然HTTP1.x支持了keep-alive,来弥补多次创建连接产生的延迟,但是keep-alive使用多了同样会给服务端带来大量的性能压力,并且对于单个文件被不断请求的服务(例如图片存放网站),keepalive可能会极大的影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间

HTTPS协议:

为解决安全问题,网景在1994年创建了HTTPS,并应用在网景导航者浏览器中。最初,HTTP是与SSL一起使用的;在SSL逐渐演变到TLS时(其实两个是一个东西,只是名字不同而已),最新的HTTPS也由在2000年五月公布的RFC2818正式确定下来。HTTPS就是安全版的HTTP,自前天型网站基本实现全站

HTTPS

HTTPS特点

  • HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费
  • HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的
  • HTTP和HTTPS使用的是不同的连接方式,端口不同,前者是80,后者是443
  • HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题
  • HTTPS实现过程降低用户访问速度,但经过合理优化和部署,HTTPS对速度的影响还是可以接受的

HTTP 2.0 协议

SPDY协议
SPDY:2009年谷歌研发,综合HTTPS和HTTP两者有点于一体的传输协议,主要特点:

  • 降低延迟,针对HTTP高延迟的问题,SPDY优雅的采取了多路复用(multiplexing)。多路复用通过多个请求stream共享一个tcp连接的方式,解决了HOLblocking的问题,降低了延迟同时提高了带宽的利用率
  • 请求优先级(request prioritization)。多路复用带来一个新的问题是,在连接共享的基础之上有可能会导致关键请求被阻塞。SPDY允许给每个request设置优先级,重要的请求就会优先得到响应。比如浏览器加载首页,首页的html内容应该优先展示,之后才是各种静态资源文件,脚本文件等加载,可以保证用户能第一时间看到网页内容
  • header压缩。HTTP1.x的header很多时候都是重复多余的。选择合适的压缩算法可以减小包的大小和数量
  • 基于HTTPS的加密协议传输,大大提高了传输数据的可靠性、
  • 服务端推送(serverpush),采用了sPDY的网页,例如网页有一个sytle.css的请求,在客户端收到sytle.css数据的同时,服务端会将sytle.js的文件推送给客户端,当客户端再次尝试获取sytle.js时
HTTP2协议

http/2.0:2015年发布,HTTP2.0是SPDY的升级版

  • 头信息和数据体都是二进制,称为头信息顺和数据顿
  • 复用TCP连接,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,且不用按顺序响应,避免了"队头堵塞"此双向的实时通信称为多工(Multiplexing)
  • 引入头信息压缩机制(headercompression),头信息使用gzip或compress压缩后再发送;客户端和服务器同时维护一张头信息表,所有学段都会存入这个表,生成一个索引号,不发送同样学段只发送索引号,提高速度
  • HTTP/2充许服务器有新数据时未经请求,主动向客户端发送资源,而无需客户端拉取,即服务器推送(serverpush)
HTTP2.0和SPDY区别:
  • HTTP2.0支持明文HTTP传输,而SPDY强制使用HTTPS
  • HTTP2.0消息头的压缩算法采用HPACK,而非SPDY采用的DEFLATE

HTTP版本速度比较

https://http2.akamai.com/demo/http2-1ab.html

评论