什么是 HTTP?
超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信。
HTTP 的工作方式是客户机与服务器之间的请求-应答协议。
web 浏览器可能是客户端,而计算机上的网络应用程序也可能作为服务器端。
举例:客户端(浏览器)向服务器提交 HTTP 请求;服务器向客户端返回响应。响应包含关于请求的状态信息以及可能被请求的内容。
【无状态协议】
HTTP协议永远都是客户端发起请求,服务器回送响应。
这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。
HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
【版本历史】
超文本传输协议已经演化出了很多版本,它们中的大部分都是向下兼容的。
【HTTP来源及作用:】
所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。(我们称这个客户端)叫用户代理(user agent)。应答的服务器上存储着(一些)资源,比如HTML文件和图像。(我们称)这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个中间层,比如代理,网关,或者隧道(tunnels)。尽管TCP/IP协议是互联网上最流行的应用,HTTP协议并没有规定必须使用它和(基于)它支持的层。 事实上,HTTP可以在任何其他互联网协议上,或者在其他网络上实现。HTTP只假定(其下层协议提供)可靠的传输,任何能够提供这种保证的协议都可以被其使用。
通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。
HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。
【URL作用:】
标识HTTP或者HTTPS协议请求的资源
【HTTP协议功能】
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。
在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。
我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在
浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。
【协议基础】
HTTP(HyperText Transport Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。
客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。
通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。
这两种类型的消息由一个起始行,一个或者多个头域,一个指示头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。
每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。
【工作原理】
一次HTTP操作称为一个事务,其工作过程可分为四步:
①首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。
建立连接后
②客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
③服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
④客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。
许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理和服务器之间通过一个单独的连接来完成。在Internet上,HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP 80,但其它的端口也是可用的。但这并不预示着HTTP协议在Internet或其它网络的其它协议之上才能完成。HTTP只预示着一个可靠的传输。
这个过程就好像我们打电话订货一样,我们可以打电话给商家,告诉他我们需要什么规格的商品,然后商家再告诉我们什么商品有货,什么商品缺货。这些,我们是通过电话线用电话联系(HTTP是通过TCP/IP),当然我们也可以通过传真,只要商家那边也有传真。
【两种最常用的 HTTP 方法是:GET 和 POST】
在客户机和服务器之间进行请求-响应时,两种最常被用到的方法是:GET 和 POST
①GET - 从指定的资源请求数据,在请求的URL中发送
②POST - 向指定的资源提交要被处理的数据,在HTTP请求主体中发送
(1)GET 方法
请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:
/test/demo_form.asp?name1=value1&name2=value2
有关 GET 请求的其他一些注释:
GET 请求可被缓存
GET 请求保留在浏览器历史记录中
GET 请求可被收藏为书签
GET 请求不应在处理敏感数据时使用
GET 请求有长度限制
GET 请求只应当用于取回数据
(2)POST方法
请注意,查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的:
POST /test/demo_form.asp HTTP/1.1 Host: w3schools.com name1=value1&name2=value2
有关 POST 请求的其他一些注释:
POST 请求不会被缓存
POST 请求不会保留在浏览器历史记录中
POST 不能被收藏为书签
POST 请求对数据长度没有要求
【比较 GET 与 POST】
下面的表格比较了两种 HTTP 方法:GET 和 POST
后退按钮/刷新 | 无害 | 数据会被重新提交(浏览器应该告知用户数据会被重新提交)。 |
书签 | 可收藏为书签 | 不可收藏为书签 |
缓存 | 能被缓存 | 不能缓存 |
编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded 或 multipart/form-data。为二进制数据使用多重编码。 |
历史 | 参数保留在浏览器历史中。 | 参数不会保存在浏览器历史中。 |
对数据长度的限制 | 是的。当发送数据时,GET 方法向 URL 添加数据;URL 的长度是受限制的(URL 的最大长度是 2048 个字符)。 | 无限制。 |
对数据类型的限制 | 只允许 ASCII 字符。 | 没有限制。也允许二进制数据。 |
安全性 |
与 POST 相比,GET 的安全性较差,因为所发送的数据是 URL 的一部分。 在发送密码或其他敏感信息时绝不要使用 GET ! |
POST 比 GET 更安全,因为参数不会被保存在浏览器历史或 web 服务器日志中。 |
可见性 | 数据在 URL 中对所有人都是可见的。 | 数据不会显示在 URL 中。 |
【其他 HTTP 请求方法】
下面的表格列出了其他一些 HTTP 请求方法:
HEAD | 与 GET 相同,但只返回 HTTP 报头,不返回文档主体。 |
PUT | 上传指定的 URI 表示。 |
DELETE | 删除指定资源。 |
OPTIONS | 返回服务器支持的 HTTP 方法。 |
CONNECT | 把请求连接转换到透明的 TCP/IP 通道。 |
【拓展:HTTP代理服务器】
(1)简介及构成
代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息。形象的说:它是网络信息的中转站。
代理服务器是介于浏览器和Web服务器之间的一台服务器,有了它之后,浏览器不是直接到Web服务器去取回网页而是向代理服务器发出请求,Request信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息并传送给你的浏览器。
而且,大部分代理服务器都具有缓冲的功能,就好象一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。
更重要的是:Proxy Server(代理服务器)是Internet链路级网关所提供的一种重要的安全功能,它的工作主要在开放系统互联(OSI)模型的对话层。
(2)http代理服务器的主要功能:
主要功能如下:
①突破自身IP访问限制,访问国外站点。如:教育网、169网等网络用户可以通过代理访问国外网站;
②访问一些单位或团体内部资源,如某大学FTP(前提是该代理地址在该资源的允许访问范围之内),使用教育网内地址段免费代理服务器,就可以用于对教育 网开放的各类FTP下载上传,以及各类资料查询共享等服务;
③突破中国电信的IP封锁:中国电信用户有很多网站是被限制访问的,这种限制是人为的,不同Serve对地址的封锁是不同的。所以不能访问时可以换一个国 外的代理服务器试试;
④提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度;
⑤隐藏真实IP:上网者也可以通过这种方法隐藏自己的IP,免受攻击。
(3)http代理图示:
【拓展:虚拟主机的实现】
(一)简介及构成:
虚拟主机:是在网络服务器上划分出一定的磁盘空间供用户放置站点、应用组件等,提供必要的站点功能与数据存放、传输功能。
所谓虚拟主机,也叫“网站空间”就是把一台运行在互联网上的服务器划分成多个“虚拟”的服务器,每一个虚拟主机都具有独立的域名和完整的Internet服务器(支持WWW、FTP、E-mail等)功能。一台服务器上的不同虚拟主机是各自独立的,并由用户自行管理。但一台服务器主机只能够支持一定数量的虚拟主机,当超过这个数量时,用户将会感到性能急剧下降。
(二)原理:
虚拟主机是用同一个WEB服务器,为不同域名网站提供服务的技术。Apache、Tomcat等均可通过配置实现这个功能。
相关的HTTP消息头:Host。
例如:Host: www.baidu.com
客户端发送HTTP请求的时候,会携带Host头,Host头记录的是客户端输入的域名。这样服务器可以根据Host头确认客户要访问的是哪一个域名。
【URI】
先来对比下URL和URI的区别
具体详解我在后面文章里做了总结
【总结:】
①网页里文本优先于图片展示原因:HTTP协议可以确定传输文档中哪部分优先显示
②代理服务器:可以突破自身IP访问限制,访问国外站点,它的工作主要在开放系统互联(OSI)模型的对话层
③相对应的HTTP是客户端浏览器或其他程序与Web服务器之间的应用层通信协议
④虚拟主机:一台服务器主机只能够支持一定数量的虚拟主机,当超过这个数量时,用户将会感到性能急剧下降
⑤URL统一资源定位符,URI统一资源标识符
.
相关推荐
2. HTTP方法:HTTP定义了多种请求方法,常见的有GET(获取资源)、POST(提交数据)、PUT(更新资源)、DELETE(删除资源)等。GET是最常用的方法,用于获取服务器上的资源;POST常用于提交表单数据,创建新的资源。...
2. **理解HTTP协议的工作机制**:通过对捕获的报文进行分析,进一步理解HTTP协议如何在客户端与服务器之间进行通信,包括连接的建立、请求与响应的过程等。 #### 实验内容及步骤详解 1. **启动Ethereal并设置过滤...
一般来说,Web服务器默认的只支持Post和Get...但是随着Ajax XMLHttpRequest 和 REST风格应用的深入,我们发现Http 1.1协议还支持如下请求方法(Request Method): •OPTIONS •HEAD •DELETE •PUT •TRACE •CONNECT
2. **CRUD操作**: 使用HTTP方法对应资源的操作,GET获取资源,POST创建资源,PUT更新资源,DELETE删除资源。 3. **状态码反馈**: 通过状态码告知客户端操作结果,如201表示资源已创建,204表示无内容。 ### 总结 ...
每种方法规定了客户与服务器联系的类型不同。 GET 方法:请求获取 Request-URI 所标识的资源。 POST 方法:请求服务器接受附在请求后面的数据,常用于提交表单。 HEAD 方法:请求获取由 Request-URI 所标识的资源...
6. **OPTIONS**:查询响应URI支持的HTTP方法。 #### Http协议实现的原理机制 HTTP协议的工作流程如下: 1. **客户端发起请求**:客户端通过HTTP请求向服务器发送数据。 2. **服务器处理请求**:服务器接收到请求...
这个协议是基于请求与响应模型的,允许用户代理(如浏览器)向Web服务器发送请求,并接收服务器返回的数据。 HTTP协议的工作原理: 1. 请求过程:当用户在浏览器中输入URL并按下回车键时,浏览器作为客户端(Client...
C#实现http协议GET、POST请求 C#实现http协议GET、POST请求 C#实现http协议GET、POST请求 C#实现http协议GET、POST请求 C#实现http协议GET、POST请求
HTTP协议是基于TCP/IP通信协议来传递数据的,主要用于Web浏览器与Web服务器之间的信息传输。 在HTTP协议中,通信过程通常由客户端发起请求(Request),服务器接收请求并返回响应(Response)。请求通常包含方法...
HTTP(Hypertext Transfer Protocol)超文本传输协议是互联网上应用最为广泛的一种网络协议,它定义了客户端(如浏览器)和服务器之间交换数据的方式。这个协议是基于TCP/IP通信协议来传输数据的,用于从万维网...
HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,主要用于Web页面的访问。传统的HTTP协议在底层通常依赖于TCP(传输控制协议)作为传输层协议。TCP以其可靠性和拥塞控制机制保证了数据的正确传输,但在...
HTTP协议分析工具能够帮助我们深入理解HTTP通信过程,包括请求方法、状态码、头部信息、请求体和响应体等关键元素。 首先,让我们看看JavaScript。JavaScript是一种轻量级的解释性编程语言,常用于网页和网络应用...
HTTP协议是基于TCP/IP通信协议来传输数据的,主要负责客户端(浏览器)与服务器之间的通信。在Web开发和网络编程中,对HTTP协议的理解和运用至关重要。 HTTP协议采用了请求/响应模型。在这个模型中,客户端(通常是...
这份"HTTP协议详解PDF"文档应该包含对HTTP协议的全面解析,涵盖了其核心概念、工作原理、请求与响应报文结构、状态码、首部字段等内容。 在HTTP协议中,主要有两种类型的操作:GET和POST。GET方法用于获取资源,而...
在IT行业中,串口通信和HTTP协议是两个重要的领域,它们在各种硬件设备与网络服务之间建立起连接。本文将深入探讨如何将串口数据转换为HTTP协议数据,并将其发送到云端,以及源码软件的跨平台特性。 串口通信,也...
HTTP协议的请求由方法(如GET、POST)、URL、HTTP版本、头部和可选的实体主体组成,响应则包含状态码、头部和可选的实体主体。 当我们需要构建一个基于HTTP的自定义协议时,通常会涉及到以下几个方面: 1. **协议...
超文本传输协议(HTTP)是互联网上应用最广泛的一种网络协议,主要负责Web浏览器与Web服务器之间的信息交换。HTTP 1.1是HTTP协议的第四个主要版本,它是在HTTP 1.0的基础上进行修订和扩展的,以解决1.0版本中存在的...
HTTP协议有多种请求方法,其中最常见的是GET和POST。GET方法用于获取资源,数据附在URL后面,通常用于浏览网页;POST方法用于向服务器提交数据,常用于表单提交。除此之外,还有PUT、DELETE、HEAD等其他方法,用于...
在VC++中实现HTTP Server,你需要创建一个监听特定端口的服务器,当接收到客户端的HTTP请求时,解析请求头,根据请求方法(GET、POST等)处理请求,然后构造并返回响应。这涉及到网络编程的知识,如套接字(socket)...