应用层的协议是最多的 网络核心中最高的层次:网络层 一、创建一个网络应用 1、编程 2、形式:在不同端上运行,通过网络基础设施提供的服务,应用进程 彼此通信 如:web:web服务器软件和浏览器软件通信
二、网络应用的体系架构 1、客户-服务器模式 (C/S:client/server) (1)服务器:一直运行,固定的IP和周知的端口号(约定) (2)扩展性差、只能对服务器本身以及周边进行扩展,不可能向客户端周边扩展;性能在随着用户数量的增加到一定数量,是断崖式下降 (3)客户端主动与服务器通信;与互联网由间接性的连接(间接性的请求);可能有动态IP地址(不同的网络),不直接与其他客户端通信(中间经过服务器)
2、对等模式 (P2P:Peer To Peer) (1)每个节点即是客户端又是服务器 (2)几乎没有一直运行的服务器,客户端即服务器,基本没有客户端会一直运行 (3)任意端系统之间可以通信 (4)参与的主机间歇性连接且可以改变IP地址(缺点:难管理) 如:迅雷、Gnutella
3、混合体 :客户端-服务端和对等体系架构 上面两种模式的混合体,一般是下载文件时使用P2P模式,而服务器在其中做到一个中介的作用,用来告诉用户所需内容在哪里,然后用户再去请求 (1)Napster:文件搜索:集中;文件传输:P2P,在任意Peer节点之间 (2)即时通信:在线检测:集中,当用户上线时,向服务器注册其IP地址,通信时用户与中心服务器联系,以找到其在线服务器的位置 两个用户通信:P2P
三、进程通信 进程:在主机上运行的应用进程 客户端进程:发起通信的进程 服务器进程:等待连接的进程 1、在不同的主机内,通过交换报文(Message) 来通信 (1)使用OS提供的通信服务 (2)按照应用协议交换报文(借助传输层提供的服务) (3)P2P架构应用也有客户机和服务器进程之分
四、分布式进程通信应该注意? 1、进程标识和寻址问题(服务用户) (1)进程为了能接受报文,需要有个标识(SAP):IP地址+端口(端节点 ) (2)本质上,一对主机之间的通信由两个端节点构成
2、传输层-应用层提供服务是如何服务的 位置:层间界面的SAP(TCP/IP:Socket) 形式:应用程序接口API(TCP/IP:Socket API) 在传输的过程,传输层提供的服务、信息需要穿过层间接口,信息就是传输的报文、我的IP地址+端口号、对方的IP地址+端口号,而每次传输的时候都需要提供这些数据,太繁琐,引出了Socket ,Socket是一个整数 ,可代表通信的双方(TCP)或者单方(UDP) 套接字Socket:进程向套接字发送报文或接收报文 好处:便于管理,使穿过层间的信息量最少 (1)TCP socket 包含:源IP、源Port、对方IP、对方Port(四元组)。 指定了唯一的会话 (2)UDP socket 包含:本端口、本IP(二元组),但是传输的时候需要提供对端口和IP,因为UDP前后报文可能给的不同进程,所以Socket自然不包括对方端口及IP
3、如何使用传输层提供的服务,实现应用进程之间的报文交换,实现应用? 定义应用协议:报文格式、解释、时序等 编制程序,使用OS提供的API,调用网络基础设施提供 通信服务传报文,实现应用时序等 (1)应用协议 :分布式应用进程在通信的过程当中应该遵守的规则集合,是应用中的一部分。协议规范了报文类型(请求和应答报文)、语法(报文的各个字段描述)、语义(字段取值的含义)、规则(进程发送时间、方式,以及对报文的响应方式) 如web应用:HTTP协议、web客户端、web服务器、HTML (2)公有协议与私有协议 公有协议是在RFC文档定义,可以随时查阅,允许互操作的,如HTTP、SMTP 私有协议:专有的协议,协议是不公开的,如Skype (3)协议的性能指标:数据丢失率 、吞吐 、延迟 、安全性 ,当然每个协议所能容忍的这四个指标是不一样的
五、TCP与UDP (1)为啥要有UDP? (2)TCP与UDP的安全性 都是没有加密的,如网址前缀Http,有的是Https,正是在TCP上面加了SSL,提高了安全性
|