一、HTTP协议定义
URL的组成
例如:http://www.baidu.com/wuzhe/index.htm。它的含义如下:
* http://:代表超文本传输协议,通知baidu.com服务器显示Web页,通常不用输入;
* www:代表一个Web(万维网)服务器;
* baidu.com/:这是装有网页的服务器的域名,或站点服务器的名称;
* wuzhe/:为该服务器上的子目录,就好像我们的文件夹;
* index.htm:index.htm是文件夹中的一个HTML文件(网页)。
HTTP 协议的基本特点:
* 支持客户 / 服务器模式。
* 简单快速 : 客户向服务器请求服务时 , 只需传送请求方法和路径 。 请求方法常用的有 GET 、 POST 。 每种方法规定了客户与服务器联系的类型不同 。 由于 HTTP 协议简单 , 使得 HTTP 服务器的程序规模小,因而通信速度很快。
* 灵活: HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type 加以标记。
* 无连接 : 无连接的含义是限制每次连接只处理一个请求 。 服务器处理完客户的请求 , 并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
* 无状态: HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面 , 在服务器不需要先前信息时它的应答就较快。
Internet的基本协议是 TCP/IP协议,然而在TCP/IP模型最上层的是应用层(Application layer),它包含所有高层的协议。高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和 HTTP协议等。
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
二、HTTP协议通信过程
当我们在浏览器的地址栏输入“www.baidu.com”然后按回车,这之后发生了什么事,我们直接看到的是打开了对应的网页,那么内部客户端和服务端是如何通信的呢?
基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。
1. URL自动解析 HTTP URL包含了用于查找某个资源的足够信息,基本格式如下:HTTP://host[“:”port][abs_path],其中HTTP表示桶盖HTTP 协议来定位网络资源;host表示合法的主机域名或IP地址,port指定一个端口号,缺省80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。例如:输入 www.taobao.com;浏览器会自动转换成:http://www.taobao.com/
2. 获取IP,建立TCP连接 浏览器地址栏中输入”HTTP://www.xxx.com/”并提交之后,首先它会在DNS本地缓存表中查找,如果有则直接告诉IP地址。如果没有则要求网关 DNS进行查找,如此下去,找到对应的IP后,则返回会给浏览器。当获取IP之后,就开始与所请求的Tcp建立三次握手连接,连接建立后,就向服务器发出 HTTP请求。
3. 客户端浏览器向服务器发出HTTP请求 一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令,接着以报头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。http请求由三部分组成,分别是:请求行、消息报头、请求正文。
4. Web服务器应答,并向浏览器发送数据 客户机向服务器发出请求后,服务器会客户机回送应答,HTTP/1.1 200 OK应答的第一部分是协议的版本号和应答状态码,正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据
5. Web服务器关闭TCP连接 一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码 Connection:keep-aliveTCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
三、扩展知识
高层协议有:文件传输协议 FTP 、电子邮件传输协议 SMTP 、域名系统服务 DNS 、网络新闻传输协议NNTP 和 HTTP 协议等。
中介由三种:代理 (Proxy) 、网关 (Gateway) 和通道 (Tunnel) ,一个代理根据 URI 的绝对格式来接受请求,重写全部或部分消息,通过 URI 的标识把已格式化过的请求发送到服务器。网关是一个接收代理,作为一些其它服务器的上层,并且如果必须的话,可以把请求翻译给下层的服务器协议。一个通道作为不改变消息的两个连接之间的中继点 。 当通讯需要通过一个中介 ( 例如 : 防火墙等 ) 或者是中介不能识别消息的内容时,通道经常被使用。
* 代理 (Proxy):一个中间程序 , 它可以充当一个服务器 , 也可以充当一个客户机 , 为其它客户机建立请求。请求是通过可能的翻译在内部或经过传递到其它的 服务器中。一个代理在发送请求信息之前,必须解释并且如果可能重写它 。 代理经常作为通过防火墙的客户机端的门户 , 代理还可以作为一个帮助应用来通过协议处理没有被用户代理完成的请求。
* 网关 (Gateway):一个作为其它服务器中间媒介的服务器。与代理不同的是,网关接受请求就好象对被请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同网关打交道。 网关经常作为通过防火墙的服务器端的门户 , 网关还可以作为一个协议翻译器以便存取那些存储在非HTTP 系统中的资源。
* 通道 (Tunnel):是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于 HTTP 通讯,尽管通道可能是被一 个 HTT P 请求初始化的 。 当被中继的连接两端关闭时,通道便消失 。 当一个门户 (Portal)必须存在或中介 (Intermediary) 不能解释中继的通讯时通道被经常使用。
分享到:
相关推荐
《嵌入式Web浏览器控件在Delphi中的应用——基于"EmbeddedWebBrowser_FS_Version 14.70.0"》 在软件开发领域,尤其是Windows桌面应用开发中,Delphi是一款广泛使用的集成开发环境(IDE)。对于需要在应用程序中集成...
1. **Java Web Browser**:Java作为一种跨平台的编程语言,可以用来创建桌面应用程序,其中包括Web浏览器。这个实验项目就是利用Java来实现这一目标。 2. **Web浏览器**:Web浏览器是用户访问互联网的工具,它解析...
2. **源码**:提供的是源代码,意味着我们可以查看和修改它的内部工作原理,这对于学习和理解如何利用Web Browser Control构建浏览器非常有帮助。 3. **网络通信类**:这可能指代浏览器与服务器之间的交互,包括HTTP...
标题中的“Web_Browser_Dialog.rar_...通过这个项目,开发者不仅可以锻炼C++编程技能,还能深入理解Web浏览器的工作原理和用户界面设计。对于学习和理解桌面应用开发,尤其是Web浏览相关应用,这是一个很好的实践案例。
【3D WebView for Android Web Browser 3.14.1】是一个专为Unity3D设计的高级组件,它允许开发者在Android平台上实现高质量的网页浏览功能。这个版本(3.14.1)代表着该插件的一个较新的迭代,可能包含了一些性能...
总的来说,通过深入研究"web-browser-源码.zip",我们可以深入了解Web浏览器的工作原理,提升我们的编程技能,更好地应对复杂的Web开发挑战。无论是前端开发者还是系统架构师,这个源码都能为我们提供宝贵的洞见。
在【Advanced Web Browser源代码】中,我们可以学习到如何设计和实现这些功能,深入理解网络浏览器的工作原理。通过分析和调试源代码,开发者可以提升自己的编程技能,特别是对于网络通信、GUI编程和性能优化方面。...
标题 "EmbeddedWebBrowser_D5-XE2_FS_Version+14.70.0.rar" 提供的信息表明,这个压缩包包含的是一个与 Delphi 开发相关的组件或库,特别是关于嵌入式 Web 浏览器的功能。这个版本是 14.70.0,可能是指该组件的特定...
Chrome Web Browser.net是一个基于Chrome内核的C#开发的网络浏览器项目。这个项目的主要目标是利用Google Chrome浏览器的渲染引擎,Chromium,来构建一个自定义的C#应用程序,允许用户在.NET环境中享受与Chrome相似...
【QtWeb-3.1.5.rar_open_qt browser_qtweb】是一个开源浏览器的压缩包,其中包含的QtWeb项目版本为3.1.5。这个浏览器是基于Qt库开发的,Qt是一个功能强大的跨平台应用程序开发框架,支持Windows、Linux、Mac OS X...
《2D WebView for WebGL Web Browser IFrame 4.2:Unity中的Web互动技术解析》 在Unity游戏开发中,有时我们需要将网页内容嵌入到游戏中,实现与网页的交互,这时2D WebView for WebGL Web Browser IFrame插件就...
【标题】:Web服务器与浏览器交互的实现 在IT领域,Web服务器和浏览器是互联网通信的核心组成部分。Web服务器是运行在服务器端的应用程序,负责处理客户端(通常是浏览器)的HTTP请求,并返回相应的HTTP响应,包括...
【Ahmed Web Browser - 开源】项目是一款基于C#编程语言和.NET Framework 2.0构建的多标签网页浏览器。这个项目的特点在于它的开源性质,这意味着它的源代码是公开的,允许开发者和爱好者查看、学习甚至修改代码以...
Web浏览器是当今最广泛使用的软件之一,它们在互联网的日常使用中扮演着核心角色。本文将深入探讨浏览器背后的工作机制,从你在地址栏输入'google.com'开始,直到Google页面在浏览器屏幕上呈现的过程。 我们将讨论...
Browser应用程序作为系统核心组件之一,负责渲染网页和提供交互体验。 Android 4.0 Browser源码包含了实现浏览器功能的全部代码,这包括HTML解析、网络请求、JavaScript引擎、渲染引擎、UI控件等。源码分析可以帮助...
在Java编程领域,开发一个Web浏览器是一个常见的挑战,它涉及到对HTTP协议的理解、网页解析以及用户...通过阅读和分析这些文件,你可以进一步了解这个简单Web浏览器的工作原理,并学习如何构建自己的Java Web浏览器。
标题 "Its a fully functional web browser" 提示我们讨论的是一个具备完整功能的网络浏览器。这意味着这个项目可能是一个自定义的浏览器应用程序,具有浏览网页、搜索、书签管理、历史记录等标准功能。从描述中我们...
标题中的"browser_浏览器_java_web_"表明我们将探讨一个使用Java编程语言实现的基于Web的简单浏览器项目。这个项目旨在提供基本的浏览器功能,包括前进和后退操作,同时用户还可以自行编译Java服务器以支持网页的...
在本文中,我们将深入探讨“browser.js”这个主题,以及它在浏览器环境中的作用。 “browser.js”通常是指一个专为浏览器...在实际项目中,理解和掌握“browser.js”的工作原理对于高效、可靠的Web应用开发至关重要。