1.OSI 七层模型指什么
OSI(Open System Interconnection,开放系统互连),七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义,它把网络分为了7层,这七层由下往上分别是:
- 1.物理层:机械、电子、定时接口通信信道上的原始比特流传输。
- 2.数据链路层:物理寻址,同时将比特流变成逻辑传输线路。
- 3.网络层:控制网络的运行,如逻辑编址,分组传输,路由选择。
- 4.传输层:接受上一层的数据,在必要的时候把数据进行分割,并将这些数据交给网络层,且保证这些数据有效到达对端。
- 5.会话层:不同机器上的用户之间建立及管理回话。
- 6.表示层:信息的语法语义以及他们的关系,如加密解密、转换翻译、压缩解压缩。、
- 7.应用层:各种应用程序协议,如HTTP、FTP、SMTP等。
2.HTTP 的工作原理是什么?
HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
具体步骤大致如下:
1.地址解析:
通过DNS服务器解析出域名所对应的服务器的IP地址。
2.封装HTTP请求数据包:
将以上部分结合本机自己的信息,封装成一个HTTP请求数据包。
3.封装成TCP,建立TCP连接(TCP的三次握手):
在HTTP工作开始之前,客户机首先要通过网络与服务器建立连接 ,该连接是通过TCP完成的,一般TCP连接的端口号是80。
4.客户端发送请求命令:
建立连接后,客户端发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,以及MIME信息包括服务器信息、实体信息和可能的内容。
5.服务器响应:
服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。实体信息是服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。
6.服务器关闭TCP连接:
一般情况下,一旦web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码Connection:keep-alive
,TCP连接发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需要的时间,还节约了网络带宽。
参考文章
3.URI 的格式是什么?常见的协议有哪些?
URI( Uniform Resource Identifier)统一资源标识符。
常见协议:
IP(Internet Protocol):网络协议
HTTP (HyperText Transfer Protocol):超文本传输协议
HTTPS(Hypertext Transport Protocol Server):超文本传输安全协议
TCP(Transfer Control Protocol):传输控制协议
UDP(User Datagram Protocol):用户数据包协议文
ARP(Address Resolution Protocol):地址解析协议
FTP(File Transfer Protocol):文件传输协议
SMTP(Simple Mail Transfer Protocol):简单邮件传输协议
SFTP(Simple File Transfer Protocol ):简单文件传输协议
4.HTTP 协议有几种和服务器交互的方法
-
GET
get是最常用的方法,通常用于请求服务器发送某个资源。我们平时在浏览器输入网页地址,就是给服务器发送了一个get请求,希望得到这个网页。 -
POST
POST用于向服务器发送数据,通常用来支持HTML的表单,表单中的数据会被发送到服务器。 - **PUT **
和GET从服务器获取资源相反,PUT用于向服务器写入资源。 -
HEAD
HEAD和GET类似,但是在服务器的响应中没有资源的内容,只有资源的一部分信息,主要用于:1.在不获取资源的情况下获取资源信息(类型、大小等)2.通过状态码查看资源是否存在3.通过查看首部,测试资源是否被修改了 -
TRACE
客户端发送一个请求的时候,这个请求可能会穿过防火墙、代理、网关和一些其它应用程序,每个中间节点都可能修改HTTP请求,TRACE方法允许客户端在最终请求发往服务器的时候,看看它变成了什么样子。TRACE请求会在目的服务器端发送一个“闭环”诊断,形成最后一站服务器会弹回一条TRACE响应。 -
DELETE
DELETE方法用于要求服务器删除请求的URL,和PUT一样,服务器可能会不支持。 -
OPTIONS
OPTIONS方法用于请求web服务器告知其支持的各种功能。
5.状态码200,301, 304,403,404,500,503分别代表什么意思 (难度****)
1~199系列 信息 接受到请求,继续处理
200~299系列 表示成功 操作成功的接受,理解和接受
300~399系列 表示重定向 为了完成请求,必须采取进一步措施
400~499系列 表示客户端错误 请求的语法有错误或不能满足客户端需求
500~599系列 表示服务端错误 服务器无法完成明显有效的请求常用的statu code
200 服务器成功返回请求的内容
301 永久重定向,所请求资源永久性移动到新位置,下次如果再有这个资源的请求都应该使用本响应返回的若干个URI之一
304 所请求内容无变化,直接在本地缓存中查找所请求的内容
403 服务器理解该请求,但拒绝这次请求,一般是无权限访问
404 请求内容服务器端未找到
500 服务器遇到意外错误,无法完成客户请求503 临时维护或服务器超载,无法处理请求
6.报文有哪几部分组成? (可选 )
报文大致有三部分组成
起始行 start line: 对报文的关键信息进行简单描述(协议版本,请求方式,状态码)
首部 header: 包含属性
主体 body: 数据信息(有点http请求可能不包含这一部分)
HTTP报文分为请求(Requests)报文和响应(response)报文。
- 请求报文格式:
<method> <request-URL> <version>
<headers>
<entity-body>
- 响应报文格式
<version> <status><reason-phrase>
<header>
<entity-body>
7.请求头的格式和作用是什么?给个范例截图说明 (可选)
- 格式:键值对
-
作用:浏览器客户端告诉服务器发送请求的内容、客户端信息、响应内容和相关优先级等消息。
8.首部的格式和作用是什么?给个范例截图说明 (可选 )
格式:键值对
首部包括:普通首部(General),请求首部(Request Headers),响应首部(Response Headers),实体首部(Entity header)。
普通首部(General):请求报文和响应报文都会使用的首部
请求首部(Request headers):发送请求报文时使用的首部,补充了请求的附加内容、客户端信息、响应内容相关优先级等信息
响应首部(response headers):从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
实体首部:针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息。
9.主体的作用是什么?给个范例(可选)
主体是与客户端与服务器端通信所传输的数据。请求主体携带发送给服务器端请求内容,响应主体携带返回给客户端的内容。
10.简述浏览器缓存是如何控制的
作用:缓存是指代理服务器或客户端本地磁盘内保存的资源副本。利用缓存可以减少对源服务器的访问,因此也就节省了通信流量和通信时间。
实现方式:客户端向服务器发送请求,如果缓存服务器中没有客户端需要的资源,则服务器在·内部寻找到资源后,返回给客户端,同时,将找到的资源放入缓存服务器中。当客户端再次向服务器发送请求时,再缓存服务器中寻找是否存有需要的资源,此时存在,则将资源返回给客户端。
11.下图各个参数是什么意思
General 通用首部
- Request URL: 请求的资源地址。
- Request Method: 请求的方式-PUT。
- Status Code: 状态码200,成功。
- Remote Address: 请求的服务器的IP地址和端口号,此时为121.40.201.213:80。
Response Headers 响应头
- Connection: keep-alive: 使客户端到服务器端的连接持续有效。
- Content-Length: 响应内容长度,此时为12字节。
- Content-Type: 决定如何显示返回的消息实体,此时是json格式。
- Date: 创建HTTP报文的时间和日期。
- Server: 使用的服务器,此时为Nginx。
- X-Powered-By: 告诉HTTP客户端处理请求和响应的是什么引擎,此时为Express。
Request Headers 请求头
- Accept: 用户代理可处理的媒体类型。
- Accept-Encoding: 优先的内容编码。
- Accept-Language: 优先的语言。
- Connection: keep-alive: 使客户端到服务器端的连接持续有效。
- Content-Length: 请求体内容长度(字节),这里为56个字节。
- Content-Type: 决定如何显示返回的消息实体,此时设置编码为UTF-8。
- Cookie: 浏览器缓存。
- Host: 使用的主机。
- Origin: 说明最初的请求时从哪里发出。
- Referer: 告诉浏览器页面是从哪个页面连接过来。
- User-Agent: HTTP客户端程序的信息。
- X-Requested-With: 在服务器段判断request来自Ajax请求(异步)还是传统请求(同步)。此时为Ajax请求(异步)。