1. OSI 七层模型指什么
OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型 ,是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了7层。每一层都有相关、相对应的物理设备,比如路由器,交换机。
OSI 七层模型是一种框架性的设计方法 ,建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题,其最主要的功能使就是帮助不同类型的主机实现数据传输。
它的最大优点是将服务、接口和协议这三个概念明确地区分开来,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。
数据链路层:定义了如何让格式化数据以进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。
网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据)UDP( 用户数据报协议 ,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。
会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)
表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
应用层: 是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
2. HTTP 的工作原理是什么?
以下是HTTP请求/响应的步骤:
客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。释放连接TCP连接
Web服务器主动关闭TCP套接字,释放TCP连接;客户端被动关闭TCP套接字,释放TCP连接。客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
3. URI 的格式是什么?常见的协议有哪些
http://mail.163.com/index.html
- http://:这个是协议,也就是HTTP超文本传输协议,也就是网页在网上传输的协议。
- mail:这个是服务器名,代表着是一个邮箱服务器,所以是mail.
- 163.com:这个是域名,是用来定位网站的独一无二的名字。
- mail.163.com:这个是网站名,由服务器名+域名组成。
- /:这个是根目录,也就是说,通过网站名找到服务器,然后在服务器存放网页的根目录
- index.html:这个是根目录下的默认网页(当然,163的默认网页是不是这个我不知道,只是大部分的默认网页,都是index.html)
-
http://mail.163.com/index.html
:这个叫做URL,统一资源定位符,全球性地址,用于定位网上的资源。
常见的协议有http,https,ftp,mailto,telnet、file
常见协议参考
4. HTTP 协议有几种和服务器交互的方法
HTTP最大的作用就是客户端发送请求,服务器给出响应,客户端想服务器发送请求的方式有很多
方法 | 作用 |
---|---|
GET | 是最常用的方法,通常用于请求服务器发送某个资源我们平时在浏览器输入网页地址,就是给服务器发送了一个get请求,希望得到这个网页 |
HEAD | 和GET类似,但是在服务器的响应中没有资源的内容,只有资源的一些基本信息,主要用于 1. 在不获取资源的情况下获取资源信息(类型、大小等2. 通过状态码产看资源是否存在3. 通过查看首部,测试资源是否被修改了 |
PUT | 和GET从服务器获取资源相反,PUT用于想服务器写入资源。PUT的语义就是让服务器用请求的主体部分创建一个请求URL命名的文档,如果存在就替换。当然处于安全原因,并不是所有的服务器都实现,当然最近大热的RESTful API使它有了用武之地 |
POST | 用于想服务器发送数据,通常用来支持HTML的表单(input、select、textarea),表单中的数据会被发送到服务器 |
TRACE | 客户端发送一个请求的时候,这个请求可能会穿过防火墙、代理、网关和一些其它应用程序,没个中间节点都可能修改HTTP请求,TRACE方法允许客户端在最终请求发往服务器的时候,看看它变成了什么样子TRACE请求会在目的服务器端发送一个“闭环”诊断,行程最后一站服务器会弹回一条TRACE响应,并在响应主题中携带它收到的原始请求报文 |
DELETE | 用于要求服务器删除请求的URL,和PUT一样,服务器可能会不支持 |
OPTIONS | 用于请求 web服务器告知其支持的各种功能 |
5. 状态码200,301,304,403,404,500,503分别代表什么意思
Status Code
完整的 HTTP 1.1规范说明书来自于RFC 2616,HTTP 1.1的状态码被标记为新特性,用来表示请求的结果,状态码被分为五大类:
- 100-199 用于指定客户端应相应的某些动作。
- 200-299 用于表示请求成功。
- 300-399 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息。
- 400-499 用于指出客户端的错误。
- 500-599 用于支持服务器错误。
状态代码 | 状态信息 | 含义 |
---|---|---|
200 | OK | 一切正常,对GET和POST请求的应答文档跟在后面。 |
301 | Moved Permanently | 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。 |
304 | Not Modified | 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告 诉客户,原来缓冲的文档还可以继续使用。 |
403 | Forbidden | 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。 |
404 | Not Found | 无法找到指定位置的资源。这也是一个常用的应答。 |
500 | Internal Server Error | 服务器遇到了意料不到的情况,不能完成客户的请求。 |
503 | Service Unavailable | 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个 Retry-After头。 |
6. 报文有哪几部分组成?
1、请求报文的组成
起始行(请求方法,URI及协议版本)
首部(请求首部, 通用首部 ,实体首部及其他)
空行
报文主体;2、响应报文的组成
起始行(版本协议 ,状态码, 状态码对应的短语解释)
首部(响应首部,通用首部,实体首部及其他)
空行
报文主体。
HTTP/1.0 200 OK
content-type: text/plain
content-length: 19
Hi, I'm a message
起始行和首部就是由行分隔的ASCII文本,主题是一个可选的数据块,可能是文本、二进制或者为空
7. 请求头的格式和作用是什么?给个范例截图说明
`
8. 首部的格式和作用是什么?给个范例截图说明
9. 主体的作用是什么?给个范例
主体就是服务端返回的页面代码等信息
10. 简述浏览器缓存是如何控制的
注:除了Last-Modified和Etag,上面没有把http1.0的产物---Expires和Pragma及http1.1的产物--Cache-Control列出来 。 关于Last-Modified、Etag、Expires及Cache-Control 可见下图:
具体可详见:HTTP缓存控制小结
文章提到,当同时存在Pragma 、Cache-Control、 Expires时, 优先级从高到低分别是 Pragma -> Cache-Control -> Expires
其他缓存详细介绍可见:腾讯web前端团队博客 或者博客园的这篇文章