【测开基础之计算机网络】六: 应用层
1、应用层
1.1 协议分层
1.2 域名系统 DNS
1.2.1 什么是域名
为了了解域名系统 DNS的作用,首先要知道什么是域名
- 在全球的互联网中,每个网站都有自己的地址,如果我们访问网站都要直接去记ip地址和端口的话将非常的不方便,因此我们使用网站的名称来访问;
- 这就要求Internet上的服务名称全球唯一,那么又如何保证全球唯一?
这就需要在使用前向互联网组织申请域名,如果已经被占用将无法注册使用。 - 域名的组成
- 根
- 顶级域名
- 国家顶级域名 nTLD:如:
.cn
表示中国,.us
表示美国,.uk
表示英国,等等。 - 通用顶级域名 gTLD:最早的顶级域名是:
.com
(公司和企业).net
(网络服务机构).org
(非赢利性组织).edu
(美国专用的教育机构().gov
(美国专用的政府部门).mil
(美国专用的军事部门).int
(国际组织) - 二级域名
可个人随意注册,只要唯一即可
- 国家顶级域名 nTLD:如:
1.2.2 DNS服务用作
负责解析域名,将域名解析成IP
1.2.3 域名解析的过程
根域名服务器自己本身并不进行域名解析,但是它知道各个域名所存储的地址
- 主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
- 本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。
1.3 FTP服务器
1.3.1 FTP概述
-
文件传送协议 FTP
(File Transfer Protocol) 是因特网上使用得最广泛的文件传送协议。 - FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
- FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
- RFC 959 很早就成为了因特网的正式标准。
1.3.2 FTP特点
- 文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。
- FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
- FTP 使用
客户服务器方式
。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程
,负责接受新的请求;另外有若干个从属进程
,负责处理单个请求。
1.3.3 FTP连接方式
FTP使用两个TCP连接
- 控制连接:标准端口为21,用于发送FTP命令信息
- 数据连接:标准端口为20,用于上传、下载数据
-
数据连接的建立类型:
-
主动模式:
FTP客户端告诉FTP服务器使用什么端口侦听
FTP服务器和FTP客户端的这个端口建立连接 源端口20 -
被动模式:
服务端在指定范围内的某个端口被动等待客户端发起连接
-
主动模式:
1.3.4 FTP传输模式
- 文本模式:ASCII模式,以文本系列传输数据
- 二进制模式:Binary模式,以二进制序列传输数据
1.4 万维网
平常上网,最熟悉的就是三达不溜点啥啥啥了(www.xxx.com),那么这个www又是什么呢?
1.4.1 万维网概述
-
万维网 WWW (World Wide Web)
并非某种特殊的计算机网络。 -
万维网是一个大规模的、联机式的信息储藏所。
-
万维网用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。
-
这种访问方式称为
“链接”
。 -
万维网提供的分布式服务如下:
1.4.2 万维网的工作方式
- 万维网以客户服务器方式工作。
-
浏览器
就是在用户计算机上的万维网客户程序
。万维网文档所驻留的计算机则运行服务器程序
,因此这个计算机也称为万维网服务器
。 - 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
- 在一个客户程序主窗口上显示出的万维网文档称为
页面(page)
。
1.4.3 万维网需解决的问题
1.4.3.1 怎样标志分布在整个因特网上的万维网文档?
-
使用统一资源定位符
URL (Uniform Resource Locator)
来标志万维网上的各种文档。 -
使每一个文档在整个因特网的范围内具有唯一的标识符
URL
。 -
何为URL:
以实际例子来说,平常我们访问网页,点击网站的链接或者在浏览器中输入网站地址回车,便可以跳转到对应的网页,那么这个网站的链接或地址就是它的URL
-
URL的一般形式:
由以冒号隔开的两大部分组成,并且在 URL 中的字符对大写或小写没有要求
URL的一般形式是:
1.5 HTTP协议相关
HTTP全称超文本传输协议(HyperText Transfer Protocol),这是对于我们测试工程师来说最重要也是最应该熟悉的协议了
1.5.1 HTTP的作用
- 在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是
超文本传送协议 HTTP
(HyperText Transfer Protocol)。 -
HTTP
是一个应用层协议,它使用TCP
连接进行可靠的传送。 - 为了使超文本的链接能够高效率地完成,需要用
HTTP
协议来传送一切必须的信息。 - 从层次的角度看,HTTP 是
面向事务的
(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
万维网的工作过程如下:
- 那么,用户输入网址或用鼠标点击链接后发生了哪些事?
- (1)
浏览器
分析超链指向页面的URL
。 - (2) 浏览器向
DNS
请求解析
www.tsinghua.edu.cn 的IP 地址
。 - (3)
域名系统 DNS
解析
出清华大学服务器的 IP 地址
。 - (4)
浏览器
与服务器
建立TCP 连接
- (5)
浏览器
发出取文件命令
:GET /chn/yxsz/index.htm
。 - (6)
服务器
给出响应
,把文件 index.htm发给浏览器
。 - (7)
TCP 连接释放
。 - (8)
浏览器显示
“清华大学院系设置”文件 index.htm
中的所有文本
。
- (1)
1.5.2 HTTP的特点
- HTTP 是
面向事务
的`客户服务器协议。 - HTTP 1.0 协议是
无状态
的(stateless)。 - HTTP 协议本身也是
无连接
的,虽然它使用了面向连接的 TCP 向上提供的服务
1.5.3 请求一个万维网文档所需时间
1.5.4 持续连接
-
HTTP/1.1
协议使用持续连接
。 -
万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。
-
这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。
-
持续连接的两种方式
非流水线方式:客户在收到前一个响应后才能发出下一个请求。这比非持续连接的两倍 RTT 的开销节省了建立 TCP 连接所需的一个 RTT 时间。但服务器在发送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源。流水线方式:客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个 RTT时间,使 TCP 连接中的空闲时间减少,提高了下载文档效率。
1.5.5 HTTP报文结构
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)
、请求头部(header)
、空行
和请求数据
四个部分组成,下图给出了请求报文的一般格式。
-
请求方法:
HTTP
定义了与服务器交互的不同方法,常用最基本的方法有4种,分别是POST
,DELETE
,PUT
,GET
,分别对应日常的增删改查
业务
其余方法汇总: -
URL:请求资源的
URL
地址 - 协议版本:HTTP的版本
-
请求头:包含更多有关要获取的资源或客户端本身信息的消息头。是
HTTP
头的一种,它可在HTTP
请求中使用,并且和请求主体无关 。某些请求头如Accept
、Accept-*
、If-*
允许执行条件请求。某些请求头如:Cookie
,User-Agent
和Referer
描述了请求本身以确保服务端能返回正确的响应。
并非所有出现在请求中的HTTP
首部都属于请求头,例如在POST
请求中经常出现的Content-Length
实际上是一个代表请求主体大小的 entity header,虽然你也可以把它叫做请求头。 - 请求数据:请求所需带的一些数据信息
响应的报文格式如下:
-
响应状态码:
我们常见的状态码有如下几种:-
200 OK
客户端请求成功 -
301 Moved Permanently
请求永久重定向 -
302 Moved Temporarily
请求临时重定向 -
304 Not Modified
文件未修改,可以直接使用缓存的文件。 -
400 Bad Request
由于客户端请求有语法错误,不能被服务器所理解。 -
401 Unauthorized
请求未经授权。这个状态代码必须和WWW-Authenticate报头域一起使用 -
403 Forbidden
服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因 -
404 Not Found
请求的资源不存在,例如,输入了错误的URL -
500 Internal Server Error
服务器发生不可预期的错误,导致无法完成客户端的请求。 -
503 Service Unavailable
服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。
状态码解分类:
其余状态码解析:
可参考https://www.runoob.com/http/http-status-codes.html -
-
另外一个需要专门说明的就是请求头和响应头中都有的一个字段
Content-Type
,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件-
常见的媒体格式类型如下:
text/html
: HTML格式text/plain
:纯文本格式text/xml
: XML格式image/gif
:gif图片格式image/jpeg
:jpg图片格式image/png
:png图片格式 -
以application开头的媒体格式类型:
application/xhtml+xml
:XHTML格式application/xml
: XML数据格式application/atom+xml
:Atom XML聚合格式application/json
: JSON数据格式application/pdf
:pdf格式application/msword
: Word文档格式application/octet-stream
: 二进制流数据(如常见的文件下载)application/x-www-form-urlencoded
: 中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式) -
另外一种常见的媒体格式是上传文件之时使用的:
multipart/form-data
: 需要在表单中进行文件上传时,就需要使用该格式
-
2、相关面试题
2.1 DNS相关
-
DNS 的概念,用途,DNS 查询的实现算法
- 概念
- 域名解析,www.xxx.com 转换成 ip,能够使用户更方便的访问互联网,而不
用去记住能够被机器直接读取的 ip 地址 - DNS 协议运行在 UDP 协议之上,使用端口号 53
- 域名解析,www.xxx.com 转换成 ip,能够使用户更方便的访问互联网,而不
- 主机解析域名的顺序
- 浏览器缓存
- 找本机的 hosts 文件
- 路由缓存
- 找 DNS 服务器(本地域名、顶级域名、根域名)
迭代查询、递归查询
- 概念
-
DNS 解析之前,还完成了哪些步骤?
见上题答案
2.2 HTTP相关
-
http 基本格式
详见上文 -
GET、POST 区别
- Cookies 和 Session 的区别
- cookie 是一种发送到客户浏览器的文本串句柄,并保存在客户机硬盘上,可以用来在 某个 WEB 站点会话间持久的保持数据
- session 其实指的就是访问者从到达某个特定主页到离开为止的那段时间。 Session 其 实是利用 Cookie 进行信息处理的,当用户首先进行了请求后,服务端就在用户浏览器 上创建了一个 Cookie,当这个 Session 结束时,其实就是意味着这个 Cookie 就过期 了
- cookie 数据保存在客户端,session 数据保存在服务器端
具体可参考文章:
一文彻底理解 Cookie、Session、Token
- 在浏览器中输入 www.baidu.com 后执行的全部过程
经典面试题,答案不尽相同,文中也有提及,以下为来自网络的其他参考解答,往细了说,这个问题可以是无穷尽的~
这里再提供一篇针对此问题写的较为完整的文章:
从URL输入到页面展现到底发生什么?
3、参考
主体内容参考韩立刚老师主讲的《计算机网络》- 第5版 - 谢希仁
部分内容参考书本《计算机网络》- 第7版 - 谢希仁
相关面试题由网络搜集
其余参考文章:
https://hit-alibaba.github.io/interview/basic/network/HTTP.html
https://www.runoob.com/http/http-tutorial.html
https://developer.mozilla.org/zh-CN/docs/Web/HTTP