当我们想浏览一个网站的时候,只要在浏览器的地址栏里输入网站的地址就可以了,例如:www.microsoft.com,但是在浏览器的地址栏里面出现的却是:http://www.microsoft.com,你知道为什么会多出一个“http”吗?
一、HTTP协议是什么
我们在浏览器的地址栏里输入的网站地址叫做URL(UniformResourceLocator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。因此,在我们认识HTTP之前,有必要先弄清楚URL的组成,例如:http://www.microsoft.com/china/index.htm。它的含义如下:
1.http://:代表超文本传输协议,通知microsoft.com服务器显示Web页,通常不用输入;
2.www:代表一个Web(万维网)服务器;
3.Microsoft.com/:这是装有网页的服务器的域名,或站点服务器的名称;
4.China/:为该服务器上的子目录,就好像我们的文件夹;
5.Index.htm:index.htm是文件夹中的一个HTML文件(网页)。
我们知道,Internet的基本协议是TCP/IP协议,然而在TCP/IP模型最上层的是应用层(Applicationlayer),它包含所有高层的协议。高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等。
HTTP协议(Hypertext Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。这就是你为什么在浏览器中看到的网页地址都是以“http://”开头的原因。
自WWW诞生以来,一个多姿多彩的资讯和虚拟的世界便出现在我们眼前,可是我们怎么能够更加容易地找到我们需要的资讯呢?当决定使用超文本作为WWW文档的标准格式后,于是在1990年,科学家们立即制定了能够快速查找这些超文本文档的协议,即HTTP协议。经过几年的使用与发展,得到不断的完善和扩展,目前在WWW中使用的是HTTP/1.0的第六版。
二、HTTP是怎样工作的
既然我们明白了URL的构成,那么HTTP是怎么工作呢?我们接下来就要讨论这个问题。
由于HTTP协议是基于请求/响应范式的(相当于客户机/服务器)。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理和服务器之间通过一个单独的连接来完成。在Internet上,HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP80,但其它的端口也是可用的。但这并不预示着HTTP协议在Internet或其它网络的其它协议之上才能完成。HTTP只预示着一个可靠的传输。
这个过程就好像我们打电话订货一样,我们可以打电话给商家,告诉他我们需要什么规格的商品,然后商家再告诉我们什么商品有货,什么商品缺货。这些,我们是通过电话线用电话联系(HTTP是通过TCP/IP),当然我们也可以通过传真,只要商家那边也有传真。
以上简要介绍了HTTP协议的宏观运作方式,下面介绍一下HTTP协议的内部操作过程。
在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。这就好像上面的例子,我们电话订货的全过程。
其实简单说就是任何服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响应用户请求。你的浏览器是HTTP客户,向服务器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了HTTP请求,此请求被送往由IP地址指定的URL。驻留程序接收到请求,在进行必要的操作后回送所要求的文件。在这一过程中,在网络上发送和接收的数据已经被分成一个或多个数据包(packet),每个数据包包括:要传送的数据;控制信息,即告诉网络怎样处理数据包。TCP/IP决定了每个数据包的格式。如果事先不告诉你,你可能不会知道信息被分成用于传输和再重新组合起来的许多小块。
也就是说商家除了拥有商品之外,它也有一个职员在接听你的电话,当你打电话的时候,你的声音转换成各种复杂的数据,通过电话线传输到对方的电话机,对方的电话机又把各种复杂的数据转换成声音,使得对方商家的职员能够明白你的请求。这个过程你不需要明白声音是怎么转换成复杂的数据的。
分享到:
相关推荐
HTTP 协议详解 HTTP 协议是超文本传输协议(Hypertext Transfer Protocol),是一种用于从 WWW 服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。 一、HTTP 协议是什么 HTTP ...
【HTTP响应拆分攻击(CRLF Injection)详解】 HTTP响应拆分攻击,也称为CRLF注入,是一种利用HTTP协议中的回车换行符(CRLF,即Carriage Return Line Feed,\r\n)来篡改HTTP响应报文结构的安全漏洞。这种攻击允许...
Python拥有丰富的标准库,如os、sys、math等,同时社区有大量第三方库如NumPy(数值计算)、Pandas(数据处理)、requests(HTTP请求)等,方便开发者扩展功能。 总结,Python以其简洁的语法、强大的功能和丰富的...
《初识Java微信公众号开发》 http://www.imooc.com/learn/368 附件是整理的源码编译没有错误。 环境说明:tomcat8.5、jdk1.8、dom4j-1.6.1、XStream-1.4.9 程序总是报错“org.xmlpull.v1.XmlPullParserException”,...
”应用,进而学习如何处理HTTP请求,响应动态内容,以及如何利用Flask三剑客进行数据库操作和表单处理。此外,项目还可能涉及错误处理、静态文件服务、用户认证等进阶话题。 总之,"flask初识项目示例"是一个很好的...
3. 网络状况监视器:Firebug的网络状况监视器能够帮助开发人员监视页面的网络请求,可以查看每个请求的参数、URL、HTTP头等信息。 4. CSS查看器:Firebug的CSS查看器能够帮助开发人员查看和编辑CSS样式表,能够快速...
【IBM Rational AppScan初识】 IBM Rational AppScan是一款强大的自动化安全扫描工具,专门针对Web应用和Web Services进行安全测试。它的核心原理是采用黑盒测试方法,通过模拟各种攻击手段来检测潜在的安全漏洞。...
初识Scratch编程 Scratch是由麻省理工学院(MIT)的媒体实验室 Lifelong Kindergarten 团队设计的一款图形化编程工具,旨在帮助青少年及儿童开启编程之旅。它以其直观、趣味性强的特点,吸引了全球范围内8至14岁的...
### 03 初识 Node.js - Express #### 1.1 Express 简介 - **Express** 是一个基于 **Node.js** 平台,快速、开放且极简的 Web 开发框架。 - **通俗理解**: Express 类似于 Node.js 内置的 http 模块,主要用于创建...
初识Python爬虫,我们需要了解其基本原理和常用库。本文将通过实例介绍如何使用requests和BeautifulSoup两个核心库进行简单的网页抓取。 首先,requests库是Python中用于发送HTTP请求的库,它能够模拟浏览器行为,...
它提供了一个模型-视图-控制器架构,帮助开发者处理HTTP请求、展示视图并管理模型数据。Spring MVC的灵活性和可扩展性使其成为Web开发的首选框架。 5. **Spring Boot**: Spring Boot是为了简化Spring应用的初始...
初识JPA 2.0** Java Persistence API (JPA) 是Java平台上的一个标准,用于处理对象关系映射(ORM),它允许Java开发者将对象模型与关系数据库进行交互。JPA 2.0是这个标准的一个重要版本,引入了许多新特性和改进...
标题 "第一篇 Ext初识" 暗示我们即将探讨的是ExtJS库的入门知识,这是一个基于JavaScript的前端开发框架,用于构建富客户端应用程序。在本文中,我们将深入理解ExtJS的基本概念、核心组件以及如何开始使用这个强大的...
【初识Hadoop之Hadoop安装】 Hadoop是Apache软件基金会的一个开源分布式计算框架,它设计用于处理和存储海量数据。Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,前者负责数据的分布式...
### 01-初识 Node.js 与内置模块 #### 1. 初识 Node.js ##### 1.1 回顾与思考 在开始学习 Node.js 之前,我们需要回顾一下已经掌握的技术栈: 1. **HTML**:用于定义网页结构的语言。 2. **CSS**:用于描述网页...