自顶向下-note2


『第二章 应用层』
『2.1 应用层协议原理』
网络应用程序体系结构
研究网络应用的核心是写出能够运行在不同的端系统和通过网络彼此通信的程序。
应用程序体系结构由应用程序研发者设计、规定了如何在各终端系统上阻止该程序。
应用程序体系结构有两种主流的体系结构:客户-服务器结构对等(P2P)体系结构

客户-服务器结构
1.其中,有一个总是打开的主机成为服务器
2.在客户-服务器结构中,客户之间并不直接通信。
3.服务器具有固定的、周知的地址,称为IP地址,客户通过向服务器的IP地址发送分组来与其联系。
具有客户-服务器体系结构的非常著名的应用程序包括Web、FTP、Telnet和电子邮件

P2P体系结构
1.对位于数据中心的专用服务器有最小的(或没有)依赖
2.应用程序在间断连接的主机之间使用直接通信,这些主机对被称为对等方
许多目前流行的、流量密集型的应用都是P2P体系结构的,包括文件共享、对等方协助下载加速器(迅雷)、因特网电话(skype)和IPTV(迅雷看看和PPstream)

P2P具有自扩展性。在一个P2P文件共享应用中,尽管每个对等方都由于请求文件产生工作量,但每个对等方通过向其他对等方分发文件也为系统增加了服务能力。


进程通信
在操作系统的术语中,进行通信的实际上是进程,而不是程序。
一个进程可以被认为是运行在端系统中的一个程序。当进程运行在相同的端系统上时,它们使用进程间通信机制相互通信。
进程间通信的规则由端系统上的操作系统确定。

在两个不同端系统上的进程,通过跨越计算机网络交换报文而相互通信。
发送进程生成并向网络中发送报文;
接受进程接受这些报文并可能通过将报文发送回去进行响应。

1.客户和服务器进程
网络应用程序有成对的进程组成,这些进程通过网络相互发送报文。对每对通信进程,通常将这两个进程之一标识为客户,而另一个进程标识为服务器
在给定的一对进程之间的通信会话场景中,发起通信(即在该回话开始时发送与其他进程的联系)的进程被称为客户,在会话开始时等待联系的进程是服务器

2.进程与计算机网络之间的接口
进程通过一个称为套接字的软件接口向网络发送报文和从网络接受报文。
套接字也成为应用程序和网络之间的应用程序编程接口

3.进程寻址
在一台主机上运行的进程为了向在另一台主机上运行的进程发送分组,接受进程需要有一个地址。为了标识该接受进程,需要定义两种信息:①主机的地址;②定义在目的主机中的接受进程的标识符。
在因特网中,主机由其IP地址标识
除了知道报文送往目的地的主机地址以外,发送进程还必须指定运行在接受主机上的接受进程。
目的地端口号就用于这个目的。


可供应用程序使用的运输服务
套接字是应用程序进程和运输层协议之间的接口。
一个运输层协议可以提供以下集中服务:
1.可靠数据传输
2.吞吐量
3.定时
4.安全性

可靠数据传输
运输层协议能够潜在的向应用程序提供一个重要服务是进程到进程的可靠数据传输。当一个运输协议提供这种服务时,发送进程只要将其数据传递进套接字,就可以完全相信该数据能无差错地到达接收进程。

吞吐量
运输层协议能够以某种特定速率提供确保的可用吞吐量。
具有吞吐量要求的应用程序被称为带宽敏感应用
相对的,弹性应用则可根据情况或多或少的利用可供使用的吞吐量。

定时
运输层协议可以提供定时保证。一个保证的例子如:发送方注入进套接字中的每个比特到达接收方的套接字不迟于100ms

安全性
运输协议能够加密由发送进程传输的所有数据,在接受主机中,运输层协议能够在将数据交付给接收进程之前解密这些数据。


因特网提供的传输服务
因特网为应用程序提供两个运输层协议 ,即UDPTCP

TCP服务
TCP服务模型包括面向连接服务可靠数据传输服务。当某个应用程序调用TCP作为其运输协议时,该应用程序就能获得来自TCP的这两种服务。
面向连接的服务:在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息。这个所谓握手过程提示客户和服务器,使它们为大量分组的到来做好准备。在握手阶段后,一个TCP连接就在两个进程的套接字之间建立了。这条连接是全双工的。当应用程序结束报文发送时,必须拆除该连接。
可靠的数据传送服务
通信进程能够依靠TCP,无差错、按适当顺序交付所有发送的数据。当应用程序的一段将字节流传进套接字时,它能够依靠TCP将相同的字节流交付给接收方的套接字,而保证没有字节的丢失和冗余。

TCP协议还具有拥塞控制机制。当发送方和接收方之间的网络发生拥塞时,TCP的拥塞控制机制会抑制发送进程。
无论是TCP还是UDP都没有提供任何加密机制。研制了TCP的加强版本,称为安全套接字层,SSL。SSL不是与TCP和UDP在同一层次上的第三种因特网传输协议,而是一种对TCP的加强,这种强化是在应用层上实现的。

UDP服务
UDP是一种不提供不必要服务的轻量级运输协议,它仅仅提供最小服务。UDP是无连接的,因此在两个进程通信前没有握手过程。UDP协议提供一种不可靠数据传送服务。UDP没有拥塞控制机制。


应用层协议
应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文;
应用层协议定义了:
1.交换的报文类型,例如:请求报文和响应报文
2.各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的
3.字段的语义,即这些字段中包含的信息的含义
4.一个进程何时以及如何发送报文,对报文进行响应的规则


『2.2 Web和HTTP』
HTTP概况
Web的应用层协议是超文本传输协议HTTP,它是Web的核心。
HTTP由两个程序实现:一个客户程序和一个服务器程序。客户程序和服务器程序运行在不同的端系统中,通过交换HTTP报文进行会话。HTTP定义了这些报文的结构以及客户和程序进行报文交换的方式。

Web页面是由对象组成的。一个对象只是一个文件。多数Web页面含有一个HTML基本文件以及几个引用对象。HTML基本文件通过对象的URL地址引用页面中的其他对象。每个URL地址由两部分组成:存放对象的服务器主机名和对象的路径名。

Web服务器实现了HTTP的服务器端,用于存储Web对象,每个对象由URL寻址。

HTTP定义了Web客户向Web服务器请求Web页面的方式,以及服务器向客户传送Web页面的方式。

HTTP使用TCP作为它的支撑运输协议。HTTP并不保存关于客户的任何信息,所以HTTP是一个无状态协议

非持续连接和持续连接
非持续连接:每个请求/响应对是经一个单独的TCP连接发送
持续连接:所有的请求以及响应经相同的TCP连接发送

往返时间:往返时间(RTT)是指一个短分组从客户到服务器然后再返回客户所花费的时间。
“三次握手”过程:客户向服务器发送一个小TCP报文段,服务器用一个小TCP报文段做出确认和响应。最后,客户向服务器返回确认。完成三次握手后,向该TCP连接发送一个HTTP请求报文。

粗略来讲,总的响应时间就是两个RTT加上服务器传输HTML的时间。


HTTP报文格式
HTTP报文有两种:
1.请求报文
2.响应报文

请求报文
HTTP请求报文的第一行叫做请求行,其后继的行叫做首部行
请求行有3个字段:
1.方法字段
2.URL字段
3.HTTP版本字段

GET /somedir/page.html HTTP/1.1

方法字段可以取几种不同的值:GETPOSTHEADPUTDELETE。绝大部分HTTP请求报文使用GET方法。URL字段带有请求对象的标识。

首部行

Host: 
www.someschool.edu

首部行指明了对象所在的主机。

Connection: close

告诉服务器不希望麻烦地使用持续连接,它要求服务器在发送完被请求对象后就关闭这条连接。

User-agent: Mozilla/5.0

指明用户代理,即向服务器发送请求的浏览器类型。

Accept-language: fr

表示用户想得到该对象的法语版本

响应报文

HTTP/1.1 200 OK
Connection: close
Date: Tue, 09 Aug 2011 15:44:04 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Tue,09 Aug 2011 15:11:03 GMT
Content-Length: 6821
Content-Type: text/html

(data data data data data ...)

这个响应报文有三个部分:一个初始状态行,6个首部行,然后是实体主体
实体主体部分是报文的主要部分,它包含了所请求的对象本身(表示为data data data data data …)。
状态行有三个字段:协议版本字段状态码和相应状态信息

HTTP/1.1 200 OK
//该状态行指示服务器正在使用HTTP/1.1,并且一切正常
Connection: close
//该首部行告诉客户,发送完报文后将关闭该TCP连接。
Date: Tue, 09 Aug 2011 15:44:04 GMT
//该首部行指示服务器产生并发送该响应报文的日期和时间
Server: Apache/2.2.3 (CentOS)
//该首部行指示该报文是由一台Apache Web服务器产生的
Last-Modified: Tue,09 Aug 2011 15:11:03 GMT
//该首部行指示了对象创建或者最后修改的时间
Content-Length: 6821
//该首部行指示了被发送对象的字节数
Content-Type: text/html
//该首部行指示了实体主体中的对象是HTML文本

状态码及其相应的短语指示了请求的结果:
200 OK: 请求成功,信息在返回的响应报文中
301 Moved Permanently: 请求的对象已经被永久转移了,新的URL定义在响应报文的
Location:首部行中。客户软件将自动获取新的URL。
400 Bad Request: 一个通用差错代码,指示该请求不能被服务器理解。
404 Not Found: 被请求的文档不在服务器上。
505 HTTP Version Not Supported:服务器不支持请求报文使用的HTTP协议版本。


用户与服务器的交互
Web站点希望能够识别用户,为此,HTTP使用了cookie
cookie技术有4个组件:
1.在HTTP响应报文中的一个cookie首部行;
2.在HTTP请求报文中的一个cookie首部行;
3.在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理;
4.位于Web站点的一个后端数据库。


Web缓存
Web缓存器也叫代理服务器,它是能够代表初始Web服务器来满足HTTP请求的网络实体。Web缓存器有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象副本。

因特网部署Web缓存器有两个原因。
首先,Web缓存器可以大大减少对客户请求的响应时间。
其次,Web缓存器能够大大减少一个机构的接入链路到因特网的通信量。

条件GET方法
条件GET请求报文:
1.请求报文使用GET方法
2.请求报文中包含一个“If-Modified-Since: ”首部行


『2.3 文本传输协议:FTP』
HTTPFTP都是文本传输协议,并且有很多共同的特点。例如:都运行在TCP上。
然而,这两个应用层协议也有一些重要区别,最显著的就是FTP使用两个并行的TCP连接来传输文件:控制连接数据连接
控制连接:用于两主机之间传输控制信息,如用户标识,口令,改变远程目录的命令以及“存放”和“获取”文件的命令。
数据连接:用于实际发送一份文件。
FTP使用控制连接来传输控制信息,因此FTP控制信息是带外传送的。
HTTP协议是在传输文件的同一个TCP连接中发送请求和响应首部行的。HTTP是带内发送控制信息的。
FTP服务器必须在整个会话期间保留用户的状态。HTTP则是无状态的,它不必对任何用户状态进行追踪

FTP命令
常见的命令如下:
USER username: 用于向服务器传送用户标识
PASS password: 用于向服务器发送用户口令
LIST: 用于请求服务器会送当前远程目录中的所有文件列表。该文件列表是经一个(新建且非持续连接)数据连接传送的,而不是在控制TCP连接上传送。
RETR filename: 用于在远程主机的当前目录检索文件。该命令引起远程主机发起一个数据连接,并经该数据连接发送所请求的文件。
STOR filename: 用于在远程主机的当前目录上存放文件。


『2.4 因特网中的电子邮件』
因特网电子邮件系统主要由三个主要部分:用户代理邮件服务器简单邮件传输协议
SMTP是因特网电子邮件中主要的应用层协议。它使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。

SMTP
SMTP是电子邮件应用的核心。
HTTP
1.从Web服务器向Web客户传送文件
2.进行文件传输时,使用持续连接
3.HTTP是拉协议,从服务器拉取信息
4.HTTP数据不受限制
5.HTTP把每个对象封装到他自己的HTTP响应报文中
SMTP
1.从发送邮件服务器到接收邮件服务器
2.进行文件传输时,使用持续连接
3.SMTP是推协议,发送邮件服务器把文件推向接收邮件服务器
4.SMTP要求每个报文使用7比特ASCII码格式
5.SMTP吧所有报文对象放在一个报文之中


邮件访问协议
部分流行的邮件访问协议,包括第三版的邮局协议(POP3)因特网邮件访问协议(IMAP)以及HTTP

POP3
POP3是一个极为简单的邮件访问协议。
随着建立TCP连接,POP3按照三个阶段进行工作:特许事务处理以及更新
特许阶段,用户代理发送用户民和口令以鉴别用户。
事务处理阶段,用户代理取回报文。
更新阶段,它出现在客户发出了quit命令之后,目的是结束该POP3会话。

在POP3的事务处理过程中,用户代理发出一些命令,服务器对每个命令做出回答。回答可能有两种:+OK(服务器表示前面的命令是正常的),-ERR(服务器用来指示前面的命令出错)

IMAP
IMAP比POP3有更多的特色,但是同时,也比POP3复杂的多。
IMAP服务器把每个报文与一个文件夹联系起来。
IMAP协议为用户提供了创建文件夹以及将邮件从一个文件夹移动到另一个文件夹的命令。IMAP还为用户提供了在远程文件夹中查询邮件的命令,按指定条件去查询匹配的条件。IMAP另一个重要特性是它具有允许用户代理获取报文组件的命令。


『2.5 DNS:因特网的目录服务』
主机的一种标识方法是用它的主机名,如cnn.com、www.yahoo.com等。但是主机名几乎没有提供关于主机在因特网中位置的信息。主机也可以使用IP地址进行标识。一个IP地址由4个字节组成,并有着严格的层次结构。

DNS
域名系统(DNS)的主要任务就是将人们喜欢的主机名标识方式转换成路由器喜欢的IP地址标识方式。
DNS是:
1.一个由分层的DNS服务器实现的分布式数据库;
2.一个使得主机能够查询分布式数据库的应用层协议。

DNS协议运行在UDP之上

DNS通常是由其他应用层协议所使用的,包括HTTPSMTPFTP,将用户提供的主机名解析为IP地址。
除了进行主机名到IP地址的转换之外,DNS还提供了一些重要的服务:
1.主机别名
2.邮件服务器别名
3.负载分配 DNS也用于在冗余的服务器上进行负载分配。繁忙站点被荣誉分布在多台服务器上。


DNS工作机理
集中式设计有很多问题:
1.单点故障
2.通信容量
3.远距离的集中式数据库
4.维护

DNS采用了分布式的设计方案
有三种类型DNS服务器:
1.根DNS服务器
2.顶级域服务器(TLD)
3.权威DNS服务器
还有另一类服务器,本地DNS服务器,但严格来说不属于层次结构。

DNS缓存
为了改善时延性能并减少在因特网上到处传输的DNS报文数量。
在一个请求链中,当某DNS服务器接收一个DNS回答时,它能将该回答中的信息缓存在本地存储器中。

DNS记录和报文
共同实现DNS分布式数据库的所有DNS服务器存储了资源记录(RR)。RR提供了主机名到IP地址的映射。

资源记录是一个包含了下列字段的4字组:
(Name ,Value,Type,TTL)
TTL是该记录的生存时间,它决定了资源纪律应当从缓存中删除的时间。Name和Value的值取决于Type:
1.如果Type=A,则Name是主机名,Value是该主机名对应的IP地址。
2.如果Type=NS,则Name是个域,Value是个知道如何获取该域名中主机IP地址的权威DNS服务器的主机名。
3.如果Type=CNAME,Value是别名为Name的主机对应的规范主机名。
4.如果Type=MX,则Value是个别名为Name的邮件服务器的规范主机名。


更多请查看个人博客:https://beatjerome.github.io

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值