http协议基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http协议基础相关的知识,希望对你有一定的参考价值。

前言:

  上一篇博文说到了,主机间通过调用套接字方式相互通信;应用层协议基于通讯子网进行通讯。

  

一、版本迭代:

   httphyper text transfer protocol)即为超文本传输协议,基于html编程语言开发的文本即为超文本。起初的http仅仅只是为了接受HTML格式的页面,仅仅只是文本,并不能传输非文本。

   HTTP/0.9原型版本并没有接受非文本传输,直到HTTP/1.0加入了MIME机制才能够传输非文本,利用MIME机制能够将非文本数据编码文本数据进行传输,在让用户使用相同的编码方式打开非文本数据(以免乱码)。

   MIMEMultipurpose Internet Mail Extesion)是一种在早期SMTP邮政协议上传输非文本协议的机制。

   同时,这也就是现今http协议能够传输非文本数据的缘由。

   尽管http早前就已经加入了MIME机制,但是并不是所有的浏览器都支持所有的媒体类型,这就需要浏览器调用其他插件或其他应用程序打开。

   而http能够通过请求文件的后缀名,来判断由哪个浏览器之外的程序打开而后将其嵌入显示到浏览器中。

二、标准补给

   http是一种应用层协议,默认监听tcp/80端口,使用式数据协议完成数据交换。

 

   http协议主要完成跨主机发送文档。一次完整的http协议包含http请求http响应

 

   请求一个网站相当于请求一个资源,只是通常而言,一个网站有着数个超链接,所以导致了请求一个资源的背后请求了多个资源。

三、精准补给:

   客户端发起web请求,服务器端接受请求,而后响应客户端将资源封装为http报文响应客户端,尽管看是去十分简单,但事实上这之中包含了以下的七个步骤:

   (1)建立或处理连接:

      基于tcp建立虚链路通信,或者关闭某些客户端请求。http属应用层协议,需要传输层协议先生效后,方才能建立http连接,且http协议本身是支持访问控制的

   (2)接受请求:

      接受来自于网络的请求报文中对某资源的一次请求。查询客户端发送的http请求报文,找到请求行,找到请求方法,找到资源定位符,找到协议版本号;确认用户访问的资源是否允许访问,是否支持此访问方法,如果允许的话就进行下一步

      此外,web服务器不仅只有一种响应模式。

      例如,GET /phptp/pig.jpg  HTTP/1.1

   (3)处理请求:

      对请求报文进行解析,并获知请求的资源及请求的方法等相关信息。

   (4)访问资源

      获取请求报文中请求的资源。

      web服务器,即存放了web资源的服务器,负责对请求者提供对方请求的静态资源,或动态运行后生成的资源,这些资源放置与本地文件系统路径下,此路径通常被称为DocRoot

      例如,默认根目录为/var/www/html且目录下有php/1.php,要是想要访问它,需要访问的路径是www.yyxx.com/php/1.php

   (5)构建响应报文

      封装响应报文,并指明其中的MIME类型

   (6)发送响应报文

      基于tcp协议的接受发送不同双信道,通过自己发送对方接受的信道发送响应报文

   (7)记录日志

      顾名思义,将用户所访问的资源的方法、内容、以及结果记录在服务器端

 

四、扩充补给:

  1.web服务器响应客户端的多种IO模型:

    服务器并发响应模型(Web I/O):

    单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应

    多进程I/O结构:并行启动多个进程,每个进程响应一个请求

    复用型I/O结构:一个进程响应n个请求

    复用的多进程I/O结构:启动多个m进程,每个进程响应n个请求

    这是因为有这么多种I/O响应机制,所以在不同工作模式下接受并响应客户端请求的方式是不尽相同的。

   2.获取资源的请求的方式:

    元数据:请求报文首部

    <method><URL><VERSION>

    Host:www.xxyy.com  请求的主机名称

    Connetion

   3.web服务器资源映射关系:

    a)DocRoot

    b)alias

    c)虚拟主机docroot

    d)用户家目录docroot

以上是关于http协议基础的主要内容,如果未能解决你的问题,请参考以下文章

HTTP协议基础

HTTP协议基础

R爬虫必备基础—HTTP协议

前端基础篇之HTTP协议

网络基础:HTTP协议 vs HTTPS协议 区别

HTTP(S)协议基础