1.OSI 七层模型指什么
OSI七层模型是通过七个层次化的结构模型使不同的系统不同网络间实现可靠的通讯
1.物理层:通过物理介质发送和接收原始比特流
2.数据链路层:数据包被编码并解码成比特。 它提供传输协议知识和管理,并处理物理层,流量控制和帧同步中的错误。 数据链路层分为两个子层:媒体访问控制(MAC)层和逻辑链路控制(LLC)层。 MAC子层控制网络上的计算机如何获得对数据的访问以及传输数据的权限。 LLC层控制帧同步,流控制和错误检查。
3.网络层:构建和管理多节点网络,包括寻址,路由和流量控制
4.传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。
在这一层,数据的单位称为数据段(segment)。
5.会话层:管理通信会话,即以两个节点之间的多个往复传输的形式连续交换信息
6.表示层:网络服务和应用程序之间的数据转换;包括字符编码,数据压缩和加密/解密
7.应用层:支持应用程序和最终用户进程。识别通信伙伴,识别服务质量,考虑用户认证和隐私,并识别对数据语法的任何约束。
2.HTTP 的工作原理是什么?
我在地址栏中输入www.baidu.com后,浏览器会向DNS发送请求,DNS服务器就是你买的宽带供应商,此时DNS会返回一个IP,TCP三次握手,浏览器此时这个IP去发送HTTP请求,IP对应的是百度的服务器端口,百度的服务器会帮我们补全端口号和路径,然后返回HTTP响应发给浏览器,TCP四次挥手,浏览器解析返回的响应,最后展现页面
假如是www.baidu.com:80、www.baidu.com/index.html,,默认端口和默认路径可以不写
3.URI 的格式是什么?常见的协议有哪些
含义
URI 是 Uniform Resource Identifier 的缩写
- Uniform:规定统一的格式,可方便处理各种不同类型的资源,而不用根据上下文环境来识别资源指定的访问方式,加入新的协议方案(HTTP, HTTPS, FTP等)也更容易
- Resource:资源的定义是“可以标识的任何东西”,除了文档文件、图像或者服务(天气预报)等能够区别于其他类型的,劝都可以称为资源,另外资源不仅可以是单一的,也可以是多数的集合体
- Identifier:表示可标识的对象,也成为标识符
格式
例:http://samaritan89.github.io/f2e/js/ajax.html
通用的URL由9部分组成
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<hash>
- 对于web页面来说最常用的协议就是http和https
- user和password现在不常见了,不会在URL明文书写用户名和密码了,都是通过登录的方式
- 主机可以是IPO地址过着域名
- 端口号用来区分主机上的进程,方便找到web服务器,http默认是80
- path是资源的路径,也就是存放位置,不一定和物理路径完全对应,符合web服务器路由约定即可
- params,在一些协议中需要参数来访问资源,例如ftp是二进制还是文本传输,参数是名值对,用;隔开
- query:这个是get请求最常用的传递参数方式了 ?a=1&b=2&=3
- hash也成为片段,设计为标识文档的一部分,很多MVVM框架用作了路由功能
常见协议
http——超文本传输协议资源
https——用安全套接字层传送的超文本传输协议
ftp——文件传输协议
mailto——电子邮件地址
file——本地电脑文件
4.HTTP 协议有几种和服务器交互的方法
http最大的作用就是客户端发送请求,服务器给出响应,客户端发送请求的方式有很多
get:是最常用于请求服务器发送某个资源
head:和get类似,但在服务器的响应中没有资源的内容,只有资源的一些基本信息,主要用于
1.在不获取资源的情况下获取资源信息(类型、大小等)
2.通过状态码查看资源是否存在
3.通过查看首部,测试资源是否被修改了
通俗释义:查询这个网页是什么类型,是否存在,修改时间是何时。
put:和get从服务器获取资源相反,put用于向服务器写入资源,put的语义就是让服务器用请求的主题部分创建一个请求url命名的文档,如果存在就替换
将一个网页放入服务器,例如首页
post:用于向服务器发送数据,通常用来支持HTML的表单,将表单中的内容发送到服务器
将信息交给服务器
delete:删除服务器上的资源
trace:用来让Web服务器端将之前的请求通信环回给客户端。诊断,看经过哪些节点
options:用来查询针对请求URI指定的资源支持方法。看这么多方法支持哪一个
5.状态码200,301, 304,403,404,500,503分别代表什么意思
200 一切正常,请求被正常返回
301 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
304 未改变,说明无需再次传输请求的内容,也就是说可以使用缓存的内容。
403 资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。
404 无法找到指定位置的资源。这也是一个常用的应答。
500 服务器遇到了意料不到的情况,不能完成客户的请求。
503 服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个 Retry-After头。
6.报文有哪几部分组成?
http报文是简单的格式化数据块,每个报文都包含来自客户端的请求或者一条来自服务器的响应
由三部分组成:
1.对报文进行描述的起始行 -- start line
2.包含属性的首部块 --header
3.可选的包含数据的主体部分 --body
起始行和首部是由分隔行的ASCII,主体是一个可选的数据块
HTTP报文分为两类:
- 请求报文:向服务器请求一个动作
<method><request-URL><version>
<headers>
<entity-body>
get一般是没有body
- 响应报文:将请求结果返回给客户端
<version><status><reason-phrase>
// 版本 状态 原因的短语
<headers>
<entity-body>
7.请求头的格式和作用是什么?给个范例截图说明
格式:
第一行(请求行):GET 路径 HTTP/1.1
第二部分,N行(请求头,可以有多个):
KEY: Value 回车
KEY1: Value1 回车
KEY2: Value2 回车
... ...
KEYn: Valuen 回车
第三部分(空行):回车(表示第二部分结束了)
第四部分,N行(消息体/请求体): 随便(格式可在第二部分指定)
作用:规定了请求的协议版本,方法、请求的服务器主机名或端口等信息
说明:
- GET / HTTP/1.1 ---请求方法是get 遵守HTTP1.1协议
- Host: www.baidu.com ---接收请求的服务器的主机名和端口号是百度官网
- Connection: keep-alive ---客户端和服务器是否保持连接,持久链接 ,如果想关闭将keep-alive改为close
- Cache-Control:max-age=0 ---Cache-Control,控制缓存的行为,max-age,表示当前资源的有效时间器。
- Upgrade-Insecure-Requests:1 --- 是一个请求首部,用来向服务器端发送信号,表示客户端优先选择加密及带有身份验证的响应。http升级为https
- User-Agent ---客户端用的浏览器,系统等信息
- Accept ---告知服务器客户端可以处理的媒体类型及媒体类型优先级
- Accept-Encoding---告诉服务器可以发送的编码
- Accept-Language---告诉服务器可以发送的语言
- Cookie---主要作用是保存登录信息
get可以有请求体,但是一般没有,使用get永远看不到第三部分和第四部分
8.首部的格式和作用是什么?给个范例截图说明
格式:
KEY: Value 回车
KEY1: Value1 回车
KEY2: Value2 回车
... ...
KEYn: Valuen 回车
作用:首部和方法配合,共同决定了服务器和客户端能做什么
说明:
- Request URL: http://www.baidu.com/ --- 请求的url
- Request Method: GET ---请求方法
- Status Code: 200 OK ---状态码显示成功响应
- Remote Address: 119.75.213.61:80 ---服务器的主机名或ip地址
- Referrer Policy: no-referrer-when-downgrade ---监管哪些访问来源信息
9.主体的作用是什么?给个范例
作用
请求主体的内容由传输者定义,服务器返回给客户端的信息,其格式可以任意指定
10.简述浏览器缓存是如何控制的
11.下图各个参数是什么意思
-
General:大概内容
Request URL: --- 请求的url
Request Method: PUT ---请求方法put
Status Code: 200 OK ---状态码显示成功响应
Remote Address: 121.40.201.213:80 ---服务器的主机名或ip地址 -
Response Headers:响应的内容
Connection: keep-alive ---响应完成后,TCP链接状态保持链接
Content-Length:12 ---浏览器报文中内容的大小
Content-Type: application/json ---响应主体类型json
Date: Tue ,05 Apr 2016 04:48:23 GMT ---创建日期
Server: nginx/1.6.2 --- 服务器是nginx
X-Powered-By: Express ---支持服务器的技术是Express -
Request Headers:请求的内容
Accept: 接受的类型
Accept-Language: 接受的版本,语言
Connection: keep-alive ---响应完成后,TCP链接状态保持链接
Content-Length: 56 ---浏览器报文中内容的大小
Content-Type: application/X... ... ---请求主体类型from
Cookie: --- 一般保存用户登录信息等
Host: --- 服务器的域名(用于虚拟主机),以及服务器正在侦听的TCP端口号
Origin: ---源
Referer: --- 表示上一个页面的地址,包含一个URL,用户从该URL代表的页面出发访问当前请求的页面
User-Agent: --- 客户端,浏览器的描述
X-Requested-With: XMLHttpRequest
题外话
响应头的格式
第一行:状态行 协议/数字/英文
第二部分(n行):
KEY: Value 回车
KEY1: Value1 回车
KEY2: Value2 回车
... ...
KEYn: Valuen 回车
第三部分(空行):回车(表示第二部分结束了)
第四部分,N行(消息体/请求体): 随便(格式可在第二部分指定)
网友评论