一、网络应用(层)内容概述
我们已经知道,Internet的体系结构是符合TCP/IP协议栈的,而“应用层”就在这个协议的最上层。
本讲内容包括:
二、网络应用的基本原理
常见网络应用包括:
问:网络应用与单机应用有哪些本质的不同?
答:网络应用有网络才能用。网络应用就是有一部分软件是跑在我们自己的计算机上(比如浏览器),而还有一部分软件及数据信息等是跑在互联网的某些硬件服务器上,这两部分软件会互相交互,才共同构成了网络应用。这就是网络应用和单机应用的不同之处。
1、网络应用的体系结构
问:既然网络应用是由不同的部分构成的,那么网络应用应该采用什么样的体系结构呢?
答:互联网经过这些年的发展,基本形成了三种体系结构:客户机/服务器结构、点对点结构、混合结构
(1)客户机/服务器结构(client/server,C/S)
服务器和客户机的差别:
服务器:
- 提供7*24小时不间断的服务
- 拥有永久性可以访问的地址/域名(比如:www.baidu.com)
- 利用大量服务器实现可扩展性(因为服务器要为海量用户提供服务,容易出现并发请求,一台机器是撑不住的,往往需要采用大量的服务器并行分布式的技术来实现可扩展性,能同时处理大量用户的并发请求)
客户机:
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址(因为客户端并不需要提供服务,别人不会直接访问你)
- 不会与其他客户机直接通信
(2)点对点结构(Peer to Peer,P2P)
P2P结构最典型的例子就是BT下载。
(3)混合结构(Hybrid)
($)思考题
2、网络应用进程通信
我们知道,网络应用是由不同的成分构成的,有的运行在我们的PC机上,有的运行在远端的服务器上,而两者显然需要正确的协作才能完成它的功能。这意味着我们PC机上运行的网络应用进程和服务器端运行的进程之间是需要进行通信的。
所以,网络应用的核心和基础就是两个不同的进程之间进行正确的通信,然后完成我们设计的预订功能。本节我们要学习的就是网络应用进程间的通信。
(1)网络应用的基础:进程间通信
因为在P2P架构中,也需要进行消息交换,所以也会有发起通信的进程和等待通信的进程。
(2)套接字Socket
不同主机进程之间的通信依靠的是“套接字”的机制
(3)如何寻址进程
我们已经知道,网络应用之间打交道依靠消息传输(消息交换),那么我这个消息发出去之后,底层的传输基础设施怎么就能正确无误地将消息送到目的地呢?这里就有一个“进程标识”的问题,我们称之为“寻址”。“寻址”是网络世界的一个非常普遍的问题。
“IP地址+端口号”的模式可以保证我们通过微信发出去的消息,会传送到对方的微信上,而不是其他应用上。其中IP地址可以保证消息被传送到正确的主机,而端口号可以保证消息被传送到正确的应用。
(4)应用层协议
(5)应用层协议的内容
3、网络应用需求与传输层服务
(1)典型网络应用对传输服务的需求
(2)Internet提供的传输服务
Internet提供两类传输服务:TCP、UDP(等讲到传输层的时候,会具体讲这两个服务)
(3)典型网络所使用的的传输层服务
$、课后练习
4、Web应用
(1)Web应用概述
(2)HTTP协议概述
Web应用所遵循的协议就是HTTP协议(超文本传输协议),这个协议采用的是客户/服务器架构。
HTTP应用层协议所使用的的传输层协议是TCP。
另外,HTTP协议是一个“无状态”的协议,通俗讲就是,服务器不维护任何有关客户端过去行为的信息。比如2分钟前我请求了新浪的首页,然后我现在又请求获得新浪的首页,那边的服务器不会因为2分钟前已经发给我并且没改过所以就不再给我了,服务器是不区分的,只要我请求,服务器就会给我发。
问:为什么要采用无状态的机制?
答:因为有状态的协议往往更加复杂。因为第一点,你要维护这个状态(记录这个历史信息);第二点更致命,一旦客户机或服务器失效(比如重启了),那必然会产生状态的不一致,解决这种不一致往往是非常复杂的事情,代价也很高。与其这样,我们还不如直接采用无状态的协议,这样反而更可靠。
5、HTTP连接类型
我们已经知道,Web所遵循的应用层协议是HTTP,我们也知道HTTP底下依靠的是TCP。对于TCP的使用,是有2中不同的使用方法的(也称为2种不同的HTTP连接类型)
思考:这两种方式有什么不同呢?
(1)非持久性连接