# 应用层
应用层是 OSI 参考模型、TCP/IP 模型的最高层。应用层确定进程之间通信的性质,以满足用户的需要以及提供网络和用户软件之间的接口服务。例如:电子邮件,网络管理程序。
相关协议:
- 虚拟终端协议 Telnet,用于实现互联网中远程登陆功能。
- 文件传输协议 FTP,用于实现互联网中交互式文件传输功能。
- 简单邮件协议 SMTP,用于实现互联网中电子邮件传送功能。
- 域名服务 DNS,用于实现网络设备名字到 IP 地址映射的网络服务。
- 路由信息协议 RIP,用于网络设备之间交换路由信息。
- 网络文件系统 NFS,用于网络中不同主机间的文件共享。
- 超文本传输协议 HTTP,用于 WWW 服务。
后续
因为应用层里有比较重点的协议,例如: HTTP、HTTPS、DNS,重要的协议都会单独写一篇文章,请期待。
# 理解
思考: 基于以下几层的功能,其实计算机与计算机之间已经可以发送文本了,还可以选择速度快或可靠性高的传输方式。计算机互相通信的目的已经达到,怎么还有应用层呢?这一层是干嘛用的?
问题 1: 假设有一台计算机 A,计算机 A 上面有两个学习资料,分别为 X 文件、Y 文件。你怎么告诉计算机 A 传输 X 文件还是 Y 文件?之前我们只讲了 MAC 地址与 IP 地址,IP 地址可以让使你的计算机与 A 计算机通信,可没说可以携带 X、Y 的地址。例如:192.168.1.2/24/X、192.168.1.2/24/Y,可没有这样的。
回答 1: 传输一个文本,里面的内容就是索取文件的要求。例如:
我要 X 文件
这样 A 就知道了。
问题 2: 如果是这样的话,那在计算机 A 前就必须要一个活人驻守了。计算机怎么懂人类语言呢,你咋不用俄语、英语、日语说要 X 文件。如果是这样的话,那这么活人必须懂地球上所有语言。
回答 2: 那就用一个标识,记录要什么文件。例如:
address: X
计算机 A 自动解析第一行address
的字段,自动返回对应的文件。
问题 3: 这样的确可以让计算机 A 知道要返回哪个文件了。但如果你要的 X 文件被计算机 A 删除了,或者你访问了一个不存在的 Z 文件。那计算机 A 怎么通知你呢?
回答 3: 如果不存在可以发送空内容来表示文件不存在。例如下面:
问题 4: 那如果 X 文件是存在的,但内容也是空。那怎么区 文件内容为空 和 文件不存在 呢?
回答 4: 那么返回内容时,在第一行加一个标识,然后换行,换行之后的内容就是这个文本内容。假设文件存在,则标识就是 1,不存在就是 0。例如:
文件内容不为空的情况,假如 Y 文件:
exist:1
除了细菌、病毒,还有一种可怕的“病毒”。它不携带 RNA、DNA,只是一蛋白质,它就是阮病毒。疯牛病、羊瘙痒症、库鲁病等的幕后黑手正是阮病毒。
2
3
文件内容为空的情况:
exist:1
2
文件不存在的情况:
exist:0
2
这样就能区分了。
疑问: 这样我们确实能选择想要的文件了,是空文本还是不存在的问题也解决了。但是你想想上面的行为不就是在制定一系列规则吗?你基于传输层的特性,有制定了新的规则,这套规则属于传输层之上。那又叫什么呢?
总结: 在传输层时,计算机虽然可以进行通信,但通信只是过程,我们是有目的。如果是普通的文本传输,似乎传输层就可以胜任了。但遇到 远程登陆、文件传输、电子邮件传送、域名与 IP 地址映射、路由信息交换 等等功能,我们就需要制定一些规则了。这就是应用层,有目的去应用下层协议带来的通信功能。