[A Top-Down Approach][第二章 应用层]

[A Top-Down Approach][第二章 应用层]

标签(空格分隔): 未分类


  • 网络应用是计算机网络存在的理由

  • 首先从定义几个关键的应用层概念开始

    • 应用程序所需要的网络服务,客户和服务器,进程和运输层接口.
  • 然后详细考察几种网络应用程序.
    • Web,电子邮件,DNS,和对等文件分发.
  • 涉及开发运行在TCPUDP上的应用程序.
    • 学习套接字 API
    • 浮光掠影的用Python写一些简单的客户-服务器应用程序.

2.1 应用层协议原理

2.1.1 网络应用程序体系结构

  • 应用程序体系结构(application architecture): 由应用程序研发者设计,规定了如何在各种端系统上组织该应用程序.
    • 两大主流体系:
      • 客户-服务端体系结构(client-server architecture)
      • 对等(P2P)体系结构(P2P architecture)

客户-服务端体系结构

  • 服务器:有一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机.
    • 对于某些大型的公司,例如google,facebook,甚至要组建数据中心来处理.
  • 客户互相之间不通信.

  • 常用应用: 典型的有Web,Telent和电子邮件.

P2P体系结构

  • 对位于数据中心的专用服务器有最小(甚至没有)的依赖.

  • 主机对之间使用直接通信,这些主机被称为对等方

  • 常用应用:

    • 文件共享:BitTorrent
    • 对等方协助下载加速器 : 迅雷
    • 因特网电话 :Skype
    • IPTV : PPStream
  • 未来P2P应用面临三个主要问题

    • ISP友好:大多数住宅ISP受制于“非对称的” 带宽应用
    • 安全性: 高度分布和开放特性,会对安全带来挑战
    • 激励: 未来P2P应用的成功也取决于说服用户自愿向应用提供宽带,存储和计算资源.

2.1.2 进程通信

  • 进行通信的实质是进程(process)

1. 客户和服务进程

在给定的一对进程之间的通信会话场景中,发起通信(即在该会话开始时发起与其他进程联系)的进程被标识为客户,另一方等待连接的是服务器.

2. 进程与计算机网络之间的接口

image_1b230040c1fnl15sg1umm1f0k13cp9.png-190.1kB

  • 套接字(socket):进程通过一个称为套接字的软件接口向网络发送电报和从网络接收电报.

    • 套接字也称为应用层和运输层的应用程序编程接口(Application Programming Interface ,API).
  • 应用程序开发者可以控制套接字在应用层端的一切,但是对运输层几乎没有控制,仅限于

    • 选择运输层协议
    • 设定几个运输层参数(如:最大缓存,最大报文段长度)
  • 在2.7节对套接字进行更为详细的探讨.

3. 进程寻址

  • 目的主机的地址:IP地址(IP address)

    • 第四章详细讨论.
  • 目的主机中的接收进程的标识符:端口号(port number)

    • 第三章学习端口号.

2.1.3 应用程序所需要的运输服务特性

从四个方面对运输服务分类: 可靠数据传输,吞吐量,定时安全性

可靠数据运输

  • 就是所谓的丢包

  • 可靠运输传输(reliable data transfer):提供这种服务,确信数据能无差错到达接收进程.

    • 电子邮件,文件传输,远程主机访问,Web文档等应用,数据丢失将会造成严重后果.
    • 而有些多媒体等应用是容许丢失的应用(loss-tolerant application)

吞吐量

  • 就是所谓的下载速度

  • 带宽敏感的应用(bandwidth-sensitive application)

    • 当前许多多媒体应用都是带宽敏感的,尽管尽可能采用自适应编码技术.
  • 弹性应用(elastic application):根据情况利用带宽.

    • 电子邮件,文件传输和Web.

定时

  • 有的运输层协议也能提供定时保证.

  • 就是所谓的延迟

    • 在游戏和因特网电话中有较高的要求.

安全性

  • 运输层协议提供一种或多种安全服务.

2.1.4 因特网提供的运输服务

1.TCP服务

  • TCP服务模型包括面向连接服务可靠数据传输服务.

    • 面向连接服务: 在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息.
      • 握手阶段: 提示服务器和客户端.
      • 建立一个全双工的TCP 连接(TCP connection)
      • 拆除连接.
    • 可靠的数据传送服务:通信进程能够依靠TCP,无差错,按适当顺序交付所有发送的数据.
  • TCP协议还具有拥塞控制阶段

    • 这种服务不一定能为通信进程带来直接好处,给因特网带来整体好处
    • 出现网络拥堵时,TCP的拥塞控制机制会抑制发送进程.
  • 安全套接字层(Secure Sockets Layer,SSL:为了提升安全性,提供了一种TCP的加强版本SSL

    • 这种强化是在应用层上的,SSL并不是跟TCP/UDP并列的协议

2.UDP服务

  • UDP是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务.
    • 无连接的.
    • 不可靠数据传送服务
    • 没有拥塞控制

3.运输协议所不能提供的服务

  • 吞吐量和定时方面不能保证,幸好带宽再不断地扩大,也暂时不需要关注.

image_1b23jd7ktrhh81m1ec47g218v613.png-142.8kB

2.1.5 应用层协议

  • 应用层协议(application-layer protocal): 定义了运行在不同端系统上的应用程序如何相互传递报文.

    • 交换的报文类型
      • 请求报文和响应报文
    • 各种报文类型的语法
      • 报文的各个字段和这些字段是如何描述的.
    • 字段的语义
      • 即这些字段包含的信息的含义
    • 一个进程何时发送报文,对报文的响应规则

2.1.6 本书设计的应用协议

  • HTTP,FTP,STMP,DNS,P2P

2.2 Web 和 HTTP

  • 诞生于 90年代后

2.2.1 HTTP概述

  • 超文本传输协议(HyperText Transfer Protocal,HTTP):Web的应用层协议,Web的核心.

image_1b23ohi7v8rj1fcvh3v18pb1sai1g.png-99.8kB

  • HTTP使用TCP作为它的支撑运输协议.

    • HTTP客户向服务器发起一个与服务器的TCP链接,链接建立后,通过套接字接口访问TCP
  • HTTP是一个无状态协议(stateless protocal)

    • HTTP不保存客户的任何信息
    • 所以需要cookie,session
  • 对象(object): Web页面由对象组成,一个对象是一个文件

    • 一个HTML页面,JPEG图形,CSS文件……….

2.2.2 非持续连接和持续连接

  • 非持续连接(non-persistent connection)

    • 每个请求/响应对经过一个单独的TCP连接发送.
  • 持续连接(persistent connection)

    • 所有请求/响应对经过相同的TCP连接发送.
    • 默认情况使用持续连接.

image_1b23qbeeqg20e4k1ma4i9lt7p1t.png-183.9kB

  • 往返时间(Round-Trip Time,RTT):一个短分组从客户到服务端,再从服务端到客户端说花的时间

    • 包括了之前讨论的各种时延.
  • 建立TCP连接传输一个对象需要的时间为 2个RTT+接受文件时间

1. 采用非持续连接的HTTP

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值