Chapter2-ApplicationLayer
文章目录
- 一、Network Application Architectures
- 二、Processes Communicating(进程通信)
- 2.1 Client and Server Process
- 2.2 The Interface Between the Process and the Computer Network
- 2.3 Addressing Processes
- 三、Transport Services Available to Applications
- 四、Transport Services Provided by the Internet
- 五、Application-Layer Protocols
- 六、Some Network Applications
- 6.1 The Web and HTTP
- 6.1.1 Overview of HTTP
- 6.1.2 Non-Persistent and Persistent Connections
- 6.1.3 HTTP Message Format
- 6.1.4 User-Server Interaction: Cookies
- 6.1.5 Web Caching
- 6.2 Electronic Mail in the Internet
- 6.3 DNS-The Internet's Directory Service
- 6.4 Peer-to-Peer File Distribution
- 6.5 Video Streaming and Content Distribution Networks
本章讲的是计算机网路的应用层。
首先介绍了网络应用的两种结构体系:cs架构和P2P架构。
然后介绍了进程、IP地址、端口号等基本概念。
区分了TCP和UDP(包括SSL)并介绍了基于这两个链路层协议的应用服务。
基于上述基础,重点讲解了HTTP、SMTP、POP3、DNS(域名映射,配置个人域名时用到过该知识)。以及P2P文件传输。最后介绍了视频流的传输(涉及到DASH,基于HTTP的动态流适应)和内容分发(涉及到CDN服务器,在使用七牛云时用到过该知识)。
一、Network Application Architectures
对于application developer来说,网络架构(Network architecture)是固定的,它能为应用提供一些列特定的服务。而应用架构(application architecture)是由应用开发者设计的,基于不同的end systems。有两种主要的架构:cs架构(client-server architecture)和P2P架构(peer-to-peer architecture)。
1.1 client-server architecture:
Web、FTP、Telnet、e-mail都是采用cs架构的应用
- 客户端之间不能直接通信
- 服务器由固定的、周知的地址,即IP地址
- 服务器是常开的(alwways-on)
1.2 P2P architecture:
文件分享应用BitTorrent,迅雷下载,网络电话、视频会议Skype等都是采用P2P架构的应用。
- 主机间是对等的,可以直接通信,很少甚至不依赖于特定的服务器。there is minimal (or no) reliance on dedicated servers in data centers。
- 自扩展性:One of the most compelling features of P2P architectures is their self-scalability.不需要庞大的服务器设施和带宽,用户下载的同时也在上传。
- 由于P2P的去中心化架构,在安全、性能和可靠性上有很大的挑战。
1.3 Hybrid architecture:
即时通信应用(Instant messaging application)混合使用了两种架构中的元素,使用服务器追踪用户的IP地址,而用户间的消息在双方的主机间直接发送。
二、Processes Communicating(进程通信)
2.1 Client and Server Process
A network application consists of pairs of processes that send messages to each other over a network.即便是P2P架构,在通信时,我们也可以把两个进程分别标记为client和server。
- 在建立起communication session的语境下,client指主动建立连接的进程,server指等待建立连接的简称。In the context of a communication session between a pair of processes, the process that initiates the communication (that is, initially contacts the other process at the beginning of the session) is labeled as the client. The process that waits to be contacted to begin the session is the server.
2.2 The Interface Between the Process and the Computer Network
- client或server必须通过一个叫套接字(socket)的软件接口来发送/接收消息。A process sends messages into, and receives messages from, the network through a software interface called a socket.
- socket是连接应用层和传输层的接口,也被称为应用和网络之间的API(Application Programming Interface)。application developer可以完全控制socket在应用层的一切,但是对于传输层只能控制很有限的部分:(1)选择传输协议 (2)(有可能)设定几个传输层的参数,如最大缓存、maximum segment size等
2.3 Addressing Processes
标识一个进程,需要明确两部分信息:主机地址(在互联网中,主机可以被IP地址唯一标识)以及端口号(port number: 可以标识主机中的特定应用程序)。
常见的端口号:如Web服务器运行在80端口,邮件服务运行在25端口等,以后会专门总结。
三、Transport Services Available to Applications
许多网络都提供多种传输层协议,不同的协议提供不同的服务。我们要根据应用需要选择最适合自己的协议。我们从四个方面对传输层协议为应用程序提供的服务进行分类,分别是可靠数据传输(reliable data transfer)、吞吐量(throughput)、定时(timing)和安全性(security)。
-
Reliable Data Transfer
如果协议能够保证,数据能够正确且完整的传输到目的地,那么称该协议提供可靠的数据传输(Reliable Data Transfer)。电报、邮件、文件下载等都需要可靠的数据传输。而像视频会议等即使丢失少量数据,也不影响使用的可容忍丢失的应用**(loss- tolerant application**),则不需要。
-
throughput
因为共享带宽等原因,网络吞吐量是随时间波动的。有的协议可以提供最小传输速率的保证。像网络电话(以固定速率编码,需要以固定速率发送信息)等 **带宽敏感应用(bandwidth-sensitive application)就需要这种服务。而有的弹性应用(elastic applications)**如电子邮件、web应用等对吞吐量的要求没有那么严格。
-
timing
网络电话、视频会议、多人游戏等(interactive real-time applications)交互式实时应用程序对时间要求很严格,需要较低的时间延迟delay。
-
security
传输层协议可以提供一种或多种安全性服务。如发送方对数据进行加密(encrypt),接收方进行解密(decrypt)。除机密性confidentiality外,还有其他安全性服务,如数据完整data integrity 和端点鉴别end-point authentication。
四、Transport Services Provided by the Internet
互联网(因特网或TCP/IP网络)为应用程序提供了两种传输层协议:TCP和UDP。两种协议提供不同的服务。
4.1 TCP Services
TCP提供面向连接的服务以及可靠数据传输的服务。
- 面向连接的服务(Connection-oriented service):在client与server传递application-level messages之前,首先要进行握手的过程(handshaking procedure),互相交换传输层控制信息,以便双方准备好进行数据交换。握手完成后,两个进程sockets间的TCP connection(TCP连接)便建立起来了,这个连接时双工(full-duplex)的,双方可以同时发送报文message。数据传输完毕后,必须要关闭连接(tear down the connection)。
- 可靠数据传输服务(Reliable data transfer service):The communicating processes can rely on TCP to deliver all data sent without error and in the proper order.
- TCP也拥有 拥塞控制(congestion-control mechanism) 机制,通信进程可能不会因此受益但对整体的互联网来讲是有利的。但网络堵塞时,TCP congestion-control mechanism会抑制发送数据的进程。同时试图限制每一个TCP连接,使他们公平地共享网络带宽。
4.2 UDP Services
-
UDP是只提供基本服务的轻量级传输协议(UDP is a no-frills, lightweight transport protocol, providing minimal services)。
-
UDP是 无连接(connectionless) 的,所以通信前无需进行握手。
-
UDP的数据传输是不可靠的(unreliable data transfer service),接收方的UDP socket可能收不到完整的/正确顺序的信息。
-
UDP不提供拥塞控制机制,所以发送方可以以任意速率向下层发发送数据。
4.3 Services Not Provided by Internet Transport Protocols
- TCP/UDP协议都不保证timing以及throughput。很多依赖这些服务的应用在设计时,就很大程度上处理了缺乏timing及throughput保证带来的麻烦。
- TCP和UDP本身都不提供任何加密措施,即使是密码都是明文传输的,因此互联网界开发处理加强版的TCP: Secure Sockets Layer(SSL)。 使用TCP-enhanced-with-SSL不仅可以做到传统TCP可以做到的一切,还可以提供process-to-process的安全性服务,包括encryption, data integrity, and end-point authentication。SSL不是另一种传输层协议,只是在应用层强化了TCP,是TCP的增强版。SSL拥有自己的一套socket API,与传统的TCP socket API类似,但是会将进程发送来的数据进行加密在交由TCP socket,将TCP socket收到的数据传到SSL进行解密。
注:由于很多防火墙被配置成了阻挡(大多数类型的)UDP流量,所以很多依赖UDP的应用同时也提供TCP版本的备份,如Internet telephony。
五、Application-Layer Protocols
-
应用层协议规定了:
- 可交换的报文类型:如请求报文和响应报文。The types of messages exchanged, for example, request messages and response messages
- 不同类型报文的语法:报文中的字段以及描述方法。The syntax of the various message types, such as the fields in the message and how the fields are delineated
- 报文中字段的语义。The semantics of the fields, that is, the meaning of the information in the fields
- 发送报文、相应报文的规则。Rules for determining when and how a process sends messages and responds to messages
-
应用层协议有的是公开的(specified in RFCs and in the public domain),如HTTP协议。也有许多协议是专有的,如Skype使用自己专用的应用层协议。
-
An application-layer protocol is only one piece of a network application.
六、Some Network Applications
6.1 The Web and HTTP
6.1.1 Overview of HTTP
-
HTTP (超文本传输协议: HyperText Transfer Protocol) is the Web’s application-layer protocol.
-
一个网页(Web page)由object(如HTML file,JPEG image…)组成。每个object由唯一的URL标识。URL由两部分构成:存储资源的服务器主机名以及该object的路径名。如:
http://www.someSchool.edu/someDepartment/picture.gif
-
浏览器(Web browser)实现了HTTP的客户端(client side),在Web中,browser与client是等价的。Web server实现了HTTP的服务器端,存储Web object。常见的Web服务器有Apache和Microsoft Internet Information Server。
-
HTTP定义了Web client请求Web page的方式,以及server传输Web page的方式。
-
HTTP是基于TCP实现的,需要建立TCP连接。
-
Server只响应client的请求,而不会存储任何有关client的信息,所以HTTP也叫做无状态协议(stateless protocol)。
6.1.2 Non-Persistent and Persistent Connections
对每一次的request/response使用单独的TCP连接发送,叫做非持续连接(non-persistent connections);对所有的request/response都使用相同的TCP连接发送,叫做持续连接(persistent connections)。持续链接是HTTP的默认方式,但也可以将HTTP client和server配置为非持续连接的。
-
HTTP with Non-Persistent Connections
当请求带有10张图片的网页时,需要建立11个TCP连接,分别请求并响应每个文件的传输。这11个连接可以时串行(serial TCP connections)建立的,也可以是并行建立(parallel TCP connections)的(在默认设置下,大多数浏览器会开启5-10个并行的TCP连接,每个连接处理一次request-response。
缺点:每一个object都需要建立且维护一个全新的connection,对于每个连接,在client和server都要分配TCP buffer以及 TCP variables。对web server造成很大的负担。而且,每次建立TCP 都要消耗很长时间(one RTT to establish the TCP connection andd one RTT to request and receive an object)。
(RTT: round-trip time: a small package发送到server并返回client的往返时间)
-
HTTP with Persistent Connections
在server发送响应后,保持TCP连接open,之后相同的client发送后续请求时能够通过相同的TCP连接进行传送(带有10张图片的网页,只需要1个TCP连接)。如果连接经过一定的时间间隔(timeout interval)未被使用,则会被关闭。
6.1.3 HTTP Message Format
- HTTP request message请求报文:
-
首行为请求行(request line),之后的行叫首部行(header lines)。
-
请求行由三部分组成:the method field(GET/POST/PUT/DELETE/HEAD…), the URL field, the HTTP version field.
(HEAD与GET类似,但是服务器收到HEAD方法的请求时,会用一个HTTP message进行响应,而不是传回需要的object)
-
首部行指明了 (1)object所在的host(即使连接已经建立,但该字段仍是需要的,is required by Web proxy caches)。(2)Connection: close表明不想要建立持续连接,服务器在响应了client请求的object后可以直接关闭连接。(3)User-agent 指明浏览器的种类,如火狐浏览器。以便服务器发送同一object的不同版本。(4)Accept-language :表明client更想获得该语言版本的object。这只是HTTP众多content negotiation headers之一。
(cr: carriage return回车,lf: line feed换行
Entity body用于POST方法中提交的表单信息)
-
HTTP response message响应报文:
-
response message由三部分组成:status line状态行, 6行header lines首部行, entity body实体体。entity body 是主要部分,包含了所请求的object本身。
-
status line包含三个field:协议版本(protocol version field), 状态码(status code), 状态信息(corresponding status message)。
-
header lines: (1)Connection: close: 表明在发送完消息后,TCP连接关闭。(2)Date: 表明server创建并发送该response的日期和时间。(3)Server:与 User-agent类似,用来表明服务器的类型。(4)Last-Modified: 请求的object的创建时间/最近修改时间,对object caching极为重要(client or cache servers/proxy servers)。(5)Content-Length:发送的object的字节数。(6)Content-Type :表明object类型,这里是HTML text,object类型应该由该字段正式表示,而非用文件后缀名代替。
-
常见的状态码(status code) 即状态信息(associated phrases)
2XX 表明服务器成功处理了请求。 3XX 表明完成请求需要进一步操作,通常用来重定向。 4XX 表明请求可能出现了错误,妨碍了服务器的处理。 5XX 表明服务器处理请求时发生了内部错误。
-
200 OK: 请求正确处理且请求的数据成功返回
-
301 Moved Permanently: 表明请求的object被永久转移了,新的URL位于响应报文header的Location字段。浏览器会自动获取新URL。
-
400 Bad Request: 通用的error code,表明server无法理解该request。
-
404 Not Found: server找不到请求的document。
-
505 HTTP Version Not Supported: server不支持当前请求的HTTP协议版本。
-
-
6.1.4 User-Server Interaction: Cookies
HTTP是无状态协议,这简化了server的设计并且允许server处理多个并发的TCP连接。但是,这样server就无法获取client的状态并且无法根据client的状态来改变响应。HTTP使用cookies来restrict user access or serve content as a function of the user identity.
- Cookie技术有4部分
- a cookie header line in the HTTP response message;
- a cookie header line in the HTTP request message;
- a cookie file kept on the user’s end system and managed by the user’s browser;
- a back-end database at the Web site.
- Cookie可以用来标识用户(identify a user) and thus be used to create a user session layer on top of stateless HTTP.
6.1.5 Web Caching
Web cache-also called a proxy server– is a network entity that satisfies HTTP requests on the behalf of an origin Web server. 浏览器与Web cache间建立TCP连接,Web cache与server建立连接。再浏览器发送请求时,Web cache会检查是否已经存有要请求的object。
Content Distribution Networks(CDNs) : 在互联网上安装了许多geographically分散的caches,实现了大量流量的本地化(localize)。
好处:
- 降低响应时间。a Web cache can substantially
reduce the response time for a client request, particularly if the bottleneck bandwidth between the client and the origin server is much less than the bottleneck bandwidth between the client and the cache. - 减少institution的流量,节约成本。Web caches can substantially reduce traffic on an institution’s access link to the Internet. By reducing traffic, the institution does not have to upgrade bandwidth as quickly, thereby reducing costs.
- 整体上减少因特网的流量,提高所有应用的性能。Web caches can substantially reduce Web traffic in the Internet as a whole, thereby improving performance for all applications.
问题:
proxy server上的object可能是过时的(stale)。
解决方法:The Conditional GET
HTTP请求如果要成为Conditional GET 有两个条件:是GET请求,且首行包含If-Modified-Since字段。
An HTTP request message is a so-called conditional GET message if (1) the request message uses the GET method and (2) the request message includes an If-Modified-Since: header line.
例:
proxy cache 向Web server发送的请求:
Web server发送回proxy server的response:
proxy server本地存储该object并记录Last-Modified时间。过一段时间,client向proxy server请求该object时,proxy server会发送conditional GET到server,检查该object是否被更新。
如果object更新了Web server就发送最新的object回proxy server,否则为empty entity body。
304表示proxy server可以直接将cached copy发送回浏览器。
6.2 Electronic Mail in the Internet
Internet mail system有三个主要部分:
- user agent : 用户代理(User agents) allow users to read, reply to, forward, save, and compose messages.如 Microsoft Outlook以及Apple Mail等。
- mail server: 邮件服务器(mail server)是电子邮件体系结构的核心。每个接收方(recipient)都在mail server上有一个邮箱(mail box),该邮箱管理并维护发送给接收方的邮件。发送方发送邮件时,user agent会将邮件发送到邮件服务器的message queue中等待发送,发送时,该mail server会与接收方的mail server(25端口)建立TCP连接进行邮件的传输。如果发送失败,邮件被保存在该queue中,并以固定的时间间隔(通常30分钟)重新发送,若长时间发送不成功,服务器会删除该邮件并通知发送方。
- Simple Mail Transfer Protocol(SMTP): 使用可靠信息传输的TCP进行mail server间的邮件传送。每个mail server都实现了SMTP的client side和server side。
6.2.1 SMTP
限制了邮件body只能采用ASCII表示,传输能力不足,如果要发送图片等,需要将二进制的多媒体数据编码转化为ASCII码,使用SMTP传送后,再还原为多媒体数据。
SMTP使用的persistent connection,可以用同一个TCP连接发送多个邮件,每个message使用心得MAIL FROM: XXX开始,用独立的句点表示邮件结束。当所有的邮件发送完后才发送QUIT。(使用SMTP指令即可发送邮件,如HELO、MAIL FROM、RCPT TO、DATA、QUIT等)。
6.2.2 Comparison with HTTP
相同点:
- 都是将文件从一个host传到另一个host
- 都是用TCP连接,使用persistent connections
不同点
- HTTP主要是pull protocol,请求object的host建立连接并从另一台host获取object。而SMTP是push protocol,想要发送邮件的host建立连接并向另一台host发送邮件。
- SMTP要求body of message必须要7-bit ASCII编码,不满足的需要转码。HTTP不需要。
- 对于包含text和image的document,HTTP单独请求每个object,而SMTP将所有内容都包含在一个message中。
6.2.3 Mail Message Formats
From:必要
To: 必要
Subject等head line是可选
6.2.4 Mail Access Protocols
以前接收方需要登陆到server host并通过该server的mail reader来阅读邮件。而现在使用client-server架构,用户在自己的end system来read e-mail,enjoy a rich set of features, 包括浏览附件和多媒体信息。用户自己的end system上运行user agent,用来向mail server获取自己的邮件。
用户从自己的主机上向mail server拉取自己的邮件的过程,可以通过特定的mail access protocol实现。如Post Office Protocol-Version 3(POP3), Internet Mail Access Protocol(IMAP) 以及 HTTP。
SMTP用于将邮件从发送方的mail server发送到接收方的mail server以及将邮件从发送方的user agent发送到自己的mail server.
POP3等mail access protocol用于将邮件从接收方的mail server传送到接收者的user agent.
-
POP3: 很简单,功能也很有限。
- user agent与mail server建立TCP连接(端口110)。
- 建立好TCP连接后,POP3经历三个步骤: authorization, transaction, and update.
- authorization: 通过用户名、密码(user , pass )验证用户
- transaction: user agent获取新信息,并且在该阶段,user agent可以标记/取消删除messages,获取mail statistics。user agent发出一条指令后,server会用 +OK 或者 -ERR 回应。使用了POP3的 user agent可以被配置为 download and delete(list, retr, dele,在获取邮件后将邮件从server删除)或者 download and keep
- update: client发出 quit 指令后,停止POP3 会话,并且删除那些被标记为删除的messages。
-
IMAP: 有更多的features但实现也更复杂
POP3 access中,接收方可以将邮件下载到本地(创建文件夹并将邮件信息等保存到文件夹中),而且对下载后的邮件进行操作(删除、移动文件夹等),对邮件的操作不会同步更新到mail server。对于多主机用户来说很不方便。而IMAP将message与folder相关联,当邮件到达后,便与用户的INBOX folder相关联起来。接收者可以将这些信息移到新的folder中进行操作。这些操作都会同步更新到mail server(remote folders)。 与POP3不同,IMAP server通过IMAP session维护用户状态信息,如文件夹名,以及文件夹中关联的messages。 IMAP允许user agent获取部分信息,如只获取header of message或以部分MIME message。 (该特性在低带宽时十分有用)。
-
Web-Based E-Mail
- user agent就是Web browser
- 用户与remote mailbox通过HTTP进行通信(即mail server使用HTTP协议而非POP3/IMAP将邮件信息发送到浏览器,浏览器通过HTTP协议而非SMTP将邮件发送到自己的mail server)。
6.3 DNS-The Internet’s Directory Service
有两种方式可以唯一标识一台主机(host)。分别是主机名(hostname)和IP address。
hostname可读性强,方便记忆;IP地址有层次结构,长度固定,可以被路由器处理。
6.3.1 Services Provided by DNS
- DNS(domain name system)的主要任务是将hostname转换为ip地址
- DNS组成:
- DNS服务器:是有层次结构的(hierarchy),而且使用分布式数据库。通常是UNIX机器,而且运行着Berkeley Internet Name Domain(BIND)。
- 应用层协议:允许主机查询分布式数据库。基于UDP协议,使用53端口。
- DNS通常被其他应用层协议使用,如HTTP和SMTP。
- DNS提供的其他重要服务:
- Host aliasing。处理主机别名。应用程序可以调用DNS来获得主机别名所对应的规范主机名(canonical hostname)以及对应的IP地址。
- Mail sserver aliasing。处理邮件服务器别名。电子邮件应用程序可以调用DNS, 对提供的邮件服务器别名进行解析,以获得该主机的规范主机名及其IP 地址。
- Load distribution。在多个相同的服务器(replicated server)中分布负载。可能有多个相同的服务器部署在不同的end system,且对应的IP地址不同。所以一个规范主机名对应着IP地址集。当client对这种地址发出DNS查询时,server会返回IP地址集中的所有地址,但是会对地址进行循环排序。cilent通常使用返回集合中的第一个IP地址,所以DNS起到了流量分布的功能。
6.3.2 Overview of How DNS Works
DNS服务器如果是centralized design(只有一个服务器),很难scale。具体有如下问题:
- 单点故障(A single point of failure)。服务器宕机,整个互联网崩溃。
- Traffic volume。需要处理所有DNS请求。
- Distant centralized database. DNS服务器集中在一个地方,则距离很远的host发出的请求可能要很长时间才能回应。
- Maintenance。DNS服务器需要记录所有Internet hosts。存储量大且更新频繁。
由于上述问题的存在,DNS is distributed by design。
6.3.2.1 A Distributed, Hierarchical Database
-
DNS服务器是分布式的、分层次的。没有一台服务器记录了所有主机的映射关系。大致有三种类型的DNS服务器。
- root DNS servers。有超过400台根DNS服务器,分散在世界各地。提供*域服务器的ip地址。
- top-level domain(TLD) DNS servers。*域服务器负责*域名如com 、org 、net 、edu 和gov, 以及所有国家的*域名如uk 、fr 、ca 和jp。提供authoritative DNS服务器的ip地址。
- authoritative DNS servers。每个可以被公开访问的主机都必须提供自己的DNS信息。组织机构可以搭建并维护自己的权威DNS服务器来存储这些记录或者付费使用服务提供商的权威DNS服务器。百度、麻省理工大学等都有自己的权威DNS服务器。
除此外,还有local DNS server,本地DNS服务器,由ISP(如一个大学、一个系或者运营商)提供。当host发送DNS查询时,会被首先发送到本地DNS服务器,再由本地DNS服务器发送该请求,起到代理的作用。
-
以访问 gaia.cs.umass.edu 为例
- 主机发送DNS query message到llocal DNS server
- local DNS server发送到root DNS server
- root DNS server返回edu*域DNS服务器的ip地址,local DNS server发送到该edu TLD
- TLD server返回 Massachusetts大学的authoritative server的IP地址,local DNS server发送到该权威DNS服务器,获取gaia.cs.umass.edu服务器所在的地址,发送回host。
多数时,TLD DNS Server需要通过一系列authoritative DNS server才能知道最终需要的hostname对应的ip地址,即只知道intermediate DNS server。如TLD DNS server知道Massachusetts大学的DNS server,该大学DNS server又知道各个系的server,并将该请求发送给cs专业的server,由该DNS返回最终需要的ip地址。
查询的过程利用了递归查询(recursive query)和迭代查询(iterative query)。从host到local DNS server发出的查询是递归查询。而之后Local DNS server发出的是迭代查询。
6.3.2.2 DNS Caching
DNS Caching是DNS系统的一项重要特性。通过DNS 缓存可以提高查询的性能,减少要发送的DNS数量。在第一次发出DNS请求后,收到DNS reply的DNS server可以将获得的映射(mapping)存储到本地。之后再有对相同hostname的DNS reply,该server可以直接返回结果,而不用向其他server请求。因为hosts以及hostname与ip之间的映射可能发生变化,所以DNS server仅将cached information保留一段时间(通常设置为2天)。
6.3.3 DNS Records and Messages
DNS servers的数据库中从存储着resource records(RRs),RRs提供了hostname到IP地址的映射。每条DNS reply message都载有一条或多条resource record。
RRs
每条resource record是一个4元组,包含了4部分信息:
-
TTL: time to live of the resource record.决定了该resource何时应从缓存中清除。
-
Type有很多种,决定了Name和Value字段的含义。
-
Type=A,Name是hostname,Value是指向hostname的IP地址。
Type A record提供标准的hostname-to-IP address mapping。
Type A record示例:(relay1.bar.foo.com, 145.37.93.126, A)
-
Type=NS,Name是domain(如foo.com),Value是authoritative DNS服务器的hostname,该DNS服务器存储着该域名下的hosts的IP address。
Type NS record用于将DNS query路由到其他服务器。
Type NS record:(foo.com,dns.foo.com, NS)
-
Type=CNAME,Name为Value中指定的canonical hostname(规范主机名)的别名。
Type CNAME record用于查询hostname的规范主机名。
Type CNAME record:(foo.com,relay1.bar.foo.com, CNAME)
-
Type=MX,Name为mail server的canonical name(Value)的别名,Name为该hostname的别名。
Type MX record允许邮箱服务器有简短的别名。但是该别名可能既是邮箱服务器的别名,又是Web服务器的别名。如果请求的是邮箱服务器,client需要发送请求MX record,而请求其他服务器,则需要发送请求CNAME record。
(foo.com, mail.bar.foo.com, MX)
如果DNS server is authoritative for a particular hostname,他应该保对该hostname 的 Type A record(记录了对应的ip地址),注:即使不是该hostname 的权威服务器,也可能在cache中存储了Type A record。如果DNS server is not authoritative for a hostname,该server应该保存对该hostname 的Type NS name(路由到权威DNS服务器),同时包含一条Type A record(记录了要路由的权威服务器的ip地址)。
DNS Messages
DNS query message和 reply message有着相同的格式。
- 前12字节是 head section。
- Identification:16比特,用于标识query,并拷贝到该query的reply message中,让client将收到的reply和发送的query匹配。
- Flags:其中1比特是query/reply falg,用来标识message是query还是reply。1比特是autoritative flag,当DNS 服务器是权威服务器时将reply message的位设置为1。1比特是 recursion-desired flag,当clent(host或者DNS server)希望查询的DNS server在没有该记录时递归查询时设置为1。
- Number: 四个number-of 字段,表明header后的四个data section中出现的数据的数量。
-
question section,表明正在查询的信息。
- name field:要查询的name
- type fiield:关于该name要查询的问题类型,如要查询的时host address(Type A)还是mail server(Type MX)
- answer section,包含了要查询的name的resource records。可能有许多条,比睿replicated Web servers。
- authority section,包含了其他权威服务器的记录
- additional section,包含了其他有用的记录。比如对于MX请求,会返回mail server的canonical hostname,则在additional section中包含了该规范主机名对应的ip地址的Type A record。
Inserting Records into the DNS Database
- the contents of each DNS server were configured statically, for example, from a configuration file created by a system manager
- More recently, an UPDATE option has been added to the DNS protocol to allow data to be dynamically added or deleted from the database via DNS messages.
6.4 Peer-to-Peer File Distribution
6.4.1 Scalability of P2P Architectures
CS结构随着peer增加成线性增长,而P2P表现出了很好的扩展性。
6.4.2 BitTorrent
BitTorrent是非常流行的P2P协议,用于文件的分发。所有参与一个特定文件分发的peers的集合称为 torrent。 peers in a torrent从另一个peer下载equal-size chunks,通常为256KB。当peer累计下载了许多chunks后,他将边下载边上传。
每个torrent都有一个infrastructure node,叫做tracker。当有peer加入torrent,它将在tracker上注册,并且周期性的通知tracker是否还在torrent中。
假如Alice新加入torrent。tracker将随机选择部分peers,并将他们的IP地址发送给Alice。Alice尝试与ip list上的所有peer建立TCP连接。Alice成功建立的连接称为neighboring peers。neighboring peers随着旧peer的离开和新peer加入发生变化。
在任何时刻,每个peer都有该文件的部分chunks,不同的peer有不同的部分。Alice会周期性的通过TCP连接,向neighboring peers获取他们拥有的chunks。Alice采用rarest first技术选择要请求的chunks,请求当前neighbors拥有的最少的chunks,这样能够使得chunks能更快在torrent中平均分布。BitTorrent使用一种trading algorithm来发送chunks。首先Alice会根据目前以最高速率向他发送数据的neighbors进行给定优先级,并选择四个以最高速率发送数据的neighboring。然后她会向这4个peers发送chunks。每过10s,将重新计算速率,可能会修改这4个peers。这4个peers称为unchoked。每过30s,她将随机选择另外一个neighbor并向他发送chunks。这个neighbor称为optimistically unchoked。由于Alice向该随机选的neighbor(如Bob)发送了数据,所以她可能成为Bob的4个unchoked peers之一,反之如果Bob以高速率向Alice发送数据,Bob也可能成为Alice的unchoked peers之一。
6.5 Video Streaming and Content Distribution Networks
6.5.1 Internet Video
现有的压缩算法可以将视频压缩成任何想要的比特率。比特率越高,质量越好。为了视频能连续的流畅播放,网络的平均吞吐量至少要达到压缩视频的比特率。
6.5.2 HTTP Streaming and DASH
在HTTP streaming中,video存在HTTP服务器,有特定的URL,就像普通文件请求一样。一旦client收到的数据超过某个阈值(buffer中),就可以进行视频的播放。
HTTP streaming无法选择同一视频的不同比特率/质量的版本。所以出现了Dynamic Adaptive Streaming over HTTP(DASH)。在DASH中,同一video根据比特率/质量分为不同的版本,每个版本都存在HTTP server中,且有不同的URL。视频不同版本的URL、比特率信息存在服务器的manifest file中。client会首先请求manifest file获取该视频各个版本的信息。通过在HTTP GET请求信息中制定URL 和 byte range一次请求一个chunk。然后根据宽带,通过rate determination algorithm选择要请求的下一个chunk(包括版本url以及该chunk 的byte range)。
6.5.3 Content Distribution Networks
为了解决分发massive amounts of videos and other types of Web content, including documents, images and audio,许多公司使用了Content Distribution Networks(CDNs)。CDNs管理着分布在不同地域的server,server上存放着content的副本,用于将用户请求发送到能够提供最好用户体验的CDN server中。
CDNs通常采用以下两种不同的server placement philosophies中的一种:
- Enter Deep. enter deep into the access networks of
Internet Service Providers, by deploying server clusters in access ISPs all over the world. 可以离用户更近,减少user和CDN server中的链路和路由器的数量,降低延迟提高吞吐量。但是维护和管理服务器集群困难。 - Bring Home。bring the ISPs home by building large clusters at a smaller number (for example, tens) of sites. Instead of getting inside the access ISPs, these CDNs typically place their clusters in Internet Exchange Points (IXPs)。虽然性能提升不如上面的方法,但是维护和管理成本低。
服务器集群中的CDN server并不会为所有content都进行备份。而是采用类型Web caching的技术缓存热点。
CDN Operation
大多数CDNs利用DNS来解析并重定向请求。
如NetCinema利用第三方CDN KingCDN缓存videos。当host访问 http://video.netcinema.com/6Y7B23V 时,NetCinema权威DNS服务器在处理 video.netcinema.com 的请求时,会将该DNS查询交付给KingCDN,返回KingCDN的hostname而不是要请求的网站的IP地址。然后Local DNS server向KingCDN的DNS server发起请求,返回合适的CDN server的ip地址。
Cluster Selection Strategies
从服务器集群选择合适的CDN 服务器提供服务,有多种方法。
- 地理位置最近(geographically closest)。发送请求的local DNS server的ip地址时确定的,根据ip可确定位置。使用距离最近的CDN服务器。
- 地理位置最近,不一定在网络上的距离就近(经过的链路和路由器少)
- 一些end users通过配置使用remotely located LDNSs
- CDNs can perform periodic real-time measurements of delay and loss performance between their clusters and clients. 集群中的CDN需要周期性的向LDNS发送probes,
- 许多LDNS被配置为不响应这种probes。
Cluster Selection Strategies
从服务器集群选择合适的CDN 服务器提供服务,有多种方法。
- 地理位置最近(geographically closest)。发送请求的local DNS server的ip地址时确定的,根据ip可确定位置。使用距离最近的CDN服务器。
- 地理位置最近,不一定在网络上的距离就近(经过的链路和路由器少)
- 一些end users通过配置使用remotely located LDNSs
- CDNs can perform periodic real-time measurements of delay and loss performance between their clusters and clients. 集群中的CDN需要周期性的向LDNS发送probes,
- 许多LDNS被配置为不响应这种probes。
上一篇: chapter9 异常总结
下一篇: javascript数组方法有哪些