1.应用层
网络应用的体系结构
可能的应用架构:
-
客户 - 服务器模式( C/S:client/server ) -
对等模式 (P2P:Peer To Peer) -
混合体:客户 - 服务器和对等体系结构
客户 - 服务器( C/S )体系结构
服务器
客户端
-
主动与服务器进行通信 -
可能是动态IP地址 -
不直接与其他客户端通信
对等体( P2P )体系结构
-
几乎没有一直运行的服务器 -
任意端系统之间可以进行通信 -
每个节点既是客户端又是服务器 -
参与的主机间歇性连接且可以改变IP地址
进程通信
进程
在主机上运行的应用程序
-
同一个主机内,使用进程间通信机制进行通信 -
不同主机,通过交换报文(Message)进行通信
客户端进程与服务器进程
-
客户端进程:发起通信的进程 -
服务器进程:等待连接的进程
分布式进程通信解决的问题
问题1:对进程进行编址(addressing)
进程为了接收报文,必须要有标识 (SAP)
-
主机:唯一的32位IP地址 -
所采用的传输层协议:TCP/UDP -
端口号
例如
HTTP:TCP 80
Mail:TCP 25
FTP:TCP 2
问题2:传输层提供的服务 - 需要穿过层间的信息
问题 3 :传输层提供的服务 - 层间信息的代表
TCP socket
TCP spcket: 源IP、源端口、目标IP、目标端口
TCP 之上的套接字( socket )
-
4 元组: ( 源 IP ,源 port ,目标 IP ,目标 port) -
唯一的指定了一个会话( 2 个进程之间的会话关系) -
应用使用这个 标示,与远程的应用进程通信 -
不必在每一个报文的发送都要指定这 4 元组 -
就像使用操作系统打开一个文件, OS 返回一个文件句 柄一样,以后使用这个文件句柄,而不是使用这个文件 的目录名、文件名 -
简单,便于管理
UDP 之上的套接字( socket )
-
2 元组: IP , port (源端指定) -
UDP 套接字指定了应用所在的一个端节点( end point ) -
在发送数据报时,采用创建好的本地套接字(标示 ID ),就不必在发送每个报文中指明自己所采用的 ip 和 port -
但是在发送报文时,必须要指定对方的 ip 和 udp port( 另外一个段节点
应用层协议
-
公开协议
HTTP SMTP
-
专有(私有)协议
协议不公开 Skype
概念
-
数据丢失率
-
延迟
-
吞吐
-
安全性
常见应用对传输服务的要求
应用 | 数据丢失率 | 吞吐 | 时间敏感性 |
---|
文件传输 | 不能丢失 | 弹性 | 不 | email | 不能丢失 | 弹性 | 不 | web文档 | 不能丢失 | 弹性 | 不 | 实时音视频 | 容忍丢失 | 音频 5k-1Mbps/视频 0K-5Mbps | 100ms | 储存音视频 | 不能丢失 | 同上 | 几秒 | 交互式游戏 | 容忍丢失 | 几kbps | 100ms | 即时消息 | 不能丢失 | 弹性 | 是和不是 |
TCP与UDP
TCP:
UDP:
UDP存在的必要性
常用应用层协议及其传输协议
应用 | 应用层协议 | 传输层协议 |
---|
E-mail | SMTP | TCP | WEB | HTTP | TCP | 流媒体 | 专用协议 | TCP/UDP | 网络电话 | 专用协议 | TCP/UDP |
HTTP
HTTP分类:
-
非持久HTTP
-
最多只有一个对象在TCP上发送 -
HTTP1.0采用非持久连接
-
持久HTPP
-
多个对象可以在一个TCP上传输 -
HTTP1.1采用持久连接
HTTP响应报文
GET、POST区别
-
get把请求的数据放在url上,即HTTP协议头上,post把数据放在HTTP的包体内 -
get提交的数据最大是2k,post理论上没有限制 -
get产生一个TCP数据包,post产生两个TCP数据包 -
get效率比post高 -
get可以缓存,post不可以缓存 -
post比get安全
HTTP状态码
-
200 OK 请求成功,请求对象包含在响应报文的后续部分 -
301 Moved Permanently 请求的对象已经被永久转移了;新的 URL 在响应报文的 Location:首部行中指定 客户端软件自动用新的 URL 去获取对象 -
400 Bad Request 一个通用的差错代码,表示该请求不能被服务器解读 -
404 Not Found 请求的文档在该服务上没有找到 -
505 HTTP Version Not Supported
DNS(Domain Name System)
基于UDP
作用:实现主机名 -IP 地址的转换 (name/IP translate)
域名服务器
类型 | 作用 |
---|
根域名服务器 | 最高层次的域名服务器,本地域名服务器解析不了的域名就会向其求助 | 顶级域名服务器 | 负责管理在该顶级域名服务器下注册的二级域名 | 权限域名服务器 | 负责一个区的域名解析工作 | 本地域名服务器 | 当一个主机发出DNS查询请求时,这个查询请求首先发给本地域名服务器 |
域名查询:
|