本文章为对学习《计算机网络:自顶向下方法》第7版后做的一些笔记,方便以后想要回顾时得以查看。同时希望通过对学习的各个章节做下笔记和总结,让自己能更加了解计算机网络的知识网络。文章是通过看书以及网上查找资料后的一些笔记以及理解,由于水平有限,可能出现一些错误,若有阅览者需自行留意,见谅。
文章目录
二、应用层
1.知识脉络
2.应用程序及应用层协议概述
1)应用层协议原理
-
应用程序体系结构
- 客户-服务器:一般来讲,客户端(请求)->服务器(响应)
- P2P:对服务器有最小(或者没有)依赖,主机之间直接通信(不必通过专门的中间服务器)。参与通信的主机对被称为对等方,每个对等方通过向其他对等方分发文件为系统增加服务能力。
-
进程通信
-
用操作系统的术语来说,进行通信的实际上是进程,而不是程序。一个进程可以被认为是运行在端系统中的一个程序。
-
进程与计算机网络间的接口:进程通过软件接口套接字向网络发送报文和从网络接收报文。
-
进程寻址:
- 主机地址:IP地址
- 进程标识符:端口号
-
计算机网络提供的通用运输服务:可靠数据传输、吞吐量、定时、安全性
-
因特网提供的运输服务类型
- TCP服务
- 面向连接的服务:通信前需要握手。双方建立全双工的连接,双方进程可在此连接同时进行报文收发。当结束通信时,必须拆除连接。
- 可靠的数据传送服务:无差错、按顺序交付所有发送的数据。
- UDP服务
- 一种不提供不必要服务的轻量级运输协议,提供最小服务。
- 无连接的:通信前没有握手过程
- 不可靠数据传送服务
- TCP服务
-
3.常见网络应用及协议
1)Web
1】使用的应用层协议:超文本传输协议(HyperText Transfer Protocol,HTTP)
-
HTTP由客户程序和服务器程序实现,程序间交换HTTP报文进行会话。
-
Web页面:一般含有一个HTML基本文件以及引用对象。通过对象的URL地址引用其他对象。
-
URL地址:存放对象的服务器主机名+对象的路径名
-
HTTP是一个无状态协议:HTTP服务器不保存关于客户的任何信息。例如,某个特定客户短时间内连续两次向服务器发送一样的请求,服务器并不会因为刚刚为该客户提供了同样的对象而不再做反应。
-
HTTp的非持续连接和持续连接
- 采用非持续连接的HTTP:每个请求/响应对经一个单独的TCP连接发送。
- 采用持续连接的HTTP(默认方式):所有请求/响应对经同一个TCP连接发送。
-
报文格式
-
请求报文
- 请求行
- 包含3个字段:方法字段、URL字段、HTTP版本字段
- 首部行
- 实体体
- 请求行
-
-
响应报文
- 状态行
- 包含3个字段:协议版本字段、状态码、响应状态信息
- 首部航
- 实体体
- 状态行
2】用户与服务器的交互:cookie
- 通过在请求/响应报文增加一个cookie首部行,可进行数据交互。
- 用户端系统中保留一个cookie文件,并由用户的浏览器进行管理。
3】Web缓存(Web缓存器/代理服务器)
-
客户–>代理服务器:代理服务器中有客户请求的对象–>代理服务器直接通过HTTP响应报文返回该对象
-
客户–>代理服务器:代理服务器中无客户请求的对象–>与服务器建立TCP连接并申请该对象–>代替客户发HTTP请求–>得到该对象后代理服务器在本地存储副本–>用HTTP响应报文将该对象返回给客户
-
使用Web缓存可以减少客户请求的响应时间,减少一个机构的接入链路到因特网的通信量
4】条件GET方法
- 使用Web缓存可能出现的问题:缓存器中的对象可能是陈旧的,如果服务器中的该对象被修改而缓存器没有得知,则会返回给客户一个旧版的对象。
- 使用条件GET机制解决:
- 请求报文使用GET方法且请求报文包含一个“If-Modified-Sinced”首部行。
- Web在缓存从服务器收到的对象时会根据响应报文中的"Last-Modified"首部行把该对象的最后修改日期也存储下来。
- Web在返回存储在缓存器本地的对象时,会向服务器发送一个条件GET执行最新检查:包含首部行”If-Modified-Since:保存的Last-Modified“,再通过接收条件GET的响应报文判断该对象是否可用。
2)电子邮件
-
组成部分:用户代理、邮件服务器、简单邮件传输协议
-
总体描述:
- 发邮件:用户代理–>发送刚的邮件服务器–>接收方的邮件服务器
- 收邮件:用户代理–>从邮件服务器读取邮件
-
SMTP
-
用于从发送方邮件服务器发送报文到接收方的邮件服务器。
-
基本操作
- SMTP客户端检测到发送方的邮件服务器上报文队列中有报文,创建一个到接收方邮件服务器上的STMP服务器的TCP连接
- 初始SMTP握手
- SMTP客户通过TCP连接发送报文
- SMTP的服务器端接收报文,并将该报文放入邮箱中
-
-
SMTP指令
- HELO
- MAIL FROM
- RCPT TO
- DATA
- QUIT
- 发送一个质保函一个句点的行,向服务器指示报文结束
-
与HTTP对比
- 相同点:两者都是用于从一台主机向另一台主机传送文件
- 不同点:
- HTTP主要是一个拉协议,SMTP基本上是一个推协议。
- SMTP要求每个报文采用7比特ASCII码格式,HTTP数据则不受这种限制。
- 处理一个既包含文本又包含图形的文档时,HTTP把每个对象封装到它自己的HTTP响应报文中,而SMTP则把所有报文对象放在一个报文之中。
-
邮件报文格式
-
一个典型报文首部看起来如下:
From: alic@crepes.fr
To: bob@hamburger.edu
Subject: Searching for the meaning of life
-
-
邮件访问协议
- POP3
- 三个工作阶段
- 特许:鉴别用户
- 事务处理:取回报文,对报文做删除标记,取消报文删除标记,获取邮件的统计信息
- 更新(客户发出了quit命令后):结束POP3会话,删除被标记为删除的报文
- 三个工作阶段
- IMAP
- IMAP把每个报文与一个文件夹联系起来,收件人能够把邮件移动到一个新的、用户创建的文件夹中,阅读邮件,删除邮件等。
- IMAP允许用户代理获取报文某些部分。例如,一个用户代理可以只读取一个报文的首部。
- HTTP(基于Web的电子邮件)
- POP3
3)DNS(因特网的目录服务)
-
域名系统(Domain Name System,DNS):
- 能进行主机名到IP地址转换的目录服务
- 由分层的DNS服务器实现的分布式数据库
- 使得主机能够查询分布式数据库的应用层协议
-
DNS工作机理
- 浏览器上URL中抽取出主机名还给DNS客户端
- DNS客户端向DNS服务器发送包含主机名的请求
- 收到含有IP地址的回答报文
- 向位于IP地址的80端口的HTTP服务器进程发一个TCP连接
-
DNS的层次
- 根DNS服务器
- 顶级域(Top-Level Domain,TLD)服务器
- 权威DNS服务器
- 本地DNS服务器(不属于该服务器层次结构)
- 一般情况下本地DNS服务器有缓存到IP与主机名,当没有缓存需要查找时则按层次往下查找,如下图示例
-
DNS记录和报文
-
资源记录(Resource Record,RR):(Name,Value,Type,TTL)
- TTL:生存时间
- Type:决定Name和Value是什么值
- Type = A,主机名:IP地址
- Type = NS,域(如foo.com):一个知道如何获得该域中主机IP的权威DNS的主机名(如dns.foo.com)
- Type = CNAME,别名:主机规范主机名
- Type = MX,别名:邮件服务器规范主机名
-
报文格式
-
-
在DNS数据库插入记录
- 向某些注册登记机构提供基DNS服务器和辅助权威DNS服务器的名字和IP地址,来申请域名,由注册登记机构将RR插入DNS系统中
- 示例:注册登记机构将(networkutopia.com,dns1.networkutopia.com,NS,TTL)和(dns1.networkutopia.com,212.212.212.1,A)插入DNS系统中
4)P2P文件分发
- P2P体系结构的优势:每个对等方能向任何其他对等方重新分发文件,协助服务器,减轻服务器负担以及减少消耗的服务器带宽。
- BitTorrent
- 定义:一种用于文件分发的流行P2P协议。
- 洪流:参与一个特定文件分发的所有对等方。
- 追踪器:每个洪流都具有一个此基础设施节点。追踪洪流中的各个对等方。
- 邻近对等方:与某对等方成功创建TCP连接的其他对等方
- 最稀缺优先:首先请求那些最稀缺的块(在她邻居中副本数量最少的块)。
- 疏通:4个最高速率流入比特的邻居。
- 一报还一报:向“前”4个对等方和一个试探对等方发送数据(除这5个对等方,其他邻居对等方将被阻塞,它们不能从这得到块),则有可能成为被发送对等方的“前”4个上载者,则此时被发送对等方又会给该对等方发送数据。
5)视频流和内容分发网
- 视频流
- HTTP流
- DASH
- DASH允许客户使用不同的以太网接入速率流式播放具有不同编码速率的视频。
- 内容分发网(Content Distribution Network,CDN)
- 定义:CDN管理分布在多个地理位置上的存储视频的服务器,并且试图将每个请求定向到一个将提供最好用户体验的CDN位置。
- 类型
- 专用CDN:由内容提供商自己拥有
- 第三方CDN:多个内容提供商分发内容
- 通常采用两种服务器安置原则
- 深入:通过在遍及全球的接入ISP中部署服务器集群来深入ISP接入网中。改善用户体验,维护和管理集群难。
- 邀请做客:通过在少量(例如10个)关键位置建造大集群来邀请ISP做客。通常放在IXP。产生较低的维护和管理开销,但是时延较高吞吐量较低。
- CDN操作
- 大多数CDN利用DNS来截获和重定向请求。用户的本地DNS服务器(LDNS)从权威DNS服务器的回答中将得到一个CDN域的主机名。即LDNS转为请求一台适当的CDN内容服务器的IP。
- 当通过CDN内容服务器主机名找到IP后,则创建TCP连接并获取请求的内容
- 集群选择策略
- 定义:动态将客户定向到CDN中的某个合适的服务器集群或数据中心的机制。
- 地理上最为邻近集群,但地理最邻近集群可能并不是最近的集群。
- CDN能对其集群和客户之间的时延和丢包性能执行周期性实时测量。例如,CDN能让它的每个集群周期性地向位于全世界的所有LDNS发送探测分组。但是许多LDNS被配置为不会响应这些分组。
4.套接字编程:生成网络应用
-
UDP套接字编程
-
TCP套接字编程
- TCP中的客户端程序和服务器程序交互会有两个套接字。所有客户想进行交互的时候会先找到“欢迎套接字”,与服务器进行三次握手,握手成功后,生成一个新的专门服务该客户的“连接套接字”,在此连接交互数据。