问答:
1.OSI 七层模型指什么 (难度***)
物理层:物理层考虑的是怎样在各种连接计算机的媒体上传输数据比特流,确保到了数据链路层感受不到各种通信手段的差异。这一层传输比特流(1000100111这样)。
数据链路层:这一层是在物理层和网络层之间,作用也是让这两层通信。数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层
网络层:网络层提供的是数据报。网络层设计的简单灵活,通过虚拟IP网络让位于不同地理位置的主机之间建立通信,网络层以上采用的都是IP地址而非物理地址
运输层:运输层为不同主机上的进程提供端到端的逻辑通信(所谓逻辑通信是好像直接建立了端到端的通信,但事实上的物理连接不是这样)功能。运输层使用协议端口号(像http协议的80端口)来找到不同端口,后续根据协议交付目的进程。TCP协议、UDP协议就是这一层的协议,不同协议提供不同的服务模型
会话层:会话层的功能是建立两个节点之间的连接,确定是双工工作(每一方同时发送和接收)还是半双工工作(轮流发送和接收),保持通信过程中连接的畅通,决定连接是否中断,决定中断后从何处重新连接
表示层:在应用层和会话层之间,主要作用就是将应用层发送过来的数据进行处理,包括数据格式的转换、数据的加密解密、数据的压缩。应用层负责处理语义而表示层负责处理语法,这样才能保证不同计算机使用不同编码格式的内容最后都能被转化成比特流传输,传输到其他电脑后也能转化回来
应用层:通信服务最终还是要给应用进程提供服务,应用层的协议就是精确定义这些通信规则,让不同应用进程相互协调工作。例如HTTP协议具体规定报文类型、报文语法、报文中各字段信息的含义、进程具体何时发送报文、进程如何响应报文
2.HTTP 的工作原理是什么? (难度***)
一次HTTP操作称为一个事务,其工作过程可分为四步:
客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。
建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。
3.URI 的格式是什么?常见的协议有哪些 (难度***)
URI的全称是统一资源标识符, 是Uniform Resource Identifier 的缩写,
URL的全程是统一资源定位符,是Uniform Resource Locator的缩写。
URL是URI的子集,URL除了像URI确定一个资源,还提供一种定位该资源的主要访问机制(http ://or ftp://)。
URI格式:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<hash>
scheme :协议名 如http ://or ftp://
<user>:<password> :登陆信息(验证),从服务器获取资源需要输入必要的用户名和密码,一般很少见
host:服务器地址 可以是IP地址或者域名
常见的 协议有:http、ftp、file、telnet、mailto 等
port :网络端口号 ,如果省略走默认端口, http默认80,https 默认443 ,ftp默认21。
path:资源路径
params:在一些协议中需要参数来访问资源,例如ftp是二进制还是文本传输,参数是名值对,用;
隔开
query: get请求传递的参数 ,是一组组键值对
hash:也成为片段,设计为标识文档的一部分,很多MVVM框架用作了路由功能
4.HTTP 协议有几种和服务器交互的方法 (难度***)
GET:最常用的方法,通常用于请求服务器发送某个资源
-
HEAD:和GET类似,只是不反回报文的主体部分,主要用于
- 在不获取资源的情况下获取资源信息(类型、大小,资源的更新时间等)
- 通过状态码产看资源是否存在
- 通过查看首部,测试资源是否被修改了
POST:用于向服务器发送数据,相比GET方法的传输数据量更大,保密性更好
OPTIONS:询问服务器支持那些方法?
TRACE:TRACE请求会在目的服务器端发送一个“闭环”诊断,行程最后一站服务器会弹回一条TRACE响应,并在响应主题中携带它收到的原始请求报文
PUT:用于想服务器写入资源。PUT的语义就是让服务器用请求的主体部分创建一个请求URL命名的文档,如果存在就替换,由于安全原因,一般不支持。
DELETE:用于要求服务器删除请求的URL,和PUT一样,服务器可能会不支持
5.状态码200,301, 304,403,404,500,503分别代表什么意思 (难度****)
- 200 ok 成功
- 204 No Content请求处理成功,但是没有资源返回
- 301 Move Permanently 永久重定向
- 302 Found 请求资源位置临时移动,区别于301
- 304 Not Modified 服务器资源未改变,可以直接使用客户端未过期缓存
- 403 Forbidden 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致
- 404 Not Found 无法找到指定位置的资源
- 500 Not Implemented 服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的PUT请求。
- 503 Service Unavailable 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503
6.报文有哪几部分组成? (可选 难度****)
- 对报文进行描述的起始行 start line
- 包含属性的首部块 header
- 包含数据的主体部分(可选) body
7.请求头的格式和作用是什么?给个范例截图说明 (可选 难度****)
8.主体的作用是什么?给个范例(可选 截图说明难度****)
服务器返回客户端的html 图片
服务器返回的JSON
9简述浏览器缓存是如何控制的(可选 难度*****)
10.下图各个参数是什么意思(可选 难度*****)
参考文档:
本教程版权归小韩同学和饥人谷所有,转载须说明来源