1、网络应用程序体系结构
网络体系结构是固定的,并为应用程序提供了特定的服务集合。应用程序体系结构有应用研发者决定,主流应用程序体系结构有两种
客户-服务器体系结构
客户端通信要经过服务器
服务器负责处理逻辑
一旦客户端增加,服务器所提供的服务将降低(即处理请求的响应时间变长)
p2p体系结构
客户端与客户端直接通信
P2P体系结构对基础设施服务器有最小的(或没有)依赖,因为客户机间是直接通信的
客户端增加可不会影响处理请求的时间
2、进程通信
2.1 socket套接字
套接字是应用程序和网络的接口(API),是应用层和运输层之间的接口。
操作系统通过维护一张socket套接字表。
这是简单理解socket套接字,不一定正确啊
如果运输层选的是tcp协议,则socket表:
根据本地ip、端口、目的ip、端口生成一个套接字。
|源主机ip地址 | 源主机端口 |目的主机ip地址|目的主机端口|socket套接字
如果运输层选的是udp协议,则socket表:
根据本地ip、端口生成一个套接字。
| 本地主机ip地址 | 本地主机端口 |
由于tcp协议的socket套接字是一个四元组(即本地ip、端口、目的ip、端口),
所以服务器的一个端口可以监听来自多个客户端的请求,因为不同客户端在服务器所形成的套接字不同。
2.2、应用程序能选的运输服务
运输服务是由运输层遵守运输层协议向上层提供的服务
对运输服务进行分类:
1、可靠运输服务:每个分组都能到达,并且分组的数据正确。(不是说不会有丢包的现象,而是会完整的送达,丢了分组就补)
2、吞吐量:进程能够向接受进程交付的速率
3、定时:比如从发送方的每个分组到接收方的时延不能超过100ms。
4、安全性
运输层提供两种服务:
tcp和udp