http协议进阶(一)http概述

之前一段时间将http协议的一些基础的知识学习并且整理了笔记,发到了博客上,最近间歇性看更深入的一些关于http协议的东西,顺带也整理上来。。。。。。

当然,可能有些内容会和之前的博客内容重叠,但基本都是在其基础上进行了加深巩固,后面,估计会顺带说一下TCP协议的一点东西,嗯,就这样。。。

——参考书籍《HTTP权威指南》

1、web客户端和服务器

http客户端发出请求,其中包含请求内容,发给服务器,服务器再返回内容中回送请求的数据,http客户端和服务器构成了万维网的基本组件

我们常说的客户端,就是web浏览器,比如微软的IE、Google的chrome,火狐的Firefox等,浏览器向服务器发送http请求对象,并将对象显示在你的屏幕上

2、资源

web服务器是web资源的宿主,源头;最简单的web资源就是服务器文件系统中的静态文件,其中可能包含很多内容:文本文件、HTML文件、word文件、图片文件、AVI电影文件、Adobe的acrobat文件等所有你可以想象到的文件

但资源不局限于静态文件,它还可以根据需要生成软件程序(比如照相机中活生生的照片、股票交易、房产交易的数据库、在线商店中的礼物等等)

总之,所有类型的内容都来源于资源。。。

2.1 媒体类型

互联网上有数千种不同的数据类型,http给每种需要通过http传输的对象都打上了MIME类型(MIME type)的数据格式标签

MIME:多用途英特网邮件扩展

web浏览器每次从服务器取回一个对象时,会先查看其MIME类型,看看能否处理该类型;大多数浏览器都可以处理数百种常见的对象类型

MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔,例如

HTML格式的文本文档:test.html

普通的ASCII文本文档:test/plain

图片类型:image/jpeg、image/gif

2.2 URI

每个服务器资源都有一个名字,这样客户端就可以说明它对什么资源感兴趣

服务器资源名称被称为:统一资源标识符(Uniform Resource Identifier,URI)

URI就像因特网上的邮政地址一样,在世界范围内唯一标识并且定位信息资源

2.3 URL

URL:统一资源定位符是资源最常见的形式,它描述了一台特定服务器上某资源的特定资源,明确说明了如何从一个精确、固定的位置获取资源

上图的URL说明了协议、服务器和本地资源

大部分URL遵循一种标准格式,该格式包含三个部分:

第一部分:方案;说明了访问资源所使用的协议类型,通常为http协议:hhtp://

第二部分:地址;比如:www.baidu.com

第三部分:指定服务器上某个资源,比如:specisal/saw-blade.gif

2.4 URN

URI的第二种方式就是URN:统一资源名;URN是作为特定内容的唯一名称使用的,与目前的资源所在地无关,使用URN,可以将资源四处转移,还可用同一个名字通过多种网络协议来访问资源

URN还处于试验阶段,因为其有效的工作需要一个支撑架构来解析资源的位置。而此类架构比较缺乏,后面详解介绍

3、事务

一个事务由一条请求命令和一条响应结果构成,这种通信时通过http报文(HTTP message)的格式化数据块进行的

事务也可以理解为从客户端到服务器再到客户端,一次完整通信的过程

3.1方法

http支持八种不同的请求命令,被称为方法,每条请求报文都包含一个方法,告诉服务器要执行什么动作,之前有专门介绍过这几种方法,传送门:http://www.cnblogs.com/imyalost/p/5630940.html

3.2状态码

每条响应报文都会携带一个状态码,用以告知客户端,请求结果,或是否需要其他动作,之前也有介绍过这几种状态码,传送门:http://www.cnblogs.com/imyalost/p/5688169.html

3.3一个web界面中可以包含多个对象

通常并不是单个资源,而是一组资源的集合(一个事务获得一种资源,不同的资源【甚至分布在不同服务器上】组合构成一个界面)

4、报文

构成:一行行简单的字符串组成

特点:纯文本,方便读写

请求报文(request message):从客户端发往服务器

响应报文(response message):从服务器发往客户端

http报文包括以下三个部分:

起始行:报文第一行,用来说明要做什么,出现了什么情况

首部字段:位于起始行后面,有零个或者多个,每个首部字段都包含一个名字和一个值,便于解析,之间用冒号(:)隔开,以一个空行结束

主体:空行下面为报文主体,其中包含了所有类型的数据

5、连接协议

5.1 TCP/IP

http协议是位于整个数据传输通信的最上层应用层协议,不关注细节,负责通信细节的协议为传输层控制协议(Transmission Control Protocl,TCP)

TCP特点:1)无差错的数据传输

2)按序传输(按照数据发送顺序到达服务器)

3)未分段的数据流(任意时刻任何大小将数据发出去)

英特网是全世界计算机和网络设备最常用的层次化分组交换网络协议集,其隐藏了网络和硬件的特点和弱点,使各类型的计算机和网络都能进行可靠的通信

下面是互联网协议的五层协议栈

5.2 连接、IP地址及端口号

客户端向服务器发送请求报文之前,需要用网际协议(Internet Protocol,IP)地址和端口号在客户端和服务器之间建立一条TCP/IP连接通道

URL是资源的地址,自然能够为我们提供储存资源的机器的地址,看下面几个URL:

http://207.200.83.29:80/index.html

http://www.netscape.com:80/index.html

http://www.netscape.com/index.html

第一个使用了机器的IP地址207.200.83.29,以及端口号80

第二个使用了文本形式的域名(主机名:IP地址比较人性化的别称)。通过域名服务(Domain Name Service,DNS)机制对主机名进行转换,后面详细介绍这一部分

第三个没有端口号,这种情况一般默认端口号为80。

下图为浏览器通过http显示服务器中某个简单HTML资源的流程导图

步骤如下:

1)浏览器从URL中解析出服务器主机名;

2)浏览器将主机名转换为服务器的IP地址;

3)浏览器将端口号(如果有)从URL中解析出来;

4)浏览器建立一条与服务器的连接TCP连接通道;

5)浏览器向服务器发送一条http请求报文;

6)服务器向浏览器发送一条http响应报文;

7)结束通信,关闭连接,浏览器显示具体资源;

说到这里,我很想写写关于数据通信时候所谓的“三次握手”,但之前的http协议基础中已经介绍过,还不懂的可以去里面找找,其实就是数据的封装

6、协议版本

目前我们使用的http协议版本是http1.1,其重点关注的是校正http设计中的结构性缺陷,明确语义,引入重要的性能优化措施,并删除一些不好的特性

HTTP-NG(http2.0):是http1.1后继结构的原型建议,重点关注性能的大幅优化,以及更强大的服务逻辑远程执行框架

目前http2.0还在不断商议中,可能被应用到的新技术预计有以下7种,不排除有重大更改的可能性

7、web的结构组件

web的应用程序,除了浏览器和服务器之外,还有其他几个很重要的组件(以前的博客中有介绍,所以这里就大致说下,后面具体解释他们的功能用处)

7.1 代理:位于客户端和服务器之间的http中间实体

web安全、应用集成以及性能优化的重要组成模块

出于通信安全考虑,会将代理做为转发所有web数据流的可信任中间节点使用,还可对请求响应进行过滤,后面详细介绍

7.2 缓存:http仓库,使常用页面资源可以保存在离客户端更近的地方

web缓存或者代理缓存,可以将经过代理传送的常用的允许缓存的资源保存下来,下一个请求若有相同的资源,可直接享受该资源

http对缓存定义了很多功能,使缓存更高效,并规范了缓存资源的有效期和隐私性,后面详细介绍

7.3 网关:连接其他应用程序的特殊web服务器

网关通常将http数据流转换成其他的协议,接受请求时就好像自己是资源的源服务器,例如

一个http/ftp网关会http请求接受对ftp-URL的请求,但通过ftp协议来获取资源,得到的资源被封装成一条http报文,发送给客户端

关于具体的网关的内容,后面详细介绍

7.4 隧道:对http通信报文进行盲转发的特殊http应用程序

隧道常用的方式是通过http连接承载加密的安全套接层(Secure Scokets Layer,SSL)数据流,这样SSL数据流可以穿过只允许web数据流通过的防火墙

隧道可以在非http网络上转发数据(显示的是HTTP/SSL隧道)

7.5 Agent代理:代表用户发起自动http请求的半智能web客户端程序

其他类型:对web上闲逛的自动用户采用Agent代理,无人监视下发布http事务并获取内容,比如:“网络蜘蛛”、“网络机器人”等

自动搜索引擎“网络蜘蛛”就是Agent代理,可以全世界范围内获取web页面

基本上这些内容和之前的http协议随笔有很多是重叠的,不过是更深入的去介绍了,这些只是我的一些学习笔记,从一些资料书籍中提取重点做一个总结,

接下来一段时间,我会整理更多的学习笔记,如果有描述不正确或者遗漏的,希望看到的朋友可以评论区提出来,我及时更新,谢谢。。。。。。

时间: 2024-10-10 05:52:40

http协议进阶(一)http概述的相关文章

SSL/TLS协议运行机制的概述

转自:SSL/TLS协议运行机制的概述 作者: 阮一峰 日期: 2014年2月 5日 互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险. (1) 窃听风险(eavesdropping):第三方可以获知通信内容. (2) 篡改风险(tampering):第三方可以

SSL/TLS协议运行机制的概述(转载加个人理解)

一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,潜在三大风险. 1.窃听风险(eavesdropping):第三方可获知通信内容.2.篡改风险(tampering):第三方可以修改通信内容. 3.冒充风险(pretending):第三方可以冒充他人身份参与通信. SSL/TLS协议是为了解决这三大风险而设计的,目的是希望达到: 1.所有信息都是加密传播,第三方无法窃听. 2.具有校验机制,一旦被篡改,通信双方会立刻发现. 3.配备身份证书,防止身份被冒充. 二.

[转]SSL/TLS协议运行机制的概述

作者: 阮一峰 日期: 2014年2月 5日 互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险. (1) 窃听风险(eavesdropping):第三方可以获知通信内容. (2) 篡改风险(tampering):第三方可以修改通信内容. (3) 冒充风险(pre

【转】SSL/TLS协议运行机制的概述

互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险. (1) 窃听风险(eavesdropping):第三方可以获知通信内容. (2) 篡改风险(tampering):第三方可以修改通信内容. (3) 冒充风险(pretending):第三方可以冒充他人身份参与通

TCP/IP 协议:链路层概述

我们以一个常见的查看IP指令为出发点(ifconfig -a): ? 1.链路层是什么 链路层是指硬件层协议.也即网络所使用的硬件,比如:以太网(后文主要讨论对象),令牌环网,FDDI已经RS-232串行线路. 在上面的命令(ifconfig -a)结果中,硬件地址(MAC)为08:00:27:00:9c:59 (48bit),链路层主要的作用就是连接不同的两个硬件. ? 2.链路层的作用 1.为IP模块发送和接收IP数据报 2.为ARP模块发送和接收ARP应答 3.为RARP发送RARP请求和

SSL/TLS协议运行机制的概述(转)

互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险. (1) 窃听风险(eavesdropping):第三方可以获知通信内容. (2) 篡改风险(tampering):第三方可以修改通信内容. (3) 冒充风险(pretending):第三方可以冒充他人身份参与通

http协议进阶(二)URL与资源

像今天这种天气,其实最适合放一些抒情缓慢的民谣,一杯浓咖啡,一本书,度过一天...... 上海今天大雨... 一.URL的语法  URL是互联网资源的标准化名称 URL提供了一种定位互联网上任意资源的手段,但这些资源要通过不同方案(协议:比如http.ftp.smtp)来访问,因此URL语法会略有差异 大部分URL都遵循通用的语法,而且不同URL方案风格和语法都有重叠 大多数URL协的语法都建立在下面9个部分构成的通用格式上: <scheme>://<user>:<passw

SSL/TLS协议运行机制的概述(转)

互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 不使用SSL/TLS的HTTP通信,就是不加密的通信.所有信息明文传播,带来了三大风险. (1) 窃听风险(eavesdropping):第三方可以获知通信内容. (2) 篡改风险(tampering):第三方可以修改通信内容. (3) 冒充风险(pretending):第三方可以冒充他人身份参与通

HTTP协议(一) 概述

HTTP定义 HTTP????The Hypertext Transfer Protocol is an application protocol for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web. 超文本传输协议(HTTP)是一种详细规定了浏览器和万维网服务器之间互相通信的规则. H