文章目录
前言
网络应用主要包含以下内容
这里主要对网络应用的轮廓进行简单介绍
提示:以下是本篇文章正文内容
一、网络应用体系结构
首先,我们要知道,我们说,主机A和主机B进行通信,实际上是指运行在主机A上的某个程序和运行在B上的另一个程序进行通信,由于进程就是运行着的程序,所以也就是指:主机A的某个进程和主机B上的另一个进程进行通信。
1.客户机/服务器结构(Client-Server, C/S)
客户机/服务器结构(Client–server )简称C/S结构,是一种网络架构,它把客户端 (Client) 与服务器 (Server) 区分开来,每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求,客户服务器模式通过不同的途径应用于很多不同类型的应用程序,最常见就是目前在因特网上用的网页
客户和服务器都是指通信中所涉及的两个应用进程,客户-服务器方式所描述的是进程之间的服务和被服务的关系,客户是服务请求方,服务器是服务提供方
如图,一个服务器可能连接多个客户,要想进行计算机通信需知道是那个客户机的那个应用进程,计算机通信的对象是应用层中的应用进程,采用客户机/服务器结构通知所要找的对方应用进程,从而可以使两个应用进程之间能够通信
这种网络体系结构还有以下几个特点;
1.服务器主机是总是打开的, 客户机主机则并不总是打开
2.服务器是处理所有逻辑的中心
3.基于2的原因,两个客户机一般是不能直接通信的, 要进行通信必须经过服务器
4.虽然客户机/服务器体系结构的特征是“一对多”,但是服务器却并不总是一台,因为有时要处理海量的客户机的请求, 一台服务器处理不过来,所以这个时候常用服务器集群技术(server clustering)创建强大的虚拟服务器,所以这里“一对多”的一要理解为一组服务器组成的“一”个整体
5.由于4的原因,客户机/服务器体系的应用服务通常是基础设施密集的(infrastructure intensive),也就是说,提供该服务的互联网商家,例如搜索引擎(百度),网络商务(淘宝)通常要为服务器场的购买,安装和维护投入巨额的费用
客户机特点:
(1)与服务器通信,使用服务器提供的服务
所以客户端必须知道服务器程序的地址
(2)间歇性接入网络
(3)可能使用动态IP地址
(4)不会与其他客户机直接通信
服务器特点:
(1)7*24小时提供服务
(2)永久性访问地址/域名
系统启动以后即自己调用并不断的运行着,被动的等待被并接受来自客户端的通信请求,服务器不需要知道客户程序的地址
(3)利用大量服务器实现可扩展性
(4)需要强大的硬件和高级操作系统支持
客户与服务器的通信关系建立后,通信可以是双向的,客户和服务器都可以接收和发送数据
典型案例:
注:区分 “用户” 和 “客户”
使用计算机的人是用户(user),而不是客户(client),但是,有时把运行客户程序的机器称为client(这里指客户机),把运行服务器程序的机器称为server,所以要根据上下文来判断client和server是指软件还是硬件
2.点对点结构(Peer-to-peer, P2P)
对等连接(Peer-to-peer)是指两台主机在通信时并不区分哪一个是服务器请求方哪一个是服务器提供方。只要两台主机都运行了对等连接软件(P2P软件),他们就可以进行平等的,对等连接通信。
实际上对等连接方式上从本质上看仍然是客户–服务器方式,只是对等连接中每一台主机既是客户又同时是服务器。
总之,网络的参与者共享他们所拥有的一部分硬件资源(处理能力、存储能力、网络连接能力、打印机),共享资源通过网络提供服务和内容,能被其它对等节点(Peer)直接访问而无需经过中间实体, 在此网络中的参与者既是资源(服务和内容)提供者(Server),又是资源获取者(Client)
纯P2P结构特点:
(1)没有永远在线的服务器
(2)任意端系统/节点之间可以直接通讯
(3)节点间歇性接入网络
(4)节点可能改变IP地址
3.混合结构(Hybrid)
混合结构显而易见就是将这两种结构混合在一起使用,混合能够利用两者的优点在一定程度上规避两者的缺点
Napster就是采用的这种结构
(1)文件传输使用P2P结构
(2)文件的搜索采用C/S结构——集中式
1.每个节点向中央服务器登记自己的内容
2.每个节点向中央服务器提交查询请求,查找感兴趣的内容
二、网络应用进程通信
我们知道在同一个主机上进程之间的通信,又专门的通信机制,由操作系统所提供。
但是,在不同主机上运行的进程间如何通信?消息交换
一般地,客户机进程: 发起通信的进程,服务器进程: 等待通信请求的进程
1.Socket套接字
进程间通信利用socket发送/接收消息实现
TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。套接字用(IP地址:端口号)表示,区分不同应用程序进程间的网络通信和连接
主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号
套接字(Socket)= IP地址 + 端口号(Port Number)
类似于寄信, 发送方将消息送到门外邮箱,发送方依赖(门外的)传输基础设施将消息传到接收方所在主机,并送到接收方的门外,接收方从门外获取消息
传输基础设施向进程提供API,有传输协议的选择,参数的设置
2.寻址进程
不同主机上的进程间通信,那么每个进程必须拥有标识符
寻址主机:IP地址
寻址进程:端口号/Port number
有IP地址后,可以找到对应的主机,但是,同一主机上可能同时有多个进程需要通信,可以为主机上每个需要通信的进程分配一个端口号,那么,进程的标识符
:IP地址+端口号
所以,可以通过IP地址:端口号找到某个主机的进程,从而进程通信。
如HTTP Server: 80, Mail Server:25 (d端口号)
3.应用层协议
网络应用需遵循应用层协议
协议类型:
(1) 公开协议
1.由RFC(Request For Comments 请求评论)定义
2.HTTP, SMTP, ……
(2)私有协议
多数P2P文件共享应
应用层协议内容
(1) 消息的类型(type)
1.请求消息
2.响应消息
(2)消息的语法(syntax)/格式
1.消息中有哪些字段(field)?
2.每个字段如何描述
(3)字段的语义(semantics)
字段中信息的含义
(4)规则(rules)
(1)进程何时发送/响应消息
(2)进程如何发送/响应消息
如HTTP请求消息
三、网络应用需求
1.传输服务需求
(1)数据丢失(data loss)/可靠性(reliability)
某些网络应用能够容忍一定的数据丢失:网络电话
某些网络应用要求100%可靠的数据传输:文件传输
(2)时间(timing)/延迟(delay)
有些应用只有在延迟足够低时才“有效”,如网络电话/网络游戏
(3)带宽(bandwidth)
某些应用只有在带宽达到最低要求时才“有效”:网络视频
某些应用能够适应任何带宽——弹性应用:email
2.传输服务
Internet提供的传输服务有TCP和UDP服务
TCP服务特点:
(1)面向连接: 客户机/服务器进程间需要建立连接
(2)可靠的传输
(3)流量控制: 发送方不会发送速度过快,超过接收方的处理能力
(4)拥塞控制: 当网络负载过重时能够限制发送方的发送速度
(5)不提供时间/延迟保障
(6)不提供最小带宽保障
UDP服务特点:
(1)无连接,不需要建立连接
(2)不可靠的数据传输
(3)不提供:
• 可靠性保障
• 流量控制
• 拥塞控制
• 延迟保障
• 带宽保障
通过对比可以看成TCP好像比UDP更好一些,为什么还要使用UDP呢?
UDP适合特定的传输层服务,比如,网络电话
总结
提示:这里对文章进行总结: