HTTP

简答

1.OSI 七层模型指什么

  • 开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。它从低到高分别是:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。
HTTP_第1张图片
V8UA@VFR)%%EKCG4M6O@L{8.png
  • 物理层提供有关同步和全双工比特流在物理媒体上的传输手段,其典型的协议有RS 232C、RS 449/422/423、V.24和X.21、X.21bis等,物理层的媒体包括架空明线、平衡电缆、光纤、无线信道等。通信用的互连设备指DTE(Data Terminal Equipment)和DCE(Data Communications Equipment)间的互连设备。
  • 数据链路可以粗略地理解为数据通道。物理层要为终端设备间的数据通信提供[传输介质])及其连接。介质是长期的,连接是有生存期的。在连接生存期内,收发两端可以进行不等的一次或多次数据通信。每次通信都要经过建立通信联络和拆除通信联络两个过程。这种建立起来的数据收发关系就叫做数据链路。
  • 网络层(Network Layer)是OSI模型的第三层,它是OSI参考模型中最复杂的一层,也是通信子网的最高一层。它在下两层的基础上向资源子网提供服务。其主要任务是:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。该层控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。
  • 传输层是向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。该层常见的协议:TCP/IP中的TCP协议、Novell网络中的SPX协议和微软的NetBIOS/NetBEUI协议。传输层提供会话层和网络层之间的传输服务,这种服务从会话层获得数据,并在必要时,对数据进行分割。然后,传输层将数据传递到网络层,并确保数据能正确无误地传送到网络层。因此,传输层负责提供两节点之间数据的可靠传送,当两节点的联系确定之后,传输层则负责监督工作
  • 会话层(Session Layer)是OSI模型的第5层,是用户应用程序和网络之间的接口,主要任务是:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理
  • 表示层(Presentation Layer)是OSI模型的第六层,它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等。
  • 应用层(Application Layer)是OSI参考模型的最高层,它是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。上述的各种网络服务由该层的不同应用协议和程序完成,不同的网络操作系统之间在功能、界面、实现技术、对硬件的支持、安全可靠性以及具有的各种应用程序接口等各个方面的差异是很大的。


    HTTP_第2张图片
    A(ZMIL2M95B6F0`EQE5G_4D.png

2.HTTP 的工作原理是什么?

  • HTTP是一个无状态的协议。无状态是指客户机(Web浏览器)和服务器之间不需要建立持久的连接,这意味着当一个客户端向服务器端发出请求,然后服务器返回响应(response),连接就被关闭了,在服务器端不保留连接的有关信息.HTTP遵循请求(Request)/应答(Response)模型。客户机(浏览器)向服务器发送请求,服务器处理请求并返回适当的应答。所有HTTP连接都被构造成一套请求和应答。

![6S@VAUXCYHZ3EY~T3(]`A(G.png](http://upload-images.jianshu.io/upload_images/3361706-1175acd11bbd1275.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

  • 工作流程:
    1.地址解析
    从地址中分解出协议名、主机名、端口、对象路径等部分
    如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm
    协议名:http
    主机名:localhost.com
    端口:8080
    对象路径:/index.htm
    在这一步,需要域名系统DNS解析域名localhost.com,得主机的IP地址
    2.封装HTTP请求数据包
    把以上部分结合本机自己的信息,封装成一个HTTP请求数据包
    3.封装成TCP包,建立TCP连接(TCP的三次握手)
    在HTTP工作开始之前,客户机(Web浏览器)首先要通过网络与服务器建立连接,该连接是通过TCP来完成的,该协议与IP协议共同构建Internet,即著名的TCP/IP协议族,因此Internet又被称作是TCP/IP网络。HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。这里是8080端口
    4.客户机发送请求命令
    建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可内容。
    5.服务器响应
    服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
    6.服务器关闭TCP连接
    一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码 Connection:keep-alive, TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

3.URI 的格式是什么?常见的协议有哪些

  • URI(Uniform Resource Identifier)统一资源标志符
HTTP_第3张图片
$X1P8CU8HIU~XKS2JCBEPG0.png
  • 常见协议有 :ftp、mailto、telent、file等

![8NY]BZJE7372CQ10@B(1KNB.png](http://upload-images.jianshu.io/upload_images/3361706-f5cc42dbb3dff2c8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

4.4. HTTP 协议与服务器交互方法

![31V9XGW0(F%BUP22][email protected]](http://upload-images.jianshu.io/upload_images/3361706-c3d47d756ebdd8d3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

HTTP_第4张图片
Paste_Image.png
$)K8__8J4$LCS$2B(7RMTG8.png

HTTP_第5张图片
~`BNAME71PE_03RVOZ5PUZ3.png

5.状态码200,301, 304,403,404,500,503

分别代表什么意思。

  • 数字中的第一位指定了响应类别,后两位无分类,响应类别有以下五种。
HTTP_第6张图片
~M_)EC3)IU@I$_5RDYE7E(Q.png
HTTP_第7张图片
FICA2%@D~8NMM1FJD`XY2WT.png

6. HTTP报文

  • 用于HTTP协议交互的信息被称为HTTP报文,是由多行数据构成的字符串文本。

  • 一个HTTP报文由3部分组成,分别是:
    1.起始行
    2.首部
    3.主体

    HTTP/1.0 200 OK //起始行
    Content-type:text/plain //首部
    Content-length:19 //首部 
    Hi I'm a message! 主体
    
  • HTTP报文分为请求报文(request message)与响应报文(response message)

  • 请求格式的报文:

      
    

-响应报文的格式:

   
  

7.请求头的格式和作用是什么?给个范例截图说明

  • 格式:键值对
  • 作用:浏览器客户端告诉服务器发送请求的内容、客户端信息、响应内容和相关优先级等消息

![C~K5JNMSE4F]IARF4JNQJJ4.png](http://upload-images.jianshu.io/upload_images/3361706-171f925ba4b4d331.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

8.首部的格式和作用是什么?给个范例截图说明

  • 首部包括:普通首部(General)、请求首部(Request Headers)、响应首部(Response Headers)、实体首部(Entity header)。
HTTP_第8张图片
Paste_Image.png
  • 普通首部:请求报文和响应报文两方都会使用的首部。
HTTP_第9张图片
Paste_Image.png
  • 请求首部:从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息
HTTP_第10张图片
JA_NTC)NHX@JA_G7WU7RQUX.png
  • 响应首部:从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。

![U2NL]NH3G7ANP9E][email protected]](http://upload-images.jianshu.io/upload_images/3361706-fb8f54cc6dc62719.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

  • 实体首部:针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。

![]0]]2$6XCONJM)JRRTC)BWR.png](http://upload-images.jianshu.io/upload_images/3361706-77193b6e2ccb94fa.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

9. 主体的作用?给个范例

  • 主体是与客户端与服务器端通信所传输的数据。
  • 主体的作用:请求-主体携带发送给服务器端请求内容,响应主体携带返回给客户端的内容。
HTTP_第12张图片
1.png

10.简述浏览器缓存是如何控制的?

  • 缓存是指代理服务器或客户端本地磁盘内保存的资源副本。利用缓存可以减少对源服务器的访问,因此也就节省了通信流量和通信时间。
HTTP_第13张图片
Z)KD6~K{PU{GD8GW)~GVJOB.png
  • 客户端向服务器发送请求,如果缓存服务器中没有客户端需要的资源,则服务器在·内部寻找到资源后,返回给客户端,同时,将找到的资源放入缓存服务器中。当客户端再次向服务器发送请求时,再缓存服务器中寻找是否存有需要的资源,此时存在,则将资源返回给客户端。从而节省了通信流量和通信时间。
HTTP_第14张图片
V8~U227`QB3S0YL0OXA$V5B.png
  • 即便缓存服务器与缓存,也不能保证每次都返回相同资源的请求,这关系到被缓存资源的有效性问题
  • 浏览器缓存如果有效,就不比必向服务器再次请求相同的资源,可以直接从本地磁盘内读取。
  • 另外,当判定的缓存过期后,会向源服务器再次确认资源的有效性,若判断浏览器缓存失效,浏览器会再次请求新资源


    HTTP_第15张图片
    82Z3@KA)IC}Z7Y6M4UDZRPY.png

11.下图各个参数的意义。

HTTP_第16张图片
Paste_Image.png
  • General 通用首部
    Request URL: 请求的资源地址。
    Request Method: 请求的方式-PUT。
    Status Code: 状态码200,成功。
    Remote Address: 远程地址,此时为121.40.201.213:80。

  • Response Headers 响应头
    Connection: keep-alive: 使客户端到服务器端的连接持续有效。
    Content-Length: Content-Length首部告诉浏览器报文中实体主体的大小。此时为12。
    Content-Type: 决定如何显示返回的消息实体,此时是json格式。
    Date: 表示发送消息的时间。
    Server: 使用的服务器,此时为Nginx。
    X-Powered-By: 告诉HTTP客户端处理请求和响应的是什么引擎,此时为Express。

  • Request Headers 请求头
    Accept: 用户代理可处理的媒体类型。
    Accept-Encoding: 优先的内容编码。
    Accept-Language: 优先的语言(自然语言)。
    Connection: keep-alive: 使客户端到服务器端的连接持续有效。
    Content-Length: Content-Length首部告诉浏览器报文中实体主体的大小。此时为56。
    Content-Type: 决定如何显示返回的消息实体,此时设置编码为UTF-8。
    Cookie: 浏览器缓存。
    Host: 使用的主机。
    Origin: 说明最初的请求时从哪里发出。
    Referer: 告诉浏览器页面是从哪个页面连接过来。
    User-Agent: HTTP客户端程序的信息。
    X-Requested-With: 在服务器段判断request来自Ajax请求(异步)还是传统请求(同步)。此时为Ajax请求(异步)

  • 参考资料:图解HTTP,百度百科,HTTP深入浅出 http请求-尹京昱-cnblog,URL和URI的区别.

你可能感兴趣的:(HTTP)