HTTP(超文本传输协议)

HTTP(超文本传输​​协议)也许是互联网(或WEB)中使用的最流行的应用协议。

  • HTTP是一个非对称的请求 - 响应客户端 - 服务器协议,如图所示。HTTP客户端向HTTP服务器发送请求消息。服务器又会返回一个响应消息。换句话说,HTTP是一种拉协议,客户机拉动从所述服务器信息(而不是服务器推送信息到客户端)。
  • HTTP是一个无状态的协议。换句话说,当前的请求不知道以前的请求已经做了什么。
  • HTTP允许协商数据类型和表示,以便允许独立于正在传输的数据构建系统。
  • 超文本传输​​协议(HTTP)是一种用于分布式,协作式,超媒体信息系统的应用级协议,它是一种通用的,无状态的协议,可用于除超文本之外的许多任务,例如作为名称服务器和分布式对象管理系统,通过扩展它的请求方法,错误代码和头文件。


浏览器

无论何时从浏览器发出一个URL来获取使用HTTP的Web资源,例如http://www.nowhere123.com/index.html,浏览器将URL转换为请求消息并发送到HTTP服务器。HTTP服务器解释请求消息,并返回一个适当的响应消息,这是您请求的资源或错误消息。这个过程如下图所示:

统一资源定位符(URL)

URL(统一资源定位符)用于唯一标识网络上的资源。网址具有以下语法:

协议:// 主机名端口 / 路径和文件名

网址中有4个部分:

  1. 协议:客户端和服务器使用的应用层协议,如HTTP,FTP和Telnet。
  2. 主机名:服务器的DNS域名(例如www.nowhere123.com)或IP地址(例如192.128.1.2)。
  3. 端口:服务器正在侦听来自客户端的传入请求的TCP端口号。
  4. 路径和文件名称:服务器文档基础目录下的请求资源的名称和位置。

例如,在URL中http://www.nowhere123.com/docs/index.html,通信协议是HTTP; 主机名是www.nowhere123.com端口号未在URL中指定,并且具有缺省编号,即HTTP的TCP端口80。要找到的资源的路径和文件名是“ /docs/index.html”。

其他URL的例子有:

ftp://www.ftp.org/docs/test.txt
邮寄地址:user@test101.com
新闻:soc.culture.Singapore
远程登录://www.nowhere123.com/
HTTP协议

如前所述,无论何时在浏览器的地址栏中输入URL,浏览器都会根据指定的协议将URL转换为请求消息; 并将请求消息发送给服务器。

例如,浏览器将URL http://www.nowhere123.com/doc/index.html转换为以下请求消息:

GET  /docs/index.html HTTP / 1.1
主持人:www.nowhere123.com
接受:image / gif,image / jpeg,* / *
Accept-Language:en-us
Accept-Encoding:gzip,deflate
用户代理:Mozilla / 4.0(兼容; MSIE 6.0; Windows NT 5.1)
(空行)

当这个请求消息到达服务器时,服务器可以采取以下任一操作:

  1. 服务器会把接收到的请求,该请求到映射文件服务器的文件目录下,并返回请求的客户端的文件。
  2. 所述服务器解释接收到的请求,所述请求为映射程序保存在服务器上,执行该程序,并且该程序的输出返回到客户端。
  3. 请求不能满足,服务器返回错误信息。

HTTP响应消息的示例如下所示:

HTTP / 1.1 200 OK
日期:Sun,18 Oct 2009 08:56:53 GMT
服务器:Apache / 2.2.14(Win32)
最后修改:星期六,2004年11月20日07:16:26 GMT
ETag:“10000000565a5-2c-3e94b66c2e680”
接受范围:字节
内容长度:44
连线:关闭
内容类型:文本/ HTML
X-Pad:避免浏览器错误
  
<html> <body> <h1>有用!</ h1> </ body> </ html>

浏览器收到响应消息,根据响应的媒体类型(如Content-Type响应头)解释消息并在浏览器窗口中显示消息的内容。常见的媒体类型包括“ text/plain”,“ text/html”,“ image/gif”,“ image/jpeg”,“ audio/mpeg”,“ video/mpeg”,“ application/msword”和“ application/pdf”。

在空闲状态下,HTTP服务器只会侦听传入请求配置中指定的IP地址和端口。当请求到达时,服务器分析消息头,应用在配置中指定的规则,并采取适当的操作。网站管理员对Web服务器动作的主要控制是通过配置进行的,后面将详细介绍这些配置.

HTTP over TCP / IP

HTTP是客户端 - 服务器应用程序级别的协议。它通常运行在TCP / IP连接上,如图所示。(HTTP不需要在TCP / IP上运行,它只是假定一个可靠的传输,任何提供这种保证的传输协议都可以使用)。

TCP / IP(传输控制协议/互联网协议)是一组传输和网络层协议,用于机器在网络上相互通信。

IP(Internet Protocol)是网络层协议,用于处理网络寻址和路由。在IP网络中,每台计算机都分配一个唯一的IP地址(例如,165.1.2.3),IP软件负责将来自源IP的消息路由到目标IP。在IPv4(IP版本4)中,IP地址由4个字节组成,每个字节的范围是从0到255,用点分隔,称为四点形式该编号方案支持网络上最多4G的地址。最新的IPv6(IP版本6)支持更多的地址。由于记忆数字对于大多数人来说是困难的,所以英文域名如www.nowhere123.com被用来代替。DNS(域名服务)将域名转换为IP地址(通过分布式查找表)。一个特殊的IP地址127.0.0.1总是指你自己的机器。它的命名是“ localhost”,可以用于本地环回测试

TCP(传输控制协议)是一种传输层协议,负责在两台机器之间建立连接。TCP由2个协议组成:TCP和UDP(用户数据报包)。TCP是可靠的,每个数据包都有一个序列号,并且有一个确认。如果数据包未被接收器接收到,数据包将被重新传输。在TCP中保证数据包传送。UDP不保证数据包传输,因此不可靠。但是,UDP具有较少的网络开销,可用于视频和音频流等应用,而可靠性并不重要。

TCP 在IP机器内复用应用程序。对于每台IP机器,TCP从端口号0到65535支持(多路复用)多达65536个端口(或套接字)。应用程序(如HTTP或FTP)在传入请求的特定端口号上运行(或侦听)。端口0至1023被预先分配给流行的协议,例如,80处的HTTP,21处的FTP,23处的Telnet,25处的SMTP,119处的NNTP以及53处的DNS。端口1024及以上对用户可用。

尽管TCP端口80已预先分配给HTTP,但是作为默认HTTP端口号,这并不禁止您在其他用户分配的端口号(1024-65535)(如8000,8080)上运行HTTP服务器,特别是对于测试服务器。您也可以在同一台计算机上的不同端口号上运行多个HTTP服务器。当一个客户端发出一个URL而没有明确指出端口号时,例如,http://www.nowhere123.com/docs/index.html浏览器将连接到主机的默认端口号80 www.nowhere123.com您需要明确指定URL中的端口号,例如,http://www.nowhere123.com:8000/docs/index.html如果服务器正在监听端口8000而不是默认端口80。

简而言之,要通过TCP / IP进行通信,您需要知道(a)IP地址或主机名,(b)端口号。

HTTP Request Message

The format of an HTTP request message is as follow:

Request Line

The first line of the header is called the request line, followed by optional request headers.

The request line has the following syntax:

request-method-name request-URI HTTP-version
  • request-method-name: HTTP protocol defines a set of request methods, e.g., GET, POST, HEAD, and OPTIONS. The client can use one of these methods to send a request to the server.
  • request-URI: specifies the resource requested.
  • HTTP-version: Two versions are currently in use: HTTP/1.0 and HTTP/1.1.

Examples of request line are:

GET /test.html HTTP/1.1
HEAD /query.html HTTP/1.0
POST /index.html HTTP/1.1
Request Headers

The request headers are in the form of name:value pairs. Multiple values, separated by commas, can be specified.

request-header-name: request-header-value1, request-header-value2, ...

Examples of request headers are:

Host: www.xyz.com
Connection: Keep-Alive
Accept: image/gif, image/jpeg, */*
Accept-Language: us-en, fr, cn
Example

The following shows a sample HTTP request message:

HTTP Response Message

The format of the HTTP response message is as follows:


状态行

第一行称为状态行,随后是可选的响应标题(s)。

状态行具有以下语法:

HTTP版本 状态码 原因短语
  • HTTP版本:在此会话中使用的HTTP版本。HTTP / 1.0和HTTP / 1.1。
  • 状态码:由服务器生成的一个3位数字,以反映请求的结果。
  • 原因短语:对状态码给出一个简短的解释。
  • 常见的状态码和原因短语是“200 OK”,“404 Not Found”,“403 Forbidden”,“500 Internal Server Error”。

状态行的例子是:

HTTP / 1.1 200 OK
HTTP / 1.0 404未找到
HTTP / 1.1 403禁止
响应头

响应标题为表单name:value对:

response-header-nameresponse-header-value1response-header-value2,...

响应标头的例子是:

内容类型:文本/ HTML
内容长度:35
连接:保持活跃
保持活跃:超时= 15,最大= 100

响应消息主体包含请求的资源数据。

以下显示一个示例响应消息:

HTTP请求方法

HTTP协议定义了一组请求方法。客户端可以使用这些请求方法之一向HTTP服务器发送请求消息。方法是:

  • GET:客户端可以使用GET请求从服务器获取Web资源。
  • HEAD:客户端可以使用HEAD请求获取GET请求获得的头。由于标题包含数据的最后修改日期,因此可用于检查本地缓存副本。
  • POST:用于将数据发布到Web服务器。
  • PUT:请求服务器存储数据。
  • 删除:请求服务器删除数据。
  • 跟踪:请求服务器返回所需操作的诊断跟踪。
  • 选项:请求服务器返回它支持的请求方法列表。
  • CONNECT:用于告诉代理与另一个主机建立连接,只是回复内容,而不尝试解析或缓存。这通常用于通过代理进行SSL连接。
  • 其他扩展方法。

“GET”请求方法

GET是最常见的HTTP请求方法。客户端可以使用GET请求方法从HTTP服务器请求(或“获取”)一段资源。GET请求消息采用以下语法:

GET  请求 - URI  HTTP版本可选请求头(空白行)可选请求主体
  • 关键字GET区分大小写,并且必须大写。
  • request-URI:指定请求的资源路径,它必须从/文档基目录的根“ ” 开始
  • HTTP版本:HTTP / 1.0或HTTP / 1.1。该客户端协商用于当前会话的协议。例如,客户端可能会请求使用HTTP / 1.1。如果服务器不支持HTTP / 1.1,则可能会通知客户端使用HTTP / 1.0的响应。
  • 客户端使用可选的请求头(例如Accept, Accept-Language等)与服务器进行协商,并要求服务器传送首选内容(例如,以客户端首选的语言)。
  • GET请求消息有一个可选的请求体,它包含查询字符串(稍后解释)。
测试HTTP请求

有很多方法可以测试出HTTP请求。您可以使用“ telnet”或“ hyperterm”(搜索“ telnet.exe”或“ 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值