《自顶向下法》学习笔记——第二章:应用层

第二章 应用层

1、应用层协议原理

0) 概述
    *研发网络应用程序的核心是写出能够运行在不同的端系统和通过网络彼此通信的程序。
    *我们不需要编写在网络核心设备入路由器或链路层交换机上运行的软件。
1) 应用程序体系结构
    *由应用程序研发者设计,规定了如何在各种端系统上组织该应用程序。
    *两种主流体系结构为“客户—服务器体系结构”和“对等(P2P)体系结构”。
    *客户—服务器体系结构:
        a)有一个总是打开的主机称为 服务器 ,它服务于来自许多其他称为 客户 的主机的请求。
       b) 服务器 具有固定的IP地址, 客户 总是能够通过向该服务器的IP地址发送分组来与其联系。
       c) Web、FTP、Telnet和电子邮件都是这种体系结构的应用程序。
    *P2P体系结构中,应用程序在间断连接的主机对之间使用直接通信,这些主机被称为 对等方
2) 进程通信:
    *进行通信的实际上是 进程而不是程序,进程间通信的规则由端系统上的操作系统确定。
    *在两个不同端系统上的进程,通过跨越计算机网络交换 报文而互相通信。发送进程生成并向网络中发送报文,接收进程接收这些报文并可能通过将报文发送回去进行响应。
    *客户和服务器进程:对没对通信进程,发起通信的进程被标识为客户,在会话开始时等待联系的进程是服务器。
    *套接字socket:
        a)进程通过一个称为 套接字的软件接口向网络发送报文和从网络接收报文;
        b)套接字是同一台主机内应用层和运输层之间的接口。由于该套接字是建立网络应用程序的可编程接口,因此套接字也称为应用程序和网络之间的 应用程序编程接口;
        c)应用程序开发者可以控制套接字在应用层端的一切,但是对该套接字的运输层端几乎没有控制权。
    *进程寻址:为了标识接收进程,需要定义主机地址(IP地址)和接收进程的标识符(端口号)。
3) 可供应用程序使用的运输服务
    *可靠数据传输:
        a)确保由应用程序一端发送的数据正确、完全地交付给该应用程序的另一端;
        b)运输层协议能够潜在地向应用程序提供进程到进程的可靠数据传输。当一个运输层协议提供这种服务时,发送进程只要将其数据传递进套接字,就可以完全相信该数据将能无差错地到达接收进程;
    *吞吐量:
        a)可用吞吐量就是发送进程能够向接收进程交付比特的速率;
        b)运输层协议能够以某种特定的速率提供确保的可用吞吐量;
        c)带宽敏感的应用具有特定的吞吐量要求,弹性应用能够根据情况或多或少地利用可供使用的吞吐量。
    *定时:网络电话、多方游戏等应用服务为了有效性而要求数据交付有严格的时间限制,运输层协议能够提供这种定时保证。
    *安全性:
        a)运输协议能够为应用程序提供一种或多种安全性服务;
        b)在发送主机中,运输协议能够加密由发送进程传输的所有数据;在接收主机中,运输层协议能够在将数据交付给接收进程之前解密这些数据。
4) 因特网提供的运输服务
    *TCP服务:
        a)TCP服务模型包括面向连接服务和可靠数据传输服务;
        b)面向连接-》在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输控制信息,在握手阶段后一个 TCP连接就在两个进程的套接字之间建立了;
        c)可靠的数据传输-》通信进程能够依靠TCP,无差错、按适当顺序交付所有发送的数据。当应用程序的一端将字节流传进套接字时,它能够依靠TCP将相同的字节流交付给接收方套接字,没有字节丢失和冗余;
        d)拥塞控制-》当发送方和接收方之间的网络出现拥塞时,TCP的拥塞控制机制会抑制发送进程;
    *SSL:
        a)无论TCP还是UDP都没有提供任何加密机制;
        b) 安全套接字层 SSL是一种对TCP的加强,这种强化实在应用层上实现的,SSL拥有自己的套接字API;
        c)发送进程向SSL套接字传递明文数据->SSL加密该数据并将加密后数据传递给TCP套接字->接收TCP套接字接收加密后数据->将加密后数据传递给SSL->SSL将解密后数据传递给接收进程;
    *UDP服务:
        a)UDP是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务;
        b)UDP是无连接的,在两个进程通信前没有握手过程;
        c)UDP提供不可靠数据传输服务,UDP不保证报文一定到达接收进程及到达报文的有序性;
        d)UDP不提供拥塞控制机制,UDP的发送端可以用它选定的任何速率向其下层网络层注入数据;
    *运输协议不提供的服务:互联网运输层协议目前不提供 吞吐量定时保证的服务。
5) 应用层协议
    *应用层协议定义了运行在不同端系统上的应用程序进程如何互相传递报文。

2、Web和HTTP

1) HTTP概况
    *Web的应用层协议是超文本传输协议HTTP。
    *客户程序和服务器程序运行在不同的端系统中,通过交换HTTP报文进行会话,HTTP定义了这些报文的结构以及客户和服务器进行报文交换的方式。
    *分层体系结构:HTTP使用TCP作为它的支撑运输协议,HTTP不用担心数据丢失,也不关注TCP从网络的数据丢失和乱序故障中恢复的细节,那是TCP以及协议栈叫底层协议的工作。
    *无状态协议:HTTP服务器并不保存关于客户的任何信息。
2) 非持续连接和持续连接
    *非持续连接的HTTP:
        a)每个请求/响应对是经一个单独的TCP连接发送;
        b)每个TCP连接在服务器返回一个响应对象后关闭,该连接并不为其他的对象而持续下来;
        c)往返时间RTT->一个短分组从客户到服务器再返回客户所花费的时间;
        d)总响应时间->两个RTT加上服务器传输HTML文件的时间;
        e)每一个对象经受两倍RTT交付时延,一个RTT用于创建TCP,另一个RTT用于请求和接收一个对象。
    *持续连接的HTTP:
        a)所有的请求/响应经相同的TCP连接发送;
        b)服务器在发送响应后保持该TCP连接打开,在相同的客户与服务器之间的后续请求和响应报文能够通过相同的连接进行传送;
        c)如果一条连接经过一定间隔时间(可配置的超时时间)仍未被使用,HTTP服务器就关闭该连接。
3) HTTP报文格式
    *请求报文:      
       
    *响应报文:
       
4) 用户与服务器的交互->cookie:
    *HTTP使用了cookie,使服务器能够把内容与用户身份联系起来。cookie可以在无状态的HTTP之上建立一个用户会话层。
5) Web缓存
    *定义:
        a)Web缓存也叫 代理服务器,是能够代表初始web服务器来满足Http请求的网络实体;
        b)Web缓存器有自己的磁盘存储空间,用以保存最近请求过的对象副本;
        c)Web缓存器通常由ISP购买并安装;
    *作用:
        a)Web缓存器能够大大减少对客户请求的响应时间,特别是当客户与初始服务器之间的带宽远低于客户与web缓存器之间的带宽时;
        b)Web缓存器能够大大减少一个机构的接入链路到因特网的通信量;
        c)通过使用 内容分发网络(CDN),Web缓存器在因特网中发挥着重要作用。
6) 条件GET方法
    *背景:Web缓存器的引入产生了一个问题,即存放在缓存器中的对象副本可能是陈旧的。
    *解决:HTTP协议有一种机制,允许缓存器证实它存放的对象是最新的。
        a)Last-Modified->对象的最后修改日期;
        b)If-Modified_Since->仅当自指定日期后该对象被修改过,才返回该对象;
        c)304 Not Modified->该对象未被修改过可以继续使用  

3、文件传输协议FTP

1) 控制连接和数据连接
     *FTP使用了两个并行的TCP连接来传输文件,一个是控制连接,一个是数据连接。
     *控制连接用于在两主机之间传输控制信息,如用户标识、口令等。
    *数据连接用于实际发送一个文件。
    *控制连接贯穿了整个用户会话期间,但对会话中的每一次文件传输都需要建立一个新的数据连接。

4、电子邮件

1) 概况
    *因特网电子邮件系统由 用户代理邮件服务器简单邮件传输协议(SMTP)三大部分组成。
    *过程:发送方用户代理-》发送方邮件服务器-》接收方邮件服务器-》接收方用户代理
2) SMTP:
    *SMTP用的是持续连接,如果发送邮件服务器有几个报文发往同一个接收邮件服务器,它可以使用同一个TCP连接。
    *SMTP是一个推协议,即发送邮件服务器把文件推向接收邮件服务器。
3) 邮件访问协议
    *需要使用邮件访问协议让用户代理从邮件服务器取回报文。
    *流行的邮件访问协议有POP3、IMAP以及HTTP。

5、DNS—因特网的目录服务

1) DNS提供的服务
    *概况:
        a)主机名几乎没有提供关于主机在因特网中的位置信息;
        b)因特网中的主机使用 IP地址进行标识,一个IP地址由四个字节组成;
    *DNS服务:
        a)人类喜欢便于记忆的主机名标识主机,路由器通过有层次结构的IP地址标识主机;
        b)DNS主要提供进行主机名到IP地址转换的目录服务。它是一个由分层的DNS服务器实现的分布式数据库,也是一个使得主机能够查询分布式数据库的应用层协议;
        c)DNS协议运行在UDP之上,使用端口号53。
2) DNS工作机理概述
    *在单一DNS服务器上运行集中式数据库完全没有可扩展能力,因此DNS采用了分布式的设计方案。
    *分布式、层次数据库:
        a)没有一台DNS服务器拥有因特网上所有主机的映射,相反该映射分布在所有DNS服务器上;
        b)DNS服务器层次结构-》根DNS服务器、顶级域DNS服务器、权威DNS服务器;
        c)本地DNS服务器-》通常邻近本主机,当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将该请求发往DNS服务器层次结构中。
    *DNS缓存:
        a)当某DNS服务器接收到一个DNS回答时,它能够将该回答的信息缓存在本地存储器中;
        b)DNS服务器在一段时间(两天)后将丢弃缓存的信息。

6、P2P应用

1) P2P文件分发
    *在P2P文件分发中,每个对等方能够重新分发它所拥有的该文件的任何部分,从而在分发过程中协助该服务器。
    *当一个对等方接收到某些文件数据,它能够使用自己的上载能力重新将数据分发给其他对等方。
    *P2P体系结构的应用程序能够是自扩展的。
2) 分布式散列表DHT
    *环形DHT:
        a)每个对等方仅知道他的直接后继和直接前任;
        b)减少了每个对等方必须管理的覆盖信息的数量;
        c)但为了找到负责的键的对等方,DHT中的所有N个节点将必须环绕转发报文,平均发送N/2条报文;
    *改进:
        a)一方面,如果每个对等方联系所有其他对等方(网状覆盖网络),则每个查询仅发送一个报文,但每个对等方必须关联N个对等方;
        b)另一方面,使用环形DHT,每个对等方仅需关联两个对等方,但每个查询平均要发送N/2个报文;
        c)可以通过使用捷径来加速查询报文的路由选择;
        d)DHT能够被设计成每个对等方的邻居数量以及每个请求的报文数量均为O(logN),这种涉及给出了一种满意折中。
    *对等方扰动:为处理对等方扰动,需要要求每个对等方联系其第一个和第二个后继。

7、TCP套接字编程

1) 概述
    *客户进程和服务器进程通过从套接字读出和写入数据进行彼此之间的通信。
2) UDP套接字编程
    *当使用UDP发送数据时,必须先将目的地址附在该分组之上。
    *目的地址由目的主机的IP地址和目的套接字端口号组成。
    *发送方源地址由源主机的IP地址和源套接字端口号组成。
3) TCP套接字编程
    *TCP是面向连接的协议,在客户和服务器能够开始互相发送数据之前,它们先要握手和创建一个TCP连接。
    *当一侧要向另一侧发送数据时,它只需经过其套接字将数据丢给其TCP连接。
    *在三次握手期间,客户进程敲服务器进程的欢迎之门——serverSocket(TCP套接字)。当服务器听到敲门时,它将生成一扇新门专门用于特定的客户——connectionSocket(连接套接字)。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值