正文
对于应用层,我想绝大多数人,应该是最熟悉的了。尤其是从事软件开发的人。这类应用程序体系结构是由应用程序研发者设计,不过多是利用的现代所流行的俩种主流体系结构之一:C/S结构(客户 - 服务器),P2P结构(对等体系)。
-
C/S结构:在这种体系中,总有一个需要一直打开的主机,我们称为服务器(server),它服务于其他称为客户(client)主机的请求。服务器总是具有一个固定的地址,大家都知道的地址,称为IP地址。比如baidu.com的IP地址之一为180.149.132.47。啥?你不知道baidu.com的地址,但是你知道baidu.com这个名字吧,又因为存在DNS服务(后面说),所以想当于了解。在这种结构下,值得注意的是,其他客户主机之间是不可以之间进行通信的。
-
P2P结构:在对等(Peer-to-peer)体系中,每台计算机之间都处于对等的地位,各台计算机有相同的功能,无主从之分,一台计算机既可作为服务器,设定共享资源供网络中其他计算机所使用,又可以作为工作站。网络中的每一台计算机既能充当网络服务的请求者,又对其它计算机的请求做出响应,提供资源、服务和内容。通常这些资源和服务包括:信息的共享和交换、计算资源(如CPU计算能力共享)、存储共享(如缓存和磁盘空间的使用)、网络共享、打印机共享等。
2x01.是什么在通信
对于学习过操作系统,或阅读过unix网络编程的人,对Tcp echo服务器应该不会陌生。当前进程通过fork()生成另外一个进程,一个进程发送一句话,然后另外一个接收到,并且显示在屏幕上。所以,我们可以想得到,在应用层而言,忽略下层数据传输细节,那么通信的其实就是进程。然而我们不怎么关注同一台主机上进程间的通信,而关注不同端系统上的进程间的通信。那么就不得不一个新东西:套接字,主机上应用层与运输层的接口,但是应用程序开发者对于运输层的控制仅限于:
2x02.网络应用
互联网从诞生到现在不过短短百年,但是对于人类社会的影响确实翻天覆地。试想,一百年前的时候,你能身处中华,却知道美国现在发生着选举大会吗?你能通过一个东西随身携带万卷书吗?你能实时与你远在他乡的好友实时通讯吗?不能,都不能。但是现在可以。那么接下来,就介绍几个极为流行的应用以及它的应用层协议吧。
交互过程
-
FTP:File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。同时,它也是一个应用程序。通过使用俩个并行的TCP链接来传输文件,一个是控制链接,一个是数据链接,控制链接用于在俩个主机之间传输控制信息,如用户标识,口令,命令。数据链接用于实际发送一个。
-
DNS:Domain Name System(域名系统)的缩写,运行在UDP协议之上。就像我们上面提到的baidu.com怎么转换成ip地址,这个就是DNS的服务。下面来介绍一下。首先,总的来说,DNS采用了分布式的设计方案。如下。
DNS服务器层次结构
每个组织,如一个大学,一个院系,一个公司都会有一台本地DNS服务器,当一台主机想要访问baidu.com的ip地址时,会先发送她的查询请求到本地DNS服务器,里面查找是否有baidu.com的ip地址。没有的话,本地DNS服务器就把这个请求转发到根DNS服务器,然后根DNS服务器把comDNS服务器地址发送给本地DNS服务器,然后本地DNS服务器发送查询请求到comDNS服务器,完成名字与ip地址的转换。
如果你想在你的主机上发送一个DNS查询报文,那么就使用nslookup程序吧,它可以帮助你完成,前俩行是你的主机的DNS服务器的名字,以及ip地址。
三、运输层