1.OSI 七层模型指什么 (难度***)
OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 。
物理层
OSI模型的第一层。
物理层的主要功能是:利用传输介质为数据链路层提供物理连接,将数据最终编码为用0、1标识的比特流
数据链路层
数据链路层(Data Link Layer)OSI模型的第二层
该层的主要功能是:接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层;并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。
网络层
OSI模型的第三层
数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备
传输层
OSI模型的第4层
该层的主要任务是:传输层的作用是向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。
该层常见的协议:TCP/IP中的TCP协议、Novell网络中的SPX协议和微软的NetBIOS/NetBEUI协议。
会话层
OSI模型的第5层,是用户应用程序和网络之间的接口
主要任务是:向两个实体的表示层提供建立和使用连接的方法。将不同实体之间的表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。
表示层
是OSI模型的第六层,它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。
其主要功能是“处理用户信息的表示问题,如编码、数据格式转换和加密解密”等。
应用层
是OSI参考模型的最高层,它是计算机用户,以及各种应用程序和网络之间的接口,其功能是直接向用户提供服务,完成用户希望在网络上完成的各种工作。
应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。
小结:
- 下面4层(物理层、数据链路层、网络层和传输层):提供数据传输和交换功能,以节点到节点之间的通信为主;
- 第4层:作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;
- 上3层(会话层、表示层和应用层):提供用户与应用程序之间的信息和数据处理功能为主。
2.HTTP 的工作原理是什么? (难度***)
1.地址解析:通过DNS服务器解析出域名所对应的服务器的IP地址
如用客户端浏览器请求这个页面:http://localhost.com:8080/index.htm
从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:
协议名:http
主机名:localhost.com
端口:8080
对象路径:/index.htm
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连接发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需要的时间,还节约了网络带宽。
参考文章:http://blog.csdn.net/hguisu/article/details/8680808
3.URI 的格式是什么?常见的协议有哪些 (难度***)
常见协议:
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 协议有几种和服务器交互的方法 (难度***)
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
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 ,OK,服务器成功返回请求的内容
301 , Moved Permanently,永久重定向,所请求资源永久性移动到新位置,下次如果再有这个资源的请求都应该使用本响应返回的若干个URI之一
比如:
百度音乐几年前的域名是mp3.baidu.com
.如今的域名是music.baidu.com
.现在如果直接在地址栏输入mp3.baidu.com
就会返回301这个状态码服务器会返回新的url`music.baidu.com 下次客户端会按照新的url去访问
304 ,Not Modified,所请求内容无变化,直接在本地缓存中查找所请求的内容
403 ,Forbidden ,服务器理解该请求,但拒绝这次请求,一般是无权限访问
404 ,Not Found ,请求内容服务器端未找到
500 ,Internal Server Error,服务器遇到意外错误,无法完成客户请求
503,Service Unavailable, 临时维护或服务器超载,无法处理请求
参考:http://caibaojian.com/http.html
6.报文有哪几部分组成? (可选 难度****)
HTTP报文分为请求(Requests)报文和响应(response)报文
报文大致有三部分组成
(1)起始行 start line: 对报文的关键信息进行简单描述(协议版本,请求方式,状态码)
(2)首部 header:包含属性()
(3)主体 body: 数据信息(有些http请求可能不包含这一部分)
示例:
HTTP/1.0 200 OK //起始行
Content-type:text/plain //首部
Content-length:19 //首部
Hi I'm a message! //主体
请求报文与响应报文的格式
请求报文的格式:
<method> <request-UTL> <version>
<headers>
<entity-body>响应报文的格式:
<version> <status><reason-phrase>
<header>
<entity-body>
注意到:请求报文与响应报文只是起始行不同
参考:http://www.cnblogs.com/kissdodog/archive/2013/04/01/2993228.html
7.请求头的格式和作用是什么?给个范例截图说明 (可选 难度****)
格式:键值对
作用:浏览器客户端告诉服务器发送请求的内容、客户端信息、响应内容和相关优先级等消息。
8.首部的格式和作用是什么?给个范例截图说明 (可选 难度****)
- 首部包括:普通首部(General),请求首部(Request Headers),响应首部(Response Headers),实体首部(Entity header)
9.主体的作用是什么?给个范例(可选 截图说明难度****)
主体是与客户端与服务器端通信所传输的数据。请求主体携带发送给服务器端请求内容,响应主体携带返回给客户端的内容
10.简述浏览器缓存是如何控制的(可选 难度*****)
浏览器第一次请求过程
浏览器第二次请求过程
11.下图各个参数是什么意思(可选 难度*****)
图中内容包含通用首部(General)、请求首部(Request Headers)、响应首部(Response Headers)
Genneral(通用首部)
request URL:请求资源的URL路径
request method:请求使用的方法
status code:响应状态码及描述
remote 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:告知服务器请求的主机地址
Origin:告知服务器请求的源地址。
Referer:告知服务器请求的原始资源的URI。
User-Agent:客户端使用的操作系统和浏览器的名称和版本
X-Requsted-With:xmlhttprequest 表示使用的是Ajax异步请求。
Form Data:向服务器提交的表单数据