网络应用的基本结构
分为三种:
1.客户机/服务器结构
2.点对点结构(P2P)
3.混合结构
客户机/服务器结构
例子:我们使用的web就是很经典的客户机服务器的结构
服务器的特点:
24小时不间断的工作,提供服务
永久性访问地址和域名(现实生活中的网站的地址,都是一直可以访问的)
利用大量服务器实现可扩展性
客户机的特点:
与服务器通信,使用服务器提供的服务
间接性接入网络(我们的电脑不是随时随地联网的)
可能使用动态的IP地址
不会与其他客户机直接进行通信(都是通过服务器间接进行通信的)
纯点对点结构(P2P)
特点:
没有永远在线的服务器
任意端系统/节点之间可以直接通信
节点间接性接入网络
节点可能改变IP地址
我个人的理解就是纯点对点的结构就是没有了服务器的客户机/服务器结构。
优点:高度可伸缩
缺点:难于管理
混合结构
混合结构是将以上两种结构混合起来,把优点结合又规避其中的缺点
比较经典的混合结构就是Napater
当有文件传输与的时候使用P2P结构,这样两个端系统/节点直接传输就比较方便
文件的搜索采用C/S(客户机/服务器)结构
计算机在通信的时候,如果是两个不同的主机之间是如何进行通信的呢?
是使用套接字(socket)进行的通信
什么是套接字?
很类似于以前的门口的信箱。以前家家户户的门前都有一个信箱,我们想寄信的时候把信放进信箱里。有信来的时候邮递员会把信放在门口的信箱。
发送一个消息也类似于此:
1.发送方将消息送到门口的信箱(socket)
2.通过传输管道、物理介质等传到接收方所在的主机,并且送到接收方的门外
3.接收方从门外获取消息
过程就类似于上面的这个图,socket就相当于信箱的作用。
那么每一个进程是怎么准确无误的找到接收方的呢?
也就是每一个进程是怎么寻址的呢?
不同主机之间的通讯,每一个进程就必须拥有标志符。
每一个进程是怎么准确找到相应的主机呢?
找主机:IP地址;
每个主机又有很多个进程在通信,怎么找到相应的进程呢?
端口号
为主机上每个需要通信的进程分配一个端口号。
所以每个进程的标识符是:IP地址+端口号 组成的;
网络应用的需求
所以对不同的应用有不同的需求,Internet提供了两种不同的服务:
TCP和UDP
写在最后:
本篇文章有一些图片和文字来源于哈尔滨工业大学在中国大学MOOC中发布的《计算机网络》这门课中的资料。