HTTP

HTTP
  1. 方法
HTTP方法描述
GET向客户端发送命名资源
PUT客户端将数据发送/存储到命名服务器资源中
DELETE从服务器删除命名资源
POST客户端将数据发送到服务器网关应用程序中
HEAD仅发送命名资源响应中的 HTTP 首部
  1. 状态码
    每条HTTP响应报文返回时都会携带一个三位数字的状态码,告知客户端请求是否成功,或是否需要其他动作
    伴随每个状态码还有会一个“原因短语”文本,如 200: OK

  2. 报文
    HTTP 报文是一行行简单字符串组成,分为请求报文(请求头)和响应报文(响应头)都是纯文本非二进制代码。
    报文一般分为三部分:起始行/首部字段/主体

结构说明
起始行报文第一行就是起始行,在请求报文中说明要做些什么,在响应报文中说明出现神什么情况
首部字段起始行后有 0 或多个首部字段,每个首部字段包含key: value。首部以一个空行结束
主体首部空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体包括了要发送给 Web 服务器的数据;响应主体中装在了要返回给客户端店的数据。包含任意类型二进制数据

Eg:

请求报文结构响应报文
GET /text/hello.txt HTTP/1.0起始行HTTP/1.0 200 OK
Accept: text/*
Accept-Language: en,fr
首部Content-type: text/plain
Content-length: 19
-主体Hi! I’m a message !
连接

报文通过传输控制协议连接 TCP 从一个地方搬移到另一个地方去。只要建立了 TCP 连接客户端与服务器之间的数据交换就不会丢失/破坏/错序
HTTP 是个应用层协议,上层应用。无需操心网络通信细节。底层协议 TCP/IP。

TCP 提供了:

  1. 无差错的数据传输
  2. 按序传输
  3. 未分段的数据流
12
HTTP应用层
TCP传输层
IP网络层
网络也有的链路接口数据链路
物理网络硬件物理层
Web组件

通常情况下是 Web客户端与 Web 服务端之间通讯,还有一些其他比较重要的应用程序

  1. 代理
    客户端 <=> 代理 <=> 服务器
    代理位于两者之间,接受所有客户端HTTP,转发给服务器(可能修改请求后转发),即代理用户访问服务器
  2. 缓存
    通常意义上说的缓存主要包含两部分。第一个是用户浏览器端的缓存,第二个是服务器端为了提高访问速度而加的CDN
  3. 网关
    网管是一种特殊的服务器,作为其他服务器的中间尸体使用。通常用于将HTTP 流量转化为其他的协议。
    例如一个HTTP/FTP 网关会通过HTTP请求接收对FTP URL 的请求,但通过 FTP 协议来获取文档。得到的文档会被封装成一条 HTTP 报文,发送给客户端。
    HTTP <=> HTTP/FTP网关 <=> FTP 服务器
  4. 隧道
    盲转发 SSL
  5. Agent 代理
    用户代理:代表发起HTTP请求的客户端程序,除了常见的 Web 浏览器,还有 Web上闲逛的自动用户 Agent 代理,可以自动发布 HTTP 事务并获取内容,如 网络蜘蛛或 Web机器人,比如搜索引擎的数据库
    Web服务器 Web服务器 Web服务器
    \ | /
    搜索引擎网络蜘蛛
    |
    搜索引擎数据库

URL

统一资源定位符
因特网就像一个扩张的电子信息宇宙,内涵各种不同的资源。所有类似的东西都需要一个标准化的名字,URL就是因特网资源的标准化后的名称,它指向一条条电子信息片段
URI 是一类更通用的资源标识符,包括 URL 和URN 两个子集。URL 是通过描述资源位置来识别资源的,而URN 是通过名字来识别资源的,与资源所处位置无关

一般结构:方案:// 服务器位置 / 路径

  1. 第一部分被称为方案 sheme,说明了访问资源所使用的协议类型,告知Web 客户端怎样访问资源。这部分通常为 HTTP 协议
  2. 第二部分为服务器的 IP 或域名,告知了 Web 客户端 资源位于何处
  3. 其余第三部分指定了 Web 服务器上的某个特定的资源

http://www.baidu.com/index.html
http:方案(怎么做)
www.baidu.com:主机(位于何处)
index.html:哪个资源

方案说明
ftp://ftp 文件协议
mailto:xx@xx.gov邮件
rtsp://流服务器资源
URL语法

“大多数 URL 方案的 URL 语法都建立在这个由 9 部分构成的通用格式上”。但几乎没有哪个URL包含了所有。最重要的是 方案/主机/路径

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

组件描述默认值
方案访问服务器以获取资源时要使用哪种协议
方案访问服务器以获取资源时要使用哪种协议
用户某些方案访问资源时需要的用户名匿名
密码用户名后面可能要包含的密码,中间由冒号(:)分隔<E-mail地址>
主机资源宿主服务器的主机名或点分IP地址
端口资源宿主服务器正在监听的端口号。很多方案都有默认端口号(HTTP的默认端口号为80)每个方案特有
路径服务器上资源的本地名,由一个斜杠(/)将其与前面的URL组件分隔开来。路径组件的语法是与服务器和方案有关的(本章稍后会讲到URL路径可以分为若干个段,每段都可以有其特有的组件。)
参数某些方案会用这个组件来指定输入参数。参数为名/值对。URL中可以包含多个参数字段,它们相互之间以及与路径的其余部分之间用分号(;)分隔
查询某些方案会用这个组件传递参数以激活应用程序(比如数据库、公告板、搜索引擎以及其他因特网网关)。查询组件的内容没有通用格式。用字符“?”将其与URL的其余部分分隔开来
片段一小片或一部分资源的名字。引用对象时,不会将frag字段传送给服务器;这个字段是在客户端内部使用的。通过字符“#”将其与URL的其余部分分隔开来
  1. 方案
    方案组件必须以一个字母符号开始,由第一个 : 符号与 URL 的其余部分分隔开来,不区分大小写
  2. 主机与端口
    主机组件标识了要访问资源的宿主机器
  3. 用户和密码
    例|
    –|--
说明
ftp://ftp.prep.ai.mit.edu/pub/gnu没有用户或密码组件,只有标准的方案、主机和路径。如果某应用程序使用的 URL 方案要求输入用户名和密码,比如 FTP,但用户没有提供,它通常会插入一个默认的用户名和密码。比如,如果向浏览器提供一个 FTP URL,但没有指定用户名和密码,它就会插入 anonymous(匿名用户)作为你的用户名,并发送一个默认的密码(Internet Explorer 会发送 IEUser,Netscape Navigator 则会发送 mozilla)
ftp://anonymous@ftp.prep.ai.mit.edu/pub/gnu指定为 anonymous 的用户名。这个用户名与主机组件组合在一起,看起来就像 E-mail 地址一样。字符“@”将用户和密码组件与 URL 的其余部分分隔开来
ftp://anonymous:my_passwd@ftp.prep.ai.mit.edu/pub/gnu指定用户名和密码,用: 分割
Web 通信建立在HTTP协议上

特点:

  1. 简单快速
  2. 灵活
  3. 无连接
  4. 无状态(HTTP是一种不保存状态,无状态协议-从HTTP/1.1 虽然是无状态协议,但为了实现保持状态功能,引入了 Cookie 技术,有了它就可以管理状态了)

HTTP报文:请求报文,响应报文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值