笔记一下学习网络五层#2 1 1 2 1 2

Network Application Architectures

network architecture,一个开发者设计一个application时,如何被架构在各个end system,而现今常见的net work application主要应用的两个主流设计为client-server architecture以及peer-to-peer architecture (P2P)

client-server architecture

最终端永远会存在于一台或以上的host,所谓的server,负责处理从其他end system传来的service request,也就是所谓的client,最明显的特征是,clients之间并不能直接沟通传递消息,必须得经由最上游的host来运作,另一个特点是server存在固定的IP Address,地址永远是固定的而且server持续维持运作的状态下,client便可以透过这样的服务传递封包。

通常如常见的大型社区网站,会拥有data center,安放大量的hosts来做为一个强大的server,处理大量的用户request,而因此也必须额外付出从data center到各个host的连接以及带宽成本。

peer-to-peer architecture (P2P)

P2P并没有绝对依赖指定的host,不同于前者,clients在一组相互链接的hosts中可以直接与彼此沟通,称为peerspeers并不属于service provider而是各个users hosts,也就是不用转折点的server去运行。

很明显一项特点就是self-scalability,虽然每一个peers在request时都会产生workload,但同时也提升了service capacity,也就是说,每当一个peer加入时,整个P2P架构的系统,就会多增加一个peer提供的资源、带宽以及计算能力,但同时越多用户的话,传输的效率也会越慢,此外,由于不需通过指定server的运作,也省去了从host -> server的带宽以及服务功能。

方便的同时也须注意三个隐忧

  1. ISP Friendly – 大部分的地区ISPs已经切割好指定的带宽使用,为了准备应付更多的downstream than upstream traffic,而P2P的设计则会把占带宽的upstream trafficserver搬移至ISPs运作,造成ISPs更大的负担,因此在设计上得纳入考量。
  2. Security – 显而易见的彼此users都是open的,所以也很容易遭受到恶意攻击。
  3. Incentives – 以P2P的设计来说,得吸引用户去提供自己的带宽、存储空间以及资源。
    https://ithelp.ithome.com.tw/upload/images/20181128/20107670oq8R6uBKYo.png

Process Communicating

process可以想像成,一只program在end system上运行,Processes在两台不同的end systems上主要透过messages的交换来沟通。

Client and Server Process

Network application 都会有一组processes组成,透过network发送messages给彼此,通常会将两个processes一个定义为clicent另一个为server,以常见的google为例,我们的browser就是一个client process发送request messageserver process接收并给予回应,在P2P的设计上来说,peer可以同时为clientserver,有一个定义是指触发消息交换的processclient,而等待被联系的process则为server

The Interface Between the Process and the Computer Network

所有message从process出发到接收一定会经过network,而透过将process message传递到network的界面就是socket,也被称为API。可以记为socketapplication layer & transpoart layerinterface,通常开发者会在application-layer side of the socket 拥有比较多的控制权,反之在transport-layer side便没有太大的操作空间。

后者主要有两种,

  1. 选择transport protocol,如果有选择是available的话
  2. 或许有机会去调整少数transport-layer parameters如最大buffer以及最大segment size

Addressing Processes

传递消息主要需要两个已知的信息,一者为receive host 的 address,二者为辨别receiving process的身分证,通常前者为host IP address。一般而言,一台host可能会在多个network applications上,为了辨别出指定的receiving socket,需要port number来达成,而这也有一个常见的规范port number表 于此

 

发表评论