HTTP相关知识

2018-08-04  本文已影响0人  LouisJ

1.OSI 七层模型指什么?

七层模型,亦称OSI(Open System Interconnection)参考模型,是参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。
它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议。

规定通信设备的机械的、电气的、功能的和过程的特性,用以建立、维护和拆除物理链路连接。具体地讲,机械 特性规定了网络连接时所需接插件的规格尺寸、引脚数量和排列情况等;电气特性规定了在物理连接上传输bit流时线路上信号电平的大小、阻抗匹配、传输速率 距离限制等;功能特性是指对各个信号先分配确切的信号含义,即定义了DTE和DCE之间各个线路的功能;规程特性定义了利用信号线进行bit流传输的一组 操作规程,是指在物理连接的建立、维护、交换信息是,DTE和DCE双放在各电路上的动作系列。在这一层,数据的单位称为比特(bit)。属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。

在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。在这一层,数据的单位称为帧(frame)。数据链路层协议的代表包括:SDLC、HDLC、PPP、STP、帧中继等。

在 计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。网络层将数据链路层提供的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息- -源站点和目的站点地址的网络地址。如 果你在谈论一个IP地址,那么你是在处理第3层的问题,这是“数据包”问题,而不是第2层的“帧”。IP是第3层问题的一部分,此外还有一些路由协议和地 址解析协议(ARP)。有关路由的一切事情都在这第3层处理。地址解析和路由是3层的重要目的。网络层还可以实现拥塞控制、网际互连等功能。在这一层,数据的单位称为数据包(packet)。网络层协议的代表包括:IP、IPX、RIP、OSPF等。

第4层的数据单元也称作数据包(packets)。但是,当你谈论TCP等具体的协议时又有特殊的叫法,TCP的数据单元称为段 (segments)而UDP协议的数据单元称为“数据报(datagrams)”。这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的 数据包和其它在传输过程中可能发生的危险。第4层为上层提供端到端(最终用户到最终用户)的透明的、可靠的数据传输服务。所为透明的传输是指在通信过程中 传输层对上层屏蔽了通信传输系统的具体细节。传输层协议的代表包括:TCP、UDP、SPX等。

这一层也可以称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,而是统称为报文。会话层不参与具体的传输,它提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制。如服务器验证用户登录便是由会话层完成的。

这一层主要解决拥护信息的语法表示问题。它将欲交换的数据从适合于某一用户的抽象语法,转换为适合于OSI系统内部使用的传送语法。即提供格式化的表示和转换数据服务。数据的压缩和解压缩, 加密和解密等工作都由表示层负责。

应用层为操作系统或网络应用程序提供访问网络服务的接口。应用层协议的代表包括:Telnet、FTP、HTTP、SNMP等。

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

(1)客户端与服务器需要建立连接。只要点击某个超级链接,HTTP就开始工作了。

(2)建立连接后,客户端向服务器发送一个请求,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。

(3)服务器街道请求后,基于相应的响应信息,其格式为一个状态航,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

(4)客户端接收到服务器返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

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

通用的URL由9部分组成

<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<hash>

常见协议

4.HTTP 协议有几种和服务器交互的方法?

GET

GET是最常用的方法,通常用于请求服务器发送某个资源

我们平时在浏览器输入网页地址,就是给服务器发送了一个get请求,希望得到这个网页

HEAD

HEAD方法和GET类似,但是在服务器的响应中没有资源的内容,只有资源的一些基本信息。也就是说,我并不是需要服务器返回这个页面给我,而是查看下这页面的相关信息,例如文件类型,文件大小等等。主要用于

  1. 在不获取资源的情况下获取资源信息(类型、大小等)

  2. 通过状态码产看资源是否存在

  3. 通过查看首部,测试资源是否被修改了

PUT

和GET从服务器获取资源相反,PUT用于想服务器写入资源。PUT的语义就是让服务器用请求的主体部分创建一个请求URL命名的文档,如果存在就替换

当然处于安全原因,并不是所有的服务器都实现,当然最近大热的RESTful API使它有了用武之地

POST

POST用于想服务器发送数据,通常用来支持HTML的表单(input、select、textarea),表单中的数据会被发送到服务器

TRACE

客户端发送一个请求的时候,这个请求可能会穿过防火墙、代理、网关和一些其它应用程序,没个中间节点都可能修改HTTP请求,TRACE方法允许客户端在最终请求发往服务器的时候,看看它变成了什么样子

TRACE请求会在目的服务器端发送一个“闭环”诊断,行程最后一站服务器会弹回一条TRACE响应,并在响应主题中携带它收到的原始请求报文

DELETE

DELETE方法用于要求服务器删除请求的URL,和PUT一样,服务器可能会不支持

OPTIONS

OPTIONS方法用于请求 web服务器告知其支持的各种功能

5.状态码200,301, 304,403,404,500,503分别代表什么意思?

6.报文有哪几部分组成?

1.对报文进行描述的起始行 —— start line
2.包含属性的首部块 —— header
3.可选的包含数据的主体部分 —— body

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

image.png

作用:描述请求,说明请求的文件类型、语言等等

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

首部 描述
Connection 客户端和服务器是否保持连接。因为HTTP是一种无状态的连接,也就是说,连接一次,发送完数据就要断开。不能像QQ聊天那样,随时点开就能聊而不是每次说话前要点一次连接。在HTTP/1.1,为了优化,加入了connection,有keep-alive这个属性,也就是说,完成了数据的传输,TCP连接断开,但相连的链路不要断开
Date 日期,报文创建时间
Update 给出了发送端可能想要升级使用新版本或协议。例如想使用websocket的时候,会有upgrade这一项,写明websocket
Via 显示了报文经过的中间节点(代理、网关)
Trailer 如果报文采用分块传输编码方式,可以利用这个首部列出位于报文trailer部分的首部集合
Trailer-Encoding 告诉接收端对报文采用什么编码格式
Cache-Control 随报文传送缓存指示
Pragma 早期的随报文传送指示方式
首部 描述
Client-IP 客户端IP
From 客户端邮件地址
Host 接收请求的服务器的主机名和端口号
Referer 提供了包含当前请求URI的文档的URL,告诉服务器自己来源。例如,我通过A网站上的一个链接点开了B网站,那么在B网站的请求中的referer就会记录A网站的url
User—Agent 发起请求的客户端应用程序
Accept 告诉服务器能够发送那些媒体类型
Accept-Charset 告诉服务器能够发送那些字符集
Accept-Encoding 告诉服务器能够发送那些编码
Accept-Language 告诉服务器能够发送那些语言
上面的几个accept都是为了向服务器说明客户端可以接受哪些格式的资源,这在一个网页有多版本的情况下适用,确保服务器发送的资源客户端是可以支持的
Expect 允许客户端列出请求所要求的服务器行为。虽然可以发送这种期望,但是服务器做不做是另一回事
If-Match 如果ETag和文档当前ETag匹配,就获取文档。
If-Modified-Since 除非在某个指定日期之后修改过,否则限制这个请求。这个是根据文件的修改时间来控制缓存
If-None-Match 如果ETag和当前文档ETag不符合,获取资源。这里的Etag生成手段有很多种,哈希就是一种,哈希会将文档通过压缩生成一串码,在访问服务器的资源A时,会比较本地的资源和服务器的资源的哈希,来确定是否要发送新的资源给客户端
If-Range 允许对文档否个范围内的条件请求
If-Unmodified-Since 在某个指定日期之后没有修改过,否则现在请求
Cookie 客户端字符串
首部 描述
Age 响应持续时间
Server 服务器应用软件名称和版本
Allow 列出了可用的请求方法
Location 告诉客户端实际地址在哪里,用于定向。用于301、302重定向的时候,告诉客户端往哪里跳转
Content-Base 解析主体中相对URL的基础URL
Content-Encoding 主体编码格式
Content-Language 解析主体时适用的语言
Content-Length 主体的长度或尺寸。就是我这个资源占多少容量
Content-Location 资源实际位置
Content-MD5 主体的MD5校验和
Content-Range 在整个资源中此实体部分的字节范围
Content-Type 主体的MIME
ETag 主体的实体标记。相当于当客户端接受页面时,服务器根据一定的算法,由页面生成一个ETag码,然后跟页面一起缓存起来,当下次访问时,会跟服务器对比这个ETag,来决定下次的页面加载是用缓存还是重新加载
Expires 过期时间。这个有缺陷,比较的时间是采用本地时间,如果本地时间不准或者时区问题,那么可能对比出问题
Last-Modified 实体最后一次修改时间

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

主体就是服务器返回给客户端的资源


image.png

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

11.下图各个参数是什么意思?

image.png
上一篇下一篇

猜你喜欢

热点阅读