网络应用程序的体系结构
CS结构 : 客户端服务端 (微信,QQ)
P2P结构 : 端到端 (百度网盘,迅雷) Pear to Pear
CS 体系结构
客户端通过网络跟服务器进行交互
比如网页服务,发消息:都不是把信息直接给想要发的那个人,而是把信息交给服务器,服务器转发给那个人
服务端大多数不是一个机器,而是一个数据中心,组成了一个虚拟的服务器。
P2P
不需要一个中心存在的服务器,所用用户通过这个服务连接到一起,拓展性很强,密集型强,流量密集。
缺点:对于用户来说,只想享受便利,不想享受服务。比如在百度云盘中的积分政策,用自己的流量上传服务,但是没有给用户相应的福利。
挑战:
ISP 友好:所有的ISP 想限制P2P的流量,大多数ISP 住宅受制于“非对等的”宽带应用(上行和下行有较大的差异,一般来说,上载的流量比较小所以,也有限制),P2P 模式会改变从服务器到住宅ISP 的上传流量(占用大量的上载流量,没有给ISP 的效益)。
安全性:本地数据可能会以某种方式上传上去
合理的激励:上传和下载的流量不匹配,被使用的流量和给的福利不对等。
进程通信:
所有CS结构的网络应用程序,都是由成对的进程组构成。
由server 和 client
在P2P 结构中,发起通信的为客户端,等待服务的进程为服务端
进程与计算机网络之间的接口
Socket是应用程序与网络之间的API;
应用程序对于运输层的控制仅限于
选择运输层协议
设置简单参数
比如设置,地址重用
可供应用程序使用的运输服务
应用程序服务要求
可靠数据传输:TCP支持(发送的对方一定能收到)
吞吐量 : 网络有一定的吞吐量
定时 : 允许的延迟,超过一定延迟,则完成不了服务
安全性 : 在抓包时候,可以抓取数据,在WiFi接口处,可以获得所有经由该WiFi的包,可以解析包中的数据。
想获取一个信息:
1. 做WIFI 伪装(公共网络),当手机或者其他开放一个热点,那么,所以连到这个热点的所有机器都会经由你的手机,然后安装一个抓包工具,去解析,那么就可以获得信息。
TCP:
面向连接的服务
可靠的数据传输
UDP:
不提供必要服务的轻量级运输服务
不可靠的数据传输
有的文件传输,使用的也是UDP ,所以我们这个时候,可以用一个UDP 模拟一个 TCP
应用层协议定义了:
交换报文类型,例如请求报文和响应报文
各种报文类型的语法,如报文中各个字段的定义以及这些字段的描述
字段的语义,即这些字段中包含的信息的含义
一个进程何时以及如何发送报文,对报文进行响应的规则(同步事件发生的顺序)</