《计算机网络》-读书笔记-第二章-应用层

《计算机网络》-读书笔记-第二章-应用层

2.1 应用层协议原理

2.1.1 网络应用程序体系结构

两种主流体系结构:客户 – 服务器体系结构和对等(P2P)体系结构

2.1.2 进程通信

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

2.1.3 可供应用程序使用的运输服务

开发一个应用时,必须选择一种可用的运输层协议。运输层服务要求分类:可靠数据传输、吞吐量、定时和安全性。

2.1.4 因特网提供的运输服务

TCP服务:面向连接的服务、可靠的数据传送服务

UDP服务:轻量级运输协议,它仅提供最小服务。UDP是无连接的

2.1.5 应用层协议

应用层协议定义了运行不同端系统上的应用程序进程如何相互传递报文。

2.1.6 本书涉及的网络应用

Web、文件传输、电子邮件、目录服务和P2P

2.2 Web和HTTP

2.2.1 HTTP概况

Web的应用层协议是超文本传输协议(HyperText Transfer Protocol,HTTP)
HTTP由两个程序实现:一个客户程序和一个服务器程序,它们在不同的端系统中,通过交换HTTP豹纹进行会话

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

HTTP是一个无状态协议,服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息

2.2.2 非持续连接和持续连接

采用非持续连接的HTTP,缺点:必须为每一个请求的对象建立和维护一个全新的连接。

采用持续连接的情况下,服务器在发送响应后保持该TCP连接和打开。在相同的客户与服务器之间的后续请求和响应报文能够通过相同的连接进行传送。

2.2.3 HTTP报文格式

HTTP规范[RFC 1945;RFC 2616]包含了对HTTP报文格式的定义
HTTP报文由两种:请求报文和响应报文

2.2.4 用户与服务器的交互:cookie

cookie允许站点对用户身份进行跟踪

2.2.5 Web缓存服务器

广泛应用的是内容分发网络(CDN),减少对客户请求对响应时间,改善了应用对性能

2.2.6 条件GET方法

HTTP的一种机制,允许缓存器验证Web缓存服务器上的内容是否是最新的

2.3 文件传输协议:FTP

HTTP 和 FTP都是文件传输协议,都运行在TCP上。
FTP使用了两个并行的TCP连接来传输文件,一个是控制连接(贯穿整个用户会话期间)、一个是数据连接(每个文件传输都需要建立一个新的数据连接)

2.4 因特网中的电子邮件

2.4.1 SMTP

2.4.2 与HTTP的对比

HTTP主要是一个拉协议(pull protocol)
SMTP基本上是一个推协议(push protocol)

报文格式不同

如何处理一个既包含文本又包含图形(也可能是其他媒体类型)的文档,HTTP 把每个对象封装到它自己的 HTTP 响应报文中,而 SMTP 则把所有报文对象放在一个报文之中。

2.4.3 邮件报文格式和MIME

2.4.4 邮件访问协议

SMTP 用来将邮件从发送方的邮件服务器传输到接收方的邮件服务器;SMTP 也用来将邮件从发送方的用户代理传送到发送方的邮件服务器。如 POP3 这样的邮件访问协议用来将邮件从接收方的邮件服务器传送到接收方的用户代理。

2.5 DNS:因特网的目录服务

2.5.1 DNS提供的服务

一种能进行主机名到 IP 地址转换的目录服务。这就是域名系统(Domain Name System, DNS)的主要任务。一个由分层的 DNS 服务器(DNS Server)实现的分布式数据库;
一个使得主机能够查询分布式数据库的应用层协议。
DNS 服务器通常是运行 BIND (Berkeley Internet Name Domain)软件【BIND 2012] 的 UNIX 机器。
DNS 协议运行在 UDP 之上,使用 53 号端口。

2.5.2 DNS工作原理概述

DNS 缓存(DNS caching):为了改善时延性能并减少在因特网上到处传输的 DNS 报文数量,DNS 广泛使用了缓存技术。DNS 缓存的原理非常简单。在一个请求链中,当某 DNS 服务器接收一个 DNS 回答(例如,包含主机名到 IP 地址的映射)时,它能将该回答中的信息缓存在本地存储器中。DNS 服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。

2.5.3 DNS记录和报文

共同实现 DNS 分布式数据库的所有 DNS 服务器存储了资源记录(Resource Record, RR), RR 提供了主机名到 IP 地址的映射。每个 DNS 回答报文包含了一条或多条资源记录。

2.6 P2P应用

2.6.1 P2P文件发布

在 P2P文件分发中,每个对等方能够重新分发它所有的该文件的任何部分,从而在分发过程中协助该服务器。到 2012年止,最为流行的 P2P文件共享协议是BitTorrent。该应用程序最初由 Bram Cohen 所研发,现在有许多不同的独立且符合 BitTorrent 协议的 BitTorrent 客户,就像有许多符合 HTTP 协议的 Web 浏览器客户一样。

2.6.2 分布式散列表

构建这样一个数据库直接采用客户-服务器体系结构,以在一个中心服务器中存储所有(键,值)对,在数以百万计的对等方上存储(键,值)对。在该 P2P系统中,每个对等方将保持(键,值)对仅占总体的一个小子集。我们将允许任何对等方用一个特别的键来查询该分布式数据库。分布式数据库则将定位拥有该相应(键,值)对的对等方,然后向查询的对等方返回该(键,值)对。任何对等方也将允许在数据库中插人新键一值对。这样-种分布式数据库被称为分布式散列表(Distributed Hash Table, DHT)。

2.7 TCP套接字编程

2.7.1 UDP套接字编程

2.7.2 TCP套接字编程

2.8 小结

因特网应用普遍采用的客户一服务器模式,并且知道了该模式在 HTTP、FTP、SMTP、POP3 和 DNS 等协议中的使用。我们已经更为详细地学习了这些重要的应用层协议以及与之对应的相关应用(Web、文件传输、电子邮件和 DNS)。我们也已学习了日益流行的 P2 P 体系结构以及它如何应用在许多应用程序中。我们还探讨了使用套接字 API 构建网络应用程序的方法。我们考察了面向连接的(TCP)和无连接的(UDP)端到端传输服务中的套接字应用。至此,我们在分层的网络体系结构中的向下之旅已经完成了第一一步。

我们对协议给出了一个相当含糊的框架性定义:“在两个或多个通信实体之间交换报文的格式和次序, 以及对某报文或其他事件传输和/或接收所采取的动作。”本章中的内容,特别是我们对 HTTP、FTP、SMTP、POP3 和 DNS 协议进行的细致研究,已经为这个定义加人了相当可观的实质性的内容。协议是网络连接中的核心概念;对应用层协议的学习,为我们提供了有关协议内涵的更为直觉的认识。

我们描述了 TCP 和 UDP 为调用它们的应用提供的服务模型。

说点什么

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subscribe  
提醒