今天看了《计算机网络》觉得收获了些,特此一记。。
书里说了,网络应用程序分为两类:一类是实现协议标准(其实就是一些大家众所周知的标准协议)像在应用层协议里的:http,ftp,SMTP,POP3,P2P这一类的。双方只要协议相同就可以实现通信。
第二类就是一些专用的网络应用程序,其应用层协议没有公开发布在RFC中或其他地方。没有开放的协议,故其他的开发者将不能开发出与该应用程序交互的代码(一些金融支付方面的)如支付宝,其协议为自己独有的。
好了,现在我把TCP和UDP的示意图展示:
下面是UDP的示意图(红色箭头表示服务器端的运行,黑色箭头表示客户端的运行流程,其中蓝色箭头表示二者 交互过程)
服务器 客户
(在serverIP上运行)
在客户端请求服务之前,我们不难看出服务器的套接字必须已经创建好了。并与端口号绑定好了,假设为12000。这样,当任何人向IP地址的12000端口发来分组(package)该分组就会指向该套接字。
在此处,我想了一个例子:在古代的时候,暗卫和统领进行书信来往,为了收到来自各地的各个暗卫的信件,统领们必须时刻保持在岗状态(服务器开启,套接字准备好,处于监听某端口状态),如果不保持在岗状态,暗卫的信件就无法到达统领处。从而统领和暗卫无法及时交流。
当某个暗卫想请示或者了解一些信息时,他便写了一封信,内容是:大人,您让我调查那个夏雨荷,她身上有什么标记吗?他必须找到专门的情报处(clientSocket),将这封信交给负责人,告诉他,请将这封信交给位于洛阳情报处(IP地址/server)的郑大人(端口号)。当然要告知负责人那个情报处,不然,是投递到洛阳还是扬州呢,还有必须告知是那个大人的编号(端口号),情报处有很多位统领(不同的端口处理不同的网络分组)。这便理解了目的地址的构成问题。
下面是TCP的示意图(红色箭头表示服务器端的运行,黑色箭头表示客户端的运行流程,其中蓝色箭头表示二者 交互过程)