《计算机网络自顶向下方法》学习笔记第二章:应用层
应用层
应用层协议原理
网络应用程序体系结构
客户 - 服务器体系结构
客户与服务器之间的体系结构叫做客户 - 服务器体系结构。
服务器:一台一直保持开放状态,并对客户的主机请求进行响应的相关设备被称作客户端。
* 时时刻刻运行。
* 提供固定的、周知的地址。
* 有配备大量主机的数据中心。
客户:一台对服务器发送请求的主机叫做客户。
- 通过网络平台实现与服务器的交互。
- 无法通过直接通讯手段与其他客户主机建立联系。
- 一般会选择配置动态IP地址。
- 作为中继节点间接地接入到主网络中。
典型应用:Web、telnet、FTP、电子邮件。
P2P体系结构
不需要专门服务器的支持,在线各台主机之间实现互相通信的体系架构被称为P2P网络架构。
常见应用场景:常见的文件传输服务包括Bittorrent、迅雷提供的网络下载辅助工具以及Skype支持的远程沟通平台
进程通信
参与通信的主体被称为进程,无论是同一个端系统还是两个不同端系统的进程之间都需要通过进程进行通信。不同端系统的进程中通过互相传递报文来进行通信。
进程与计算机网络的接口
两个主机上的进程间通信必须通过完整的TCP/IP协议。
这些应用层上的进程产生的报文如何发送到上一层的传输层?
具体实现的方式是一个称为套接字的应用程序接口。
- 套接字:套接字是一种软设备组件,在程序设计中被用作一种可编程的接口。应用程序开发者可以通过对套接字进行设置或管理来完成报文与传输层之间的数据传递;同时,在应用层面开发人员也可以根据需求选择所连接传输层支持的不同协议类型(如TCP、UDP)。
进程寻址
在一台主机上运行多个进程时,在接收到来自下层的报文时,如何确定接收该报文的进程?为此必须有一个标识来区分接收到的不同报文。这个标识称为端口号。它用于指定发送方要发送给哪个接收方。发送过程会在发送报文时指定该端口号,并由接收设备根据该端口号来决定如何处理接收到的报文。
应用程序服务要求
因为应用程序的类型繁多所以不同类型的程序对数据传输的需求各不相同。根据这些需求我们可以将其划分为四类:一是对数据传输可靠性的要求二是关注数据吞吐量的大小三是对于处理时间有严格限制的需求四是重视信息安全性的需求。
- 可靠数据传输: 当分组在网络中传递时, 由于各种原因可能导致丢包现象. 对于一些需求严格的程序而言, 丢包是不允许的(如: email, finance applications等), 而另一些程序对此并不敏感(如: video calls等).
- 吞吐量: 部门的一些程序对传输速率要求很高(如: video software),但也有程序对此要求较低(如: email程序).
- 定时: 数据通信过程中不可避免地存在延迟现象, 不同的应用程序对于延迟的容忍度也各不相同.
- 安全性: 对于一些关键业务系统, 必须采取加密措施来保护用户的数据传输内容, 从而达到提升系统安全性的目的.
因特网提供的运输服务
因特网为应用层提供了两种运输层协议,在TCP/IP体系结构中分别称为 Transmission Control Protocol 和 User Datagram Protocol(TCP/UDP)。应用程序开发者可以根据具体需求通过套接字选择使用哪一种协议来传递报文。
- TCP:包括面向连接的服务和可靠数据传递服务。
- UDP:不提供不必要的服务。
应用层协议
为此,在了解不同主机之间通过进程间通信机制传递数据的基础上,在上层协议的作用下构建报文结构成为关键问题。上层协议不仅定义了支持的不同类型的报文传输需求及其相应的语法规则(即传输语法),还指定了各字段的意义和格式(即字段的语义),以及生成和响应的过程所需的时间间隔。
Web和HTTP
非持续连接和持续链接
对于单次只能处理一个请求的一次性链接模式被定义为非持续链接模式而在这种模式下连续性的链接则被定义为持续链接模式
非持续连接
假设客户端请求一个web页面,这个页面包含HTML文件和10个JPEG图片。
客户端尝试与目标服务器建立TCP连接。
在建立之后, 客户端发送一个HTTP请求报文, 并成功获取所需HTML文件。
服务器在收到请求信息后, 将响应返回给客户端.
接着, 服务器发送断开确认信息, 表示已切断与客户端的连接.
客户端接收到完整的响应包后, 立即关闭当前的TCP连接.
在解析并分析生成的HTML内容后, 客户端发现共有10个JPEG图片资源.
然后, 程序会重复第一步循环, 直到所有JPEG图片资源都已接收完毕为止。
持续连接
假设客户端请求一个web页面,这个页面包含HTML文件和10个JPEG图片。
- 客户端建立TCP连接至指定服务器端。
- 完成TCP连接后, 客户端发送一个HTTP请求报文, 并接收返回的HTML文件。
- 服务器接收报文, 并响应客户端。
- 响应报文被客户端接收。
- 在解析完成后发现系统中存在10个JPEG图片文件。
- 客户端发送一个HTTP请求报文以获取图片数据。
HTTP报文格式
Cookie技术
因为HTTP协议属于无状态协议的特点,在一些特定场景下可能会遇到一些问题。因此提出了Cookie技术作为解决方案。
连接过程
假设客户端访问一个从来没有访问过的服务器网站。
- 客户端尝试建立TCP连接至目标服务器。
- 成功建立TCP连接后, 客户端随后发送了HTTP请求数据包。
- 当服务器接收到此数据包后, 它会生成一个响应数据包.
- 在这一过程中, 当服务端接收到此数据包后, 会检查对应的Cookie记录.
- 在这段时间结束之前,
- 当客户再次访问该服务台时,
- 当客户发送包含这些Cookie头信息的数据包时,
- 服务台接收到此数据包后, 会检查对应的Cookie记录.
- 并相应地返回了一个回应数据包.
出现场景
- 购物车
- 登陆界面的10天免登录
Web缓存器
也可称为Web代理服务器。位于服务器与客户端之间的Web缓存器通常包含一个缓存页面的机制。该技术能够有效存储客户端曾经访问过的界面信息,并在后续请求中提供预 cached 的内容。
连接过程
假设客户端向某个服务器A发送请求。
- 客户端通过TCP协议与Web缓存器建立连接。
- 当连接建立完成后, 客户端发送包含目标对象的HTTP请求报文至Web缓存器。
- Web缓存器检查本地缓存中是否存在该对象副本。
- 如果存在对应副本, 则直接向客户端返回包含该对象的HTTP响应报文。
- 如果未找到对应副本, 则Web缓存器通过TCP协议与服务器A建立连接。
- 当连接建立完成后, 在本地生成并发送包含目标对象的完整请求报文至服务器A。
- 当服务器A返回包含目标对象及相应响应信息的完整响应报文后
- 缓存器将新获取的目标对象副本保存到本地缓存中。
因特网中的电子邮件
该系统包含三个关键组件:客户端程序(即用户的代理)、中间件(即 email 服务器)以及 SMTP 协议(即简单 email 转输)。假设当客户 A 向客户 B 发送电子邮件时:通过其客户端程序将消息传递给本地邮箱服务;本地邮箱服务接收并传递到客户的远程邮箱服务;远程邮箱服务将在适当时机将消息传递回至客户的客户端程序。
SMTP
SMTP作为电子邮件中的核心应用层协议,在其通信过程中依赖于TCP提供可靠的字节传输服务。基于两个邮件服务器之间的通信运作,在这个系统架构下负责发送邮件的机器称为客户端设备;而处理邮件接收任务的核心机器则被定义为服务器端设备。
传输过程
假设A向B发送邮件。
- A拥有撰写好的邮件以及B的邮箱地址,并通过其用户代理向A所在的邮箱服务器发送了报文。
- A用户的代理向其对应的邮箱服务器发送出了报文。
- A邮箱服务器上的SMTP服务接收到该报文后,并创建了一个通往B邮箱服务端口上的TCP连接。
- 在TCP连接建立的同时(即建立时),经过一系列SMTP握手流程后步骤完成之后(即完成之后),A邮箱服务随后向对方发出了相关报文。
- B接收方服务端在接收到该报文后(即立即之后),将其内容存储到了本地邮箱中。
- B希望查看自己的电子邮件时(即当需要查阅时),会调用其对应的用户代理工具来实现这一目标。
特别提醒:即使A的邮件服务器与B的邮件服务器之间的距离再远(即两者的间距极大),也不经过任何中间服务器。
邮件报文格式
邮件访问协议
DNS
当人们在浏览网站时一般会使用主机域名进行连接,在网络中进行资源定位主要是依靠IP地址这一行为背后的核心技术机制正是依靠域名系统(DNS)来进行这一转换工作。 DNS的主要功能是什么:
基于层次分明的DNS服务器构建的一个分布式数据库系统
分布式、层次数据库
由于集中式DNS系统存在明显局限性,在全球范围内的广泛部署下难以实现高效管理与扩展需求的情况下
根DNS服务器
400多个根DNS服务器分布在全球各地,由13个组织管理。
顶级域DNS服务器
对于每个顶级域如com,gov,edu和所有国家域的顶级域都有TLD服务器。
权威DNS服务器
每个有公共可访问的主机都必须提供权威DNS服务器。
本地DNS服务器
每家ISP配置了一台本地 DNS 服务器。当终端系统发起 DNS 请求时, 会首先经由该机房内的本地 DNS 服务器转发该请求至其所属的三层 DNS 服务组。
