问答
1.OSI 七层模型指什么
七层模型,也就是OSI(Open System Interconnection),即开放式系统互联通信模型
。
它是国际标准化组织(ISO)
制定的一个用于计算机或通信系统间互联的标准体系
,一般称为OSI参考模型或七层模型。
它是一个七层的、抽象的模型
,不仅包括一系列抽象的概念
,也包括具体的协议
。
从低到高:
物理层 -> 数据链路层 -> 网络层 -> 传输层 -> 会话层 -> 表示层 -> 应用层
2.HTTP 的工作原理是什么?
HTTP协议采用请求/响应模型,即客户端向服务器发送一个请求报文,服务器以一个状态作为响应。
工作原理:
①客户端连接到web服务器
一个HTTP客户端,通常是浏览器,与web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。
②客户端向服务器发起HTTP请求
通过已建立的TCP 连接,客户端向服务器发送一个请求报文;一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
③服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源副本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
④服务器断开TCP 连接
Web服务器主动关闭TCP套接字,断开TCP连接;客户端被动关闭TCP套接字,断开TCP连接。
一般情况下,一旦web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码Connection:keep-alive,TCP连接发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需要的时间,还节约了网络带宽。
⑤客户端浏览器解析HTML内容
客户端浏览器先解析状态行,查看表明请求是否是成功的状态代码。然后解析每一个响应头,响应头告知一下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
参考文章
3.URI 的格式是什么?常见的协议有哪些
常见的协议:HTTP(HyperText Transfer Protocol 超文本传输协议)、HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer http的安全版)、FTP(文件传输协议)、mailto(电子邮件协议)、file(本地文件传输协议)
4.HTTP 协议有几种和服务器交互的方法
根据HTTP标准,HTTP请求可以使用多种请求方法,来以不同方式操作指定资源。
①GET:向服务器请求资源。
GET方法用来请求访问已被URI识别的资源。指定的资源经服务器解析后,返回响应的内容。
②POST: 向服务器发送数据,返回服务器端接收数据后传回的结果
③HEAD:该方法和GET类似,但是服务器的响应中没有资源的内容,只有资源的一些基本信息,主要用于在不获取资源的情况下获取资源的信息(类型、大小等)。通过状态码查看资源是否存在,通过查看首部,可以测试资源是否被修改了。
④PUT:发送并且改写服务器端内容,请求会将文件的内容保存到指定的URI中,一般来说,服务器为安全起见,不会使用该方法。
⑤DELETE:用于要求服务器删除请求的URL,服务器基本上不会支持这个功能。
⑥CONNECT:要求用隧道协议连接代理,隧道可按要求建立起一条与其他服务器的通信线路,并使用一些加密方式,让客户端与服务器进行安全的通信
⑦OPTIONS: 允许客户端查看服务器的功能
⑧TRACE:客户端发送一个请求的时候,这个请求可能会穿过防火墙、代理、网管和一些其他的应用程序,每个中间节点都可能修改HTTP请求,TRACE方法允许客户端在最终请求发往服务器的时候,看看它变成了什么样子。
5. 状态码200,301, 304,403,404,500,503分别代表什么意思
2xx (成功):表示成功处理了请求
200:OK,服务器收到请求,并正常返回用户所要求的资源
3xx (重定向):表示要完成请求,需要进一步操作
301:Moved Prmanently,资源永久重定向,表示请求的资源已被分配了新的URI,浏览器会自动连接到新的URL。比如访问mp3.baidu.com会跳转到music.baidu.com。区分与302的差异,302是临时重定向
304:自从上次请求后,请求的网页未修改过,从本地缓存中读取。
4xx(请求错误):这些状态代码表示请求可能出错,妨碍了服务器的处理
403:forbidden,表示请求被服务器拒绝,客户端可能不具备访问该资源的权限信息。
404:客户端输入有误或者资源已被删除,找不到资源,当服务器拒绝用户访问时,也可能出现404。
5xx(服务器错误) :这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。
500:Internal Server Error,服务器错误,表示可能服务器在执行请求时发生了错误。
503:Service Unavailable,服务器处于超负荷或者正在进行停机维护的状态,无法处理请求。
6. 报文有哪几部分组成
用于HTTP协议交互的信息被称为HTTP报文;
HTTP报文是简单的格式化数据块,数据块以文本形式的元信息
开头,描述报文的内容及含义,后面跟着可选的数据部分;
每个报文都包含一条来自客户端的请求或者一条来自服务器的响应。
报文是由3部分组成:
①对报文进行描述的起始行 —— start line
②包含属性的首部块 —— header
③可选的包含数据的主体部分 —— body
报文都可以分为两类:请求报文(request message)和响应报文(response message)。请求报文会向 Web 服务器请求一个动作。响应报文会将请求的结果返回客户端。请求与响应报文的基本报文结构相同。
请求报文详图如下:
响应报文详解如下:
7.请求头的格式和作用是什么?给个范例截图说明
格式:键值对;
作用:
Accept:告诉web服务器自己接受什么介质类型.
Accept-Encoding:浏览器声明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法。
Accept-Language:浏览器声明自己接收的语言。
Cache-control:浏览器的缓存方法,no-cache(不要缓存的实体,要求现在从web服务器去取),max-age(只接受age值小于max-age值,并且没有过期的对象)。
Connection:告诉web服务器或者代理服务器,在完成本次请求的响应后,断开连接,不要等待本次连接的后续请求了。keep-alive(连续保持着,在等待本次连接的后续请求),close(请求已关闭)。
Cookie:客户端传递的字符串,可能和一些登陆信息有关。
Host:客户端指定自己想访问的WEB服务器的域名/IP地址和端口号。
User-Agent: 浏览器表明自己的身份(是哪种浏览器)。
Referer : 提供了包含当前请求URI的文档的URL,告诉服务器自己来源。
8.首部的格式和作用是什么?给个范例截图说明
格式:键值对;
作用:
Request URL:请求文件的路径
Request Method : 请求文件的方法
Status Code : 状态码以及状态信息
Remote Address:服务器地址
9.主体的作用是什么?给个范例
主体就是客户端发给服务器或者服务器发给客户端的主要内容,服务器发给客户端的用于向用户呈现的相应信息,而客户端发给服务器的主要用于向服务器传送除协议相关以外的信息。
10.简述浏览器缓存是如何控制的
缓存机制1
缓存机制2
缓存机制3
缓存行为主要由缓存策略决定,而缓存策略由内容拥有者设置。这些策略主要通过特定的HTTP头部来清晰地表达。
当一个用户发起一个静态资源请求的时候,浏览器会通过以下几步来获取资源:
- 本地缓存阶段:先在本地查找该资源,如果有发现该资源,而且该资源还没有过期,就使用这一个资源,完全不会发送http请求到服务器;
- 协商缓存阶段:如果在本地缓存找到对应的资源,但是不知道该资源是否过期或者已经过期,则发一个http请求到服务器,然后服务器判断这个请求,如果请求的资源在服务器上没有改动过,则返回304,让浏览器使用本地找到的那个资源;
-
缓存失败阶段:当服务器发现请求的资源已经修改过,或者这是一个新的请求(在本来没有找到资源),服务器则返回该资源的数据,并且返回200, 当然这个是指找到资源的情况下,如果服务器上没有这个资源,则返回404。
Paste_Image.png
11.下图各个参数是什么意思
General(通用首部)
request URL:请求资源的URL路径
request method:请求使用的方法
status code:响应状态码及描述
emote address:请求的服务器的IP及端口
response headers(响应首部)
connection:keep-alive 响应的连接状态为保持链路连接
Content-Length:12 响应内容长度(字节)
Content-Type:json 响应体的内容格式,这里是json格式
date:该响应报文创建的日期和时间(是服务器时间)
server:服务器版本信息
x-powered-by:服务器使用的技术
request headers(请求首部)
accept:客户端能处理的响应内容格式,这里是所有格式
Accept-Encoding:客户端能处理的响应内容编码格式
Accept-Language:客户端能处理的语言种类和优先级,默认权重值q为1,这里优先考虑zh-CN
connection:keep-alive 请求的连接状态为保持链路连接
content-length:56 请求体内容长度(字节),这里为56个字节
Content-Type:请求体的内容格式
cookie:缓存信息
Host:表示服务器的域名以及服务器所监听的端口号。如果所请求的端口是对应的服务的标准端口(80),则端口号可以省略。
Origin:告知服务器请求的源地址。
Referer:告知服务器请求的原始资源的URI。
User-Agent:客户端使用的操作系统和浏览器的名称和版本。
X-Requsted-With:xmlhttprequest 表示使用的是Ajax异步请求。
Form Data:向服务器提交的表单数据。
HTTP协议请求-Kencery-cnblog5
HTTP深入浅出 http请求-尹京昱-cnblog3
URI vs URL