介绍:
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
工作流程:
HTTP协议永远都是客户端发起请求,服务器回送响应.
一次HTTP操作称为一个事务,其工作过程可分为四步:
1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。
2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
问题来了!!前面所说的都是比较宽大的概念,那:从输入 URL 到页面加载完成的过程中都发生了什么事情?
服务器接收到数据后会进行哪些处理?
1,请求由客户端浏览器生成后,:
请求在进入到真正的应用服务器前,可能还会先经过负责负载均衡的机器,它的作用是将请求合理地分配到多个服务器上,同时具备具备防攻击等功能。
负载均衡具体实现有很多种,有直接基于硬件的 F5,有操作系统传输层(TCP)上的 LVS,也有在应用层(HTTP)实现的反向代理(也叫七层代理),接下来将介绍 LVS 及反向代理。
负载均衡的策略也有很多,如果后面的多个服务器性能均衡,最简单的方法就是挨个循环一遍(Round-Robin),其它策略就不一一介绍了,可以参考 LVS 中的算法。
LVS
LVS 的作用是从对外看来只有一个 IP,而实际上这个 IP 后面对应是多台机器,因此也被成为 Virtual IP。
前面提到的 NAT 也是一种 LVS 中的工作模式,除此之外还有 DR 和 TUNNEL,具体细节这里就不展开了,它们的缺点是无法跨网段,所以百度自己开发了 BVS 系统。
反向代理
方向代理是工作在 HTTP 上的,具体实现可以基于 HAProxy 或 Nginx,因为反向代理能理解 HTTP 协议,所以能做非常多的事情,比如:
- 进行很多统一处理,比如防攻击策略、放抓取、SSL、gzip、自动性能优化等
- 应用层的分流策略都能在这里做,比如对 /xx 路径的请求分到 a 服务器,对 /yy 路径的请求分到 b 服务器,或者按照 cookie 进行小流量测试等
- 缓存,并在后端服务挂掉的时候显示友好的 404 页面
- 监控后端服务是否异常
- ⋯⋯
2:Web Server 中的处理
请求经过前面的负载均衡后,将进入到对应服务器上的 Web Server,比如 Apache、Tomcat、Node.JS 等。
3:进入后端语言
Web Server 会调用后端语言进程来处理 HTTP 请求,目前大部分后端语言都是基于虚拟机的,如 PHP、Java、JavaScript、Python 等
服务器返回数据后浏览器如何处理?
待续....
注:时间有限,今天就看到写到这儿,明天继续
附录1,HTTP的几个重要概念
1连接:Connection
一个传输层的实际环流,它是建立在两个相互通讯的应用程序之间。
在http1.1,request和reponse头中都有可能出现一个connection的头,此header的含义是当client和server通信时对于长链接如何进行处理。
在http1.1中,client和server都是默认对方支持长链接的, 如果client使用http1.1协议,但又不希望使用长链接,则需要在header中指明connection的值为close;如果server方也不想支持长链接,则在response中也需要明确说明connection的值为close。不论request还是response的header中包含了值为close的connection,都表明当前正在使用的tcp链接在当天请求处理完毕后会被断掉。以后client再进行新的请求时就必须创建新的tcp链接了。
2消息:Message
HTTP通讯的基本单位,包括一个结构化的八元组序列并通过连接传输。
3请求:Request
一个从客户端到服务器的请求信息包括应用于资源的方法、资源的标识符和协议的版本号。
4响应:Response
一个从服务器返回的信息包括HTTP协议的版本号、请求的状态(例如“成功”或“没找到”)和文档的MIME类型。
5资源:Resource
由URI标识的网络数据对象或服务。
6实体:Entity
数据资源或来自服务资源的回映的一种特殊表示方法,它可能被包围在一个请求或响应信息中。一个实体包括实体头信息和实体的本身内容。
7客户机:Client
一个为发送请求目的而建立连接的应用程序。
8用户代理:UserAgent
初始化一个请求的客户机。它们是浏览器、编辑器或其它用户工具。
9服务器:Server
一个接受连接并对请求返回信息的应用程序。
10源服务器:Originserver
是一个给定资源可以在其上驻留或被创建的服务器。
11代理:Proxy
一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其它客户机建立请求。请求是通过可能的翻译在内部或经过传递到其它的服务器中。一个代理在发送请求信息之前,必须解释并且如果可能重写它。
代理经常作为通过防火墙的客户机端的门户,代理还可以作为一个帮助应用来通过协议处理没有被用户代理完成的请求。
12网关:Gateway
一个作为其它服务器中间媒介的服务器。与代理不同的是,网关接受请求就好象对被请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同网关打交道。
网关经常作为通过防火墙的服务器端的门户,网关还可以作为一个协议翻译器以便存取那些存储在非HTTP系统中的资源。
13通道:Tunnel
是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于HTTP通讯,尽管通道可能是被一个HTTP请求初始化的。当被中继的连接两端关闭时,通道便消失。当一个门户(Portal)必须存在或中介(Intermediary)不能解释中继的通讯时通道被经常使用。
14缓存:Cache
反应信息的局域存储。
附录2:参考资料
《https_百度百科》:http://baike.baidu.com/view/14121.htm
《深入理解HTTP协议》:http://www.blogjava.net/zjusuyong/articles/304788.html
《从输入 URL 到页面加载完成的过程中都发生了什么事情?》
http://fex.baidu.com/blog/2014/05/what-happen/
相关推荐
HTTP 协议学习心得体会 概述: HTTP 协议(HyperText Transfer Protocol)是 TCP/IP 协议集中的一个应用层协议,用于定义浏览器和 Web 服务器之间交换数据的过程以及数据本身的格式。HTTP 协议是无状态的,通信过程...
HTTP协议学习资料主要为初学者提供了对HTTP协议基本概念、工作原理以及相关开发工作的详细介绍,内容全面,帮助开发者和测试人员深入理解Web程序间通信的机制。HTTP协议作为Web开发的基础,对于每个IT专业人员都是一...
这份"HTTP协议学习总结共10页.pdf"的资料,很可能包含了对HTTP协议的全面概述,包括其原理、结构、请求方法、响应状态码、报文格式以及与HTTPS的区别等内容。 1. HTTP协议原理:HTTP协议是一种无状态、基于请求与...
### HTTP协议学习笔记之C++ #### 一、HTTP协议基础 HTTP(Hypertext Transfer Protocol)是一种应用层协议,主要用于客户端(例如Web浏览器)与服务器之间的数据交换。它基于TCP/IP协议栈,利用TCP来确保数据传输...
HTTP 协议学习总结 HTTP 协议是一种通信协议,允许将超文本标记语言 (HTML) 文档从 Web 服务器传送到 Web 浏览器。它工作在 TCP/IP 协议体系中的 TCP 协议上,客户机和服务器必须都支持 HTTP,才能在万维网上发送和...
**HTTP协议概述** ...它是一个基于请求与响应模型的、无状态的、应用层协议...学习HTTP协议对于理解和优化Web应用至关重要。深入理解HTTP协议,可以帮助我们更好地利用Web资源,解决网络问题,以及开发更高效的Web服务。
在本文中,我们将深入探讨HTTP协议的核心概念,包括URL的组成部分、HTTP的无状态特性以及HTTP消息的结构。 URL(统一资源定位符)是互联网上资源的唯一地址,其基本格式如下: - schema: 指定使用的协议类型,如...
HTTP协议是互联网上应用最广泛的一种网络通信协议,它是客户端(通常是Web浏览器)和服务器之间进行数据交换的基础。...通过学习和实践,我们可以更好地理解和利用HTTP协议,提高网络通信的效率和可靠性。
### 使用网络分析软件学习HTTP协议 #### 一、学习目的 本书旨在介绍如何利用网络分析软件来学习HTTP协议的基础知识。对于初次接触网络分析的新手来说,从理论入手往往难以获得直观的感受,也难以积累实战经验。...
putty 学习http协议用putty 学习http协议用putty 学习http协议用
通过阅读《HTTP协议(RFC2616)中文版》和《http协议学习系列-阿蜜果.pdf》,可以深入了解HTTP协议的细节,包括其工作流程、各种首部字段的含义、性能优化策略等,这对于理解网络通信、Web开发和网络调试都是非常重要...
在IT行业中,协议学习是构建通信系统的基础,它涉及到如何让不同的设备或系统之间能够有效地交换数据。"协议学习协议学习300"这个标题可能是针对一个深入学习300个核心通信协议的教学资料或者课程,旨在帮助学习者...
HTTP协议和TCP协议pcap数据包下载,支持抓包软件(如:wireshark)打开并学习HTTP协议和TCP协议报文解析。需要其他协议,请查看我发布的其他资源。
实验选取了常见的HTTP协议作为研究对象,通过对HTTP协议的深入剖析,使学生能够掌握HTTP协议的基本原理、报文格式以及其工作流程。 #### 实验环境配置 - **操作系统**:Windows 7 - **网络平台**:实验室内部...
HTTP(Hypertext Transfer Protocol)超文本传输协议是互联网上应用最为广泛的一种网络协议,它定义了客户端(浏览器或其他HTTP客户端...通过深入学习和实践,我们可以更好地利用HTTP协议来构建高效、安全的网络应用。
learning-http-protocolhttp协议学习parser/src/client.php http socket 客户端实现parser/src/server.php http server 端协议解析简单实现parse/src/sina.php sina http client 简单实现,验证协议不完整情况下等待...
网络协议的学习对于从事IT行业的人员至关重要,无论是网络管理员、系统工程师、程序员还是网络安全专家,都需要对TCP/IP有深入的理解。通过《TCP/IP详解卷1:协议》,你可以逐步掌握网络通信的本质,为你的职业生涯...