第三周:网络应用(上)

一、网络应用(层)内容概述

我们已经知道,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)典型网络所使用的的传输层服务

$、课后练习

三、Web应用

1、Web应用概述

HTTP协议概述:

Web应用所遵循的协议就是HTTP协议(超文本传输协议),这个协议采用的是客户/服务器架构。

HTTP应用层协议所使用的的传输层协议是TCP。

另外,HTTP协议是一个“无状态”的协议,通俗讲就是,服务器不维护任何有关客户端过去行为的信息。比如2分钟前我请求了新浪的首页,然后我现在又请求获得新浪的首页,那边的服务器不会因为2分钟前已经发给我并且没改过所以就不再给我了,服务器是不区分的,只要我请求,服务器就会给我发。

问:为什么要采用无状态的机制?

答:因为有状态的协议往往更加复杂。因为第一点,你要维护这个状态(记录这个历史信息);第二点更致命,一旦客户机或服务器失效(比如重启了),那必然会产生状态的不一致,解决这种不一致往往是非常复杂的事情,代价也很高。与其这样,我们还不如直接采用无状态的协议,这样反而更可靠。

2、HTTP连接类型

我们已经知道,Web所遵循的应用层协议是HTTP,我们也知道HTTP底下依靠的是TCP。对于TCP的使用,是有2中不同的使用方法的(也称为2种不同的HTTP连接类型)

思考:这两种方式有什么不同呢?

(1)非持久性连接

我们现实生活中,有时候网速特别慢时,网页会先出来,然后图片才一个接一个地出来,甚至会有图片加载失败的情况,这就说明它使用的是非持久性连接。

(2)响应时间分析与建模

(2)持久性HTTP

3、HTTP消息格式

Entity Body(请求体)中会有一些请求的信息,通常Post请求会用到,比如注册账号的时候你的个人信息就是写在Entity Body中的。

HTTP状态相应代码:

体验一下HTTP:

4、Cookie技术

前面我们强调过,HTTP是一个“无状态”的协议,服务器不记录客户端的历史行为。那么这个时候可能就会带来一些问题。这时我们就用到了Cookie技术。

(1)为什么需要Cookie?什么是Cookie技术?

因为虽然HTTP协议是无状态的,但是很多应用需要服务器掌握客户端的历史状态,比如网上购物的购物车。所以我们要引入Cookie技术。

(2)Cookie的工作原理

(3)Cookie的作用

($)思考题

5、Web缓存技术

(1)Web缓存/代理服务器技术

如果在有代理服务器的情况下,浏览网页就不会真正的访问服务器了,直接访问代理服务器就可以了。

(2)Web缓存示例

Web缓存/代理服务器确实挺好,但是,我们好像遗漏了一个重要的问题:如果客户访问的东西在代理服务器中存在,那么代理服务器直接返回给客户,那么我们怎么保证代理服务器中存在的就是最新版本呢?即:我们怎么保证代理服务器中的版本和远端服务器中的版本一致呢?这就用到了HTTP中的“条件性GET方法

(3)条件性GET方法

条件性GET方法的基本思想就是,如果我代理服务器缓存的对象版本是最新的,那它向远端服务器进行条件性GET的时候,就不用再发对象了。

($)课后作业

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值