网络层所使用的地址(网络应用层)

网络层所使用的地址(网络应用层)(1)

1、网络应用体系结构

1.1、客户机/服务器

1.1.1、服务器

  • 7*24小时提供服务
  • 永久性访问地址/域名
  • 利用大量服务器实现可扩展

1.1.2、客户机

  • 与服务器通信,使用服务器提供的服务
  • 间歇性接入网络
  • 可能使用动态IP地址
  • 不会与其他客户机直接通信

1.2、P2P

  • 没有永远在线的服务器
  • 任意端系统/节点之间可以直接通讯
  • 节点间歇性接入网络
  • 节点可能改变IP地址

优点:高度可伸缩

缺点:难于管理

1.3、混合结构

Napster是一款可以在网络中下载自己想要的MP3文件的软件。它同时能够让自己的机器也成为一台服务器,为其它用户提供下载。

文件传输使用P2P结构

文件的搜索采用C/S结构——集中式

每个节点向中央服务器登记自己的内容

每个节点向中央服务器提交查询请求, 查找感兴趣的内容

1.4、网络应用的基础:进程间通信(进程的标识符:IP地址 端口号)

  • 进程间通信机制
  • 操作系统提供

客户机进程: 发起通信的进程

服务器进程: 等待通信请求的进程

1.4.1、套接字: Socket

  • 进程间通信利用socket发送/接收消息实现
  • 传输基础设施向进程提供API
    • 传输协议的选择
    • 参数的设置

网络层所使用的地址(网络应用层)(2)

1.4.2、应用层协议

公开协议

HTTP、SMTP。。。。。。

私有协议

多数P2P文件共享应用

协议内容

消息的类型

请求消息

响应消息

消息的语法/格式

消息中有哪些字段

每个字段如何描述

字段的语义

字段中信息的含义

规则

进程何时发送/响应消息

进程如何发送/响应消息

2、网络应用的服务需求

2.1、数据丢失/可靠性

某些网络应用能够容忍一定的数据丢失:网络电话

某些网络应用要求100%可靠的数据传输:文件传输,telnet

2.2、时间/延迟

有些应用只有在延迟足够低时才“有效”

网络电话/网络游戏

2.3、带宽

某些应用只有在带宽达到最低要求时才“有效”:网络视频

某些应用能够适应任何带宽——弹性应用:Email

3、Internet传输层服务模型

3.1、TCP服务

面向连接: 客户机/服务器进程间 需要建立连接

可靠的传输

流量控制: 发送方不会发送速度过快,超过接收方的处理能力

拥塞控制: 当网络负载过重时能够 限制发送方的发送速度

不提供时间/延迟保障

不提供最小带宽保障

3.2、UDP服务

无连接

不可靠的数据传输

不提供:

    • 可靠性保障
    • 流量控制
    • 拥塞控制
    • 延迟保障
    • 带宽保障

4、协议

4.1、HTTP协议

超文本传输协议:HyperText Transfer Protocol

客户—Browser:请求、接收、展示Web 对象

服务器—Web Server:响应客户的请求 ,发送对象

网络层所使用的地址(网络应用层)(3)

使用TCP传输服务

  • 服务器在80端口等待客户的请求
  • 浏览器发起到服务器的TCP连接(创建套接字Socket)
  • 服务器接受来自浏览器的TCP连接
  • 浏览器(HTTP客户端)与Web服务器(HTTP服务器)交 换HTTP消息
  • 关闭TCP连接

无状态

有 因为有状态的协议更复杂:

需维护状态(历史信息)

如果客户或服务器失效,会产生状态的不 一致,解决这种不一 致代价高

服务器不维护任何有关客户端过去所发请求的信息

Http连接

非持久性连接(Nonpersistent HTTP)

每个TCP连接最多允许传输一个对象

HTTP 1.0版本使用非持久性连接

持久性连接(Persistent HTTP)

每个TCP连接允许传输多个对象

HTTP 1.1版本默认使用持久性连接

网络层所使用的地址(网络应用层)(4)

响应时间

发起、建立TCP连接:1个RTT

发送HTTP请求消息到HTTP响应消息的前 几个字节到达:1个RTT

响应消息中所含的文件/对象传输时间

非持久连接的缺点

  • 每个连接,TCP得在客户端和服务端分配TCP缓冲区,并维持TCP变量。 对于同时为来自数百个不同客户的请求提供服务的web服务器来说,这会严重增加其负担。
  • 每个对象都有2个RTT的延迟。
  • 每个对象都遭受TCP缓启动,因为每个TCP连接都起始于缓启动阶段。

持久性连接

发送响应后,服务器保持TCP连接的打开

后续的HTTP消息可以通过这个连接发送

无流水的持久性连接

客户端只有收到前一个响应后才发送新的请求

每个被引用的对象耗时1个RTT

带有流水机制的持久性连接

HTTP 1.1的默认选项

客户端只要遇到一个引用对象就尽快发出请求

理想情况下,收到所有的引用对象只需耗时约1个RTT

HTTP消息格式

HTTP协议有两类消息

请求消息

响应消息

请求消息:包括三个部分,请求方法URL协议、请求头、请求体

第一行是请求方法URL协议,里面包括请求方法是 GET、POST还是PUT等 URL HTTP版本

第二部分是请求头,包括主机host,请求的浏览器user-agent,连接,接受的语言换行

第三部分请求体,比如post一般都会把参数放入到请求体中,PUT将消息体中的文件上传到url中指定的路径。

响应消息:状态行、消息报头,响应正文

状态行:HTTP版本 200/404等(代表返回的结果)。

消息报头:data(web服务器产生响应消息的时间)、server服务器的类型、内容长度

空行

响应正文:html代码等

Cookie技术

因为HTTP协议无状态,很多应用需要服务器掌握客户端的状态,某些网站为了辨别用户身份、进行session跟踪而存储在用户本地终端上的数据(通常经过加密)

Cookie的实现原理

Cookie定义了一些HTTP请求头和HTTP响应头,通过这些HTTP头信息使服务器可以与客户进行状态交互。

客户端请求服务器后,如果服务器需要记录用户状态,服务器会在响应信息中包含一个Set-Cookie的响应头,客户端会根据这个响应头存储Cookie信息。再次请求服务器时,客户端会在请求信息中包含一个Cookie请求头,而服务器会根据这个请求头进行用户身份、状态等较验。

Web缓存/代理服务器技术

功能:在不访问服务器的前提下满足客户端的HTTP请求。

优点:

缩短客户请求的响应时间

减少机构/组织的流量

在大范围内实现有效的内容分发

Web缓存/代理服务器

用户设定浏览器通过缓存进行Web访问

浏览器向缓存/代理服务器发送所有的HTTP请求

如果所请求对象在缓存中,缓存返回对象

否则,缓存服务器向原始服务器发送HTTP 请求,获取对象,然后返回给客户端并保存 该对象

缓存既充当客户端,也充当服务器

一般由ISP(Internet服务提供商)架设

4.2、Email应用

Email应用的构成组件

邮件客户端

邮件服务器

SMTP协议(Simple Mail Transfer Protocol)

邮件客户端

读、写Email消息

与服务器交互,收、发Email消息

客户端工具Outlook, Foxmail, Thunderbird

Web客户端

邮件服务器

邮箱:存储发给该用户的Email

消息队列(message queue):存储等待发 送的Email

SMTP协议

  • 邮件服务器之间传递消息所使用的协议
  • 客户端:发送消息的服务器
  • 服务器:接收消息的服务器

使用TCP进行email消息的可靠传输(使用持久性连接)

端口25

传输过程的三个阶段

握手

消息的传输

关闭

命令/响应交互模式

命令(command): ASCII文本

响应(response): 状态代码和语句

Email消息只能包含7位ASCII码

SMTP与HTTP对比:

HTTP: 拉式(pull)

SMTP: 推式(push)

都使用命令/响应交互模式

命令和状态代码都是ASCII码

HTTP: 每个对象封装在独立的响应消息中

SMTP: 多个对象在由多个部分构成的消息中发送

Email消息格式与POP3协议

文本消息格式标准

头部行(header)

To

From

Subject

消息体(body)

消息本身

只能是ASCII字符

邮件访问协议:从服务器获取邮件

POP: Post Office Protocol

认证/授权(客户端~服务器)和下载

认证过程

客户端命令

User:声明用户名

Pass: 声明密码

服务器响应

OK

-ERR

事务阶段

List:列出消息数量

Retr:用编号获取消息

Dele: 删除消息

Quit

“下载并删除”模式

用户如果换了客户端软件,无法重读该邮件

“下载并保持”模式:不同客户端都可以保留消息的拷贝

POP3是无状态的

IMAP: Internet Mail Access Protocol

更多功能

更加复杂

能够操纵服务器上存储的消息

所有消息统一保存在一个地方:服务器

允许用户利用文件夹组织消息

IMAP支持跨会话(Session)的用户状态:

文件夹的名字

文件夹与消息ID之间的映射等

4.3、DNS服务

域名向IP地址的翻译

主机别名

邮件服务器别名

负载均衡:Web服务器

为什么不使用集中式的DNS?

单点失败问题

流量问题

距离问题

维护性问题

DNS查询

迭代查询

递归查询

DNS消息主要由五部分组成

网络层所使用的地址(网络应用层)(5)

4.4、P2P应用:原理与文件分发

没有服务器

任意端系统之间直接通信

节点阶段性接入Internet

节点可能更换IP地址

文件划分为256KB的chunk

节点加入torrent

没有chunk,但是会逐渐积累

向tracker注册以获得节点清单,与某些节点( “邻居”)建立连接

下载的同时,节点需要向其他节点上传 chunk

节点可能加入或离开

一旦节点获得完整的文件,它可能(自私 地)离开或(无私地)留下

获取chunk

给定任一时刻,不同的节点持有文件的不同chunk集合

节点(Alice)定期查询每个邻居所持有的chunk列表

节点发送请求,请求获取缺失的chunk

稀缺优先

发送chunk: tit-for-tat

Alice向4个邻居发送chunk:正在向其发送Chunk,速率最快的4个

每10秒重新评估top 4

每30秒随机选择一个其他节点,向其发送chunk

新选择节点可能加入top 4

“optimistically unchoke”

P2P应用:索引技术

P2P系统的索引:信息到节点位置(IP地址 端口号)的映射

文件共享(电驴)

利用索引动态跟踪节点所共享的文件的位置

节点需要告诉索引它拥有哪些文件

节点搜索索引,从而获知能够得到哪些文件

即时消息(QQ)

索引负责将用户名映射到位置

当用户开启IM应用时,需要通知索引它的位置

节点检索索引,确定用户的IP地址

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页