HTTP简介
超文本
- 包含有超链接(Link)和各种多谋体元素标记(Markup)的文本。
- 这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page).
- 这些链接使用URL表示。
- 最常见的超文本格式超文本标记语言HTML。
- 这些超文本文件彼此链接,形成网状(Web),因此又被称为网页(Web Page).
URL
- 即统一资源定位符(Uniform Resource Locator),用来唯一地标识万维网中的某一个文档。
- URL由协议、主机和端口(默认为80)以及文件名三部分组成。如:
- http://www.sxtyu.com:80/news/index.html
- 协议:// 主机:端口(80)/ 文件名及其路径
HTTP
-
是一种按照URL指示,将超文本文档从一台主机(Web服务器)传输到另一台主机(浏览器)的应用层协议,以实现超链接的功能。
-
HTTP工作原理:
-
请求/响应模型
- 在用户点击URL为http://www.sxtyu.com/index.html 的链接后浏览器和Web服务器执行以下动作:
-
- 浏览器分析超链接中的URL
-
- 浏览器向DNS请求解析www.sxtyu.com 的地址
-
- DNS将解析出的IP地址202.2.16.21返回浏览器
-
- 浏览器与服务器建立TCP连接(80端口)
-
- 浏览器请求文档:GET/index.html
-
- 服务器给出响应,将文档index.html发送给浏览器
-
- 释放TCP连接
-
- 浏览器显示index.html中的内容
-
连接方式
- 非持久性连接
- 即浏览器每完成一个Web文档,就创建一个新的连接,当文档传输完成后,连接就立刻被释放。
- 持久性连接
- 即在一个连接中,可以进行多次文档的请求和响应。
- 服务器在发送完响应后,并不立即释放连接,浏览器可以使用该连接继续请求其他文档。
- 连接保持的时间可以由双方进行协商。
- 即在一个连接中,可以进行多次文档的请求和响应。
- 非持久性连接
-
无状态性
- 是指同一个客户端(浏览器)第二次访问同一个Web服务器上的页面时,服务器无法知道这个客户曾经访问过。
- HTTP的无状态性简化了服务器的设计,使其更容易支持大量并发的HTTP请求。
- 是指同一个客户端(浏览器)第二次访问同一个Web服务器上的页面时,服务器无法知道这个客户曾经访问过。
-
-
HTTP报文结构
-
请求报文
-
返回报文
-
请求报文中的方法
-
响应报文中的状态码
-
首部字段或消息头
-
报文结构实例
-
请求报文:
-
即从客户端(浏览器)向Web服务器发送的请求报文。报文的所有字段都是ASCLL码。
-
方法 URL 版本 请求行,如:GET/index.html HTTP/1.1
-
首部字段名: 值 首部行:用来说明浏览器、服务器或保温主题的一些信息。如:
-
首部字段名: 值 HOST: www.styu.com
-
. Connection: close
-
. User-Agent: Mozilla/5.0
-
首部字段名: 值 Accept-Language: cn
-
实体主体(Entity body)
-
-
返回报文:
-
即从Web服务器到客户机(浏览器)。报文的所有字段都是ASCLL码。
-
版本 状态码 短语 状态行:如:HTTP/1.1 200 OK
-
首部字段名: 值 首部行:用来说明浏览器、服务器或报文主体的一些信息。如:
-
首部字段名: 值 Date: Wed,08 May 2008 22
-
. Sever: Apache/1.3.2(Unix)
-
. Content-Length: DateDaDat4096
-
首部字段名: 值 Content-Type: text/html
-
实体主体(Entity body)
-
-
请求报文中的方法
- 方法(Method)是对所请求对象所进行的操作,也就是一些命令。请求报文中的操作有:
- GET 请求读取一个Web页面
- POST 附加一个命名资源(如Web页面)
- DELETE 删除Web页面
- CONNECT 用于代理服务器
- HEAD 请求读取一个Web的首部
- PUT 请求存储一个Web页面
- TRACE 用于测试,要求服务器送回收到的请求
- OPTION 查询特定选项
- 方法(Method)是对所请求对象所进行的操作,也就是一些命令。请求报文中的操作有:
-
响应报文中的状态码
- 状态码(Status-Code)是响应报文状态行中包含的一个3位数字,知名特定的请求是否被满足,如果没有满足,原因是什么。
- 状态码 含义 例子
- 1xx 通知消息 100=服务器正在处理客户请求
- 2xx 成功 200=请求成功(ok)
- 3xx 重定向 301=页面改变了位置
- 4xx 客户错误 403=禁止的页面;404=页面未找到
- 5xx 服务器错误 500=服务器内部错误;503=以后再试
- 状态码(Status-Code)是响应报文状态行中包含的一个3位数字,知名特定的请求是否被满足,如果没有满足,原因是什么。
-
首部字段或消息头
- 1.下面几个类型都是请求的:
User-Agent:关于浏览器和它平台的消息,如Mozilla5.0
Accept:客户端能处理的页面的类型,如text/html
Accept-Charset:客户端可以接受的字符集,如unicode-1-1
Accept-Encoding:客户端能处理的页面编码方式,如gzip
Accept-Language:客户端能处理的自然语言,如en(英语)、zh-en(简体中文)
Host:服务器的DNS名称,从URL中提取出来,必需
Authorization:客户端的消息凭据列表
Cookie:将以前设置的Cookie送回到服务器,可用来作为会话内容
- 2.以下几个类型都是响应的
Server:关于服务器的信息,如Microsoft-lls/6.0
Content-Encoding:内容是如何编码的,如gzip
Content-Language:页面所使用的自然语言
Content-length:以字节计算的页面长度
Conten-Type:页面的MIME类型
Last-Modified:页面最后被修改的时间和日期,在页面缓存机制中意义重大
Location:指示客户端将请求发送给别处,即重新定向到另一个URL
Set-Cookie:服务器希望客户保存一个cookie
3.下面这个类型是双向的
Date:消息发送时的日期和时间。
-
报文结构实例
-
General
Request URL: https://dss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/js/min_super-c98873426c.js
Request Method: GET
Status Code: 200 (from memory cache)
Remote Address: 119.36.162.33:443
Referrer Policy: unsafe-url -
Response Headers
accept-ranges: bytes
age: 800379
cache-control: max-age=2592000
content-encoding: gzip
content-type: application/x-javascript
date: Wed, 25 Mar 2020 09:38:25 GMT
etag: W/“5e6b6481-ff85”
expires: Wed, 15 Apr 2020 03:07:44 GMT
last-modified: Fri, 13 Mar 2020 10:46:25 GMT
ohc-cache-hit: whoc97 [4], bjbgpcache138 [4]
ohc-response-time: 1 0 0 0 0 0
server: JSP3/2.0.14
status: 200
vary: Accept-Encoding -
Requests Headers
Provisional headers are shown
Referer: https://www.baidu.com/?tn=21002492_13_hao_pg
Sec-Fetch-Dest: script
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36
-
-
-
HTTP代理
- HTTP代理又称Web缓存或代理服务器(Proxy Server),是一种网络实体,能代表浏览器发出HTTP请求,并将最近的一些请求和响应暂存在磁盘中,当请求的Web页面先前暂存过,则直接将暂存的页面发给客户端(浏览器),无需再次访问Internet.
- 浏览器 -> 校园网的高速缓存(代理服务器) -> R1(校园网) -> 万维网通道 -> R2(因特网)->源点服务器