使用HTTP协议访问Web
我们在使用网页浏览器访问网页的时候,通过输入URL地址,当成功请求到服务器时,WEB浏览器就会显示相应的页面。
其中发起请求的是客户端
接收请求的是服务端
而他们进行通讯的语言我们成为协议,web访问采用的是HTTP(HyperText Transfer Protocol 超文本传输协议)
与HTTP密切相关的IP/TCP/DNS协议
IP(Internet Protocol 网际协议) 位于网络层,它的作用是把各种数据包传送给对方.(而IP协议又通过ARP协议来搜索目标[ARP(Address Reslution Protocol) 地址解析协议,通过IP地址反向查询对应的MAC地址])。
负责域名解析的DNS
计算机可以被赋予IP地址,也可以被赋予域名或主机名,但是对于我们来说,记住长长的IP地址实在太难为我们了,与IP地址相比,一个有意义的域名更符合我们的记忆习惯。但是反过来,让计算机去理解名称也相对的变得困难。因此DNS(Domain Name System)协议孕育而生.
DNS协议提供的服务就是:对用户而言:将IP地址转换成域名、对计算机而言就是将域名转码成IP地址。
URL与URI
URL是URI的子集,而且我们也更熟悉URL(Uniform Resource Locator 统一资源定位符)。URL正是使用WEB浏览器访问网页需要输入的网页地址。
URI(Uniform Resource Identifier 统一资源标识符),RFC2396分别对着三个单词做了以下的定义:
Uniform: 规定统一的格式可方便处理多种不同类型的资源.而不用根据上下文环境来识别资源指定的访问格式。另外加入新增的协议方案(如http:/ftp:等协议)也更加容易.
Resource:资源的定义是"可标识的任何东西".除了文档、图像或服务等能够区别于其他类型的,全都可作为资源。另外资源不仅可以是单一的,也可以是集合。
Identifier: 标识可以标识的对象。也称为标识符。
综上所述:URI就是由某个协议方案表示的资源的定位标识符。协议方案是指访问资源所使用的协议类型名称.
采用HTTP协议时,协议方案就是HTTP.除此之外,还有ftp、telnet等。标准的URI协议方案有30多种。
URI用字符串标识某一互联网资源,而URL表示资源的地点(互联网所在的位置)。RFC3986中列举了几种URI的使用方法:
1.ftp://ftp.is.co.za/rfc/hello.txt
2.http://www.***.com/hello.txt
3.tel:+1-816-555-1212
4.telnet://192.168.0.22:80/
HTTP协议用于服务端与客户端的通讯
HTTP协议和TCP/IP协议族内的其他众多的协议相同,都是用于客户端与服务端之间进行通讯的。
访问资源的一端叫做客户端,提供资源相应的一端叫做服务端.当然实际情况中,客户端及服务端的角色是有可能产生互换的.(即是客户端也是服务端),这种情况在P2P中尤为明显.
HTTP协议规定,请求是从客户端发起,最后服务端响应该请求并返回响应数据。换句话说,肯定是客户端开始建立通讯,服务端在没有接收到请求数据的情况下是不可能发送响应的。
请求数据:请求访问某台HTTP服务器上的index.html资源
1.GET 请求访问服务器的类型,成为方法(method)
2.随后的/index.html 指定了访问的资源
3.HTTP/1.1 指明了客户端使用的HTTP协议版本
响应数据一般是由协议版本、状态码、状态的原因短语、响应首部字段、以及实体内容组成
HTTP协议是一种无状态协议,协议不会对请求数据及响应数据进行状态保存以及持久化.
告知服务器意图的HTTP方法
Get 获取资源 (QUERY)
请求访问已被URI识别的资源。指定的资源经过服务器的解析处理返回响应内容.
Post 修改资源(MODIFY)
类似于数据库操作中的修改操作
PUT(ADD)
类似于数据库操作中的增加操作
HEAD 获取报文首部
HEAD方法和GET方法一样,不过HEAD方法仅获取报文首部,而不返回报文的主体内容。主要用于确认URI的有效性及资源的更新日期等.
DELETE 删除操作
类似于数据库的DELETE删除操作。
OPTIONS 询问支持的方法
OPTIONS 方法用来查询针对请求的URI指定的资源支持的方法
TRACE 追踪
TRACE 方法可以让web服务器将之前的请求通讯环 告知给 客户端.发送请求时,在Max-Forward 首部中填入数值,没经过一个服务器端就将数字减1,当该数字刚好减到0时,就停止传输,最后接收到该请求的服务器返回状态吗200作为响应。
客户端通过trace方法可以知道请求是如何被加工修改(篡改)的,
CONNECT 要求用隧道协议连接代理
CONNECT要求在与代理通讯服务器通讯时建立隧道,实现用隧道协议进行TCP通讯。主要使用(SSL(Security Socket layer 安全套接层)和TLS(Transport layer Security 传输层安全))协议对通讯内容进行加密后经过网络隧道传输.
CONNECT 方法的格式如下:
CONNECT 代理服务器名:端口号 http版本
HTTP方法一览
其中LINK及UNLINE 在HTTP/1.1版本上已不再支持。
建立持久连接节省通讯量
在HTTP初始版本中,没建立一次HTTP通讯后就要断开一次HTTP连接,
以当年的情形上看,因为传输的内容基本上是内容容量较小的文本,因此在当时上看来并没什么问题,但是随着互联网的发展,一个页面经常包含大量的多媒体信息,在每次请求信息时,会造成无谓的请求连接与断开,增加通讯的开销.