HTTP是可靠数据传输协议,其传输过程确保数据的完整正确,无需进一步关注传输过程的控制。
客户端与服务器架构,服务器存储相应的web内容数据,客户端提出请求,服务器响应,通过报文对应完成资源请求的通信。 其中资源内容寄存于服务器中,其形式多样,可以是静态的文件,也可以是动态的程序服务。
MINE原先是用于邮件协议的,在HTTP的得以沿用,对应产生一个MINE类型来标注具体数据的内容。相应的形式在报文中以Content-type进行标注,其内容以 / 分割比如html格式为text/html,因为html在具体传输的时候还是以文本的形式,但是其具体的类型是html文件,所以标注为text/html,前者标注一个大范围的对象类型,后者具体标注子类型。
URI(Uniform Resourse Identifier)统一资源标识符,其为每一个数据资源都进行一个标注,便于在访问的时候进行区分。其对应的形式有两种一个为URL(统一资源定位符),一个是URN(统一资源名)。
对应的形式为: (scheme)+(host)+(path)
scheme: 标识了对应使用的协议类型,如http://或者https://等。host: 对应为服务器的地址,可以是对应的IP或者是域名,标注主机在网络中的位置。path: 找到对应主机后,通过path就可以找到相应资源的位置。 如今,URL几乎就是URI的形式。URN作为特定内容的唯一名称使用,不关注资源所在的位置,同一个名称可以通过多种协议来访问资源。URN并未广泛使用。
对于相应的资源请求,使用事务的形式对其进行处理,一个事务包括一个请求命令(客户端到服务器)与一个相应结果组成(服务器到客户端),而具体的过程是通过HTTP报文(一种格式化数据块)完成的。一个web界面的资源请求往往是由多个事务组成。
对于请求的命令种类有多个,其命令称为HTTP方法。
状态码对应的在响应报文中,通过一个三位数字表示,表示请求处理的状态,通过这些状态来进一步进行相应操作。每个状态都对应一个原因短语,用于描述状态信息。
报文主要包括请求报文与响应报文。对应的编码是纯文本编码,不是二进制。请求报文是客户端发往服务器的,响应报文是服务器发往客户端的。 其组成为:
起始行: 请求报文的起始行说明报文动作是啥,对应的包括请求的方法,路径,HTTP的版本;响应报文则对应说明请求的情况,包括HTTP的版本,状态码,与状态码对应的原因短语。首部字段: 由零到多个首部字段组成,每个字段占一行,首部字段是一个键值对,中间以 “:” 隔开,最后以一个空行结束。报文主体: 请求报文中主体为发给web服务器的数据,响应报文中则是返回给客户端的数据,主体的结构不是结构化的,根据主体的不同,可以包含任意的二进制数据,或者文本数据。HTTP使用TCP协议进行传输层的通信传输。 大致过程:
由URL得到IP或者域名。通过DNS将域名转换为IP。URL中如果有端口号则使用URL中的端口号,若没有则默认80为端口。由套接字(IP加端口)建立TCP连接。传输报文(请求与响应)。获得到资源,关闭TCP连接,处理或者展示数据。其位置是在客户端与服务器之间的,其作用是处理转发的,客户端发送请求到代理处,代理进行处理(也可以不处理直接转发),之后进行转发,之后收到服务器的响应后转发给客户端。对于客户端其充当了服务器的角色,对于服务器其充当了客户端的角色。
Web缓存是一种特殊的HTTP代理服务器,其实现的功能不仅是处理转发,其本身还具有存储缓存的功能,可以将流经代理的相关常用文件进行缓存,当客户端再次使用的时候就不用再次去请求服务器,提升处理性能(再次请求服务器相对的代价更大)。
是一种特殊的服务器,其位置也是在客户端与服务器之间,其可以将HTTP流量转换为其他协议。
通过HTTP协议不仅可以传输HTTP一个协议相关的数据,也可以将多个协议或者对多个端口的访问数据打包到HTTP中,通过HTTP协议进行传输。 其特点是盲发,在转发的过程中是不会查看数据的,常见的用法是在HTTP承载SSL(安全套接字层)流量,对于相应只允许Web流量通过的防火墙规则就被绕过了。
代表用户发起HTTP请求的程序,常见的就是Web浏览器了,相应的搜索引擎也是一种用户代理,