http协议基础知识

给你一囗甜甜゛ 提交于 2020-03-07 20:00:27

URI

统一资源标识符,为服务器上每个资源提供一个名字

包含url和urn

urn

统一资源名,这些名字与服务器位置无关,没有大范围使用

例子:

urn:ietf:rfc:2141

url

url是统一资源定位符,url描述了一台特定服务器上某资源的特定位置

是标识资源的最常见形式

url语法

由九个部分构成

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>

scheme: 方案,大小写无关,指定了使用协议

user:用户名,常见在ftp

password: 密码, 常见在ftp

host: 域名或ip

port: 服务器正在监听的端口, 下层使用了TCP协议的话,HTTP协议的端口是80

path: 路径,类似分级的文件系统路径,指定资源在服务器的位置

params: 参数

http://www.a.com/a;id=1/index.html;name=y

这个例子中有两个路径一个是a,其参数为id值为1

另一个路径段位index.html,其参数为name值为y

query: 查询字符串,查询组件

http://www.a.com/index.php?a=1&b=y

查询组件中有两个名/值对: a = 1 和 b = y

frag : 片段组件

示例

http://www.a.com/index.html#name

http报文流

http报文的发送方为上游,接收方为下游

请求的时候用户为上游,响应的时候服务器为上游

http报文的组成部分

起始行,首部和主体

报文格式

请求报文

<method> <request-URL> <version>
<headers>
<entity-body>

响应报文

<version> <status> <reason-phrase>
<headers>
<entity-body>

method: 请求方法

客户端希望服务器对资源执行的动作,如get或post

request-url: 资源地址

version: 版本,主版本和次要版本号都是整数

HTTP/<major>.<minor>

status-code: 状态码,描述了请求过程中发生的情况

reason-phrase: 数字状态码的可读版本

headers: 首部,可以有零或多个首部

Content-type: text/plain
Content-length: 10

entity-body: 实体主体,可以是html文档,文件,程序,邮件

通用首部

Connection 允许客户端和服务器指定与请求/响应连接有关的选项

Date 指定报文的创建时间

MIME-Version 发送方使用的MIME版本

Via 显示报文经过的中间代理,网关

Cache-Control 报文传送缓存指示

请求首部

Client-Ip 客户端的机器ip

Host 接收服务器的主机和端口号

referer 请求文档的url

User-Agent 发送请求的应用程序名称

From 客户端用户的email地址

Accept 通知服务器响应的媒体类型

Accept-Charset 告诉服务器响应的字符集

Accept-Language 告诉服务器响应的语言

Authorization 安全认证的数据

Cookie 客户端用此来向服务器传送一个令牌

Proxy-Authorization 代理认证使用

Proxy-Connection 代理连接使用

响应首部

Age 响应持续时间

Public 服务器为其资源支持的请求方法列表

Server 服务器应用程序名称和版本

Title 如果是html文档, 就是源文档标题

Set-Cookie 用此为客户端设置一个令牌

Allow 可对此实体执行的请求方法

Location 告知客户端实体实际位置,将接收端定向到资源的url

Content-Base 解析主体中相对url时使用的基础url

Content-Encoding 对主体执行的编码方式

Content-Language 主体的语言

Content-Length 主体的长度大小

Content-MD5 主体的MD5校验和

Content-Type 主体的类型

Last-Modified 实体最后一次被修改的日期时间

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!