应用层大纲
传输层向应用层提供的服务,形式是Socket API(原语)
一些网络应用的例子
互联网层次中,应用层协议最多
流媒体应用:直播
网络核心最高的层次就是网络层
应用进程通信方式
C/S:
客户端:可能是动态IP(DHCP)
服务器:固定IP(中心,地位不平等)
可扩展性差
对等体:
混合体:
应用:Napster(音乐共享软件)
注册,登录:C/S
用户越多,资源越多,下载速度越快
QQ:
目录查询,注册,登记:C/S
会话:p2p方式
进程通信
在同一个主机上,应用进程通信只需要操作系统本身应用进程通信的方式【管道,消息队列,共享缓冲区】,不需要符合网络的标准
在不同的主机,两个应用进程互相发送报文,需要符合网络的规范
客户端(主动)
服务器(被动)
分布式进程通信需要解决的问题
进程标识:标识自己,让别的能够找到(唯一)
通过Socket ApI来访问传输层向应用层提供的服务
地点:SAP,服务访问点
形式:Socket API
问题一:对进程进行编址
终端地址:IP
UDP,TCP:传输层协议
端口
知名端口:
web应用(HTTP:80),FTP(21),Talent(23)
任何一对应用进程之间的通信都可以由两个端节点(end port)来标识
问题二:需要穿过层间的信息
信息:
发的什么:SDU报文
谁发的:IP+TCP/UDP端口
发给谁:对方的IP+TCP/UDP端口
把信息拿到后封装【段头+数据部分】
TCP Socket
每次都传输这么多东西:减少传输的信息量–》Socket,便于管理
一个整数
一旦与对方建立连接后,就会返回一个整数,主机之间会话的关系:Socket【本地意义上的标识,对方主机不知道】
四元组:TCP
[本机IP 本机端口号 对方IP 对方端口号]
Socket只有应用层,传输层知道【应用层与传输层的约定】,网络层不知道
在TCP中操作Socket值,就是操作会话关系;与文件系统,操作句柄就是在操作文件一样
Socket值:操作系统分配的整数【每个会话不一样】
当前状态在不断地更新
源IP,目标IP:往下交给IP的协议,让IP来封装IP的数据报
SDU+源IP+目标IP封装
数据本身+【本地IP+本地端口+对方的IP +对方的TCP端口号】-》TCP Socket
会话要交两种
同一个进程对应一个端口
UDP Socket
无握手
每个报文传输都是独立的
UDP Socket:本地IP 本地UDP端口【二元组】
本地意义上的二元组的映射关系
数据本身+【本地IP+本地端口】-》UDP Socket
会话必须要对方的IP 和 对方的UDP端口号,所以会话要交三种
问题三:使用传输层提供的服务实现应用
应用层的协议:分布式的应用进程在通信时应该遵守的规范
应用协议不是应用的全部,仅仅是应用的一部分【应用交互过程中与网络相关的部分】
应用实体【遵守协议,与网络相关的部分】
Skype:通过互联网打电话
传输层向应用层提供服务的衡量指标:
数据丢失率【可靠性】
延迟大:如打电话时,自己在说,对方也在说【延迟,现在才穿过来】
吞吐量:取决于瓶颈链路
数据丢失率:文件传输
实时音视频:吞吐量
传输层提供的服务TCP UDP
TCP:
实体:实现网络协议的软件或硬件模块【运行当中的】
流量控制:协调发送与接受速率
拥塞控制:能够感知路径的拥塞程度,实时调整
不能保证:时间【定时】 吞吐量 安全性
IP只能提供主机到主机的区分,不能进程到进程的区分
UDP:通过端口号进行进程到进程的区分
TCP的可靠性消耗了时间和空间的代价
有些防火墙会过滤UDP
TCP和UDP都没有安全性
SSL安全套接字层【跑在TCP层上】:提供安全性的服务,在应用层{说传输层也可以}
HTTPS:在TCP的SSL上【安全】