《计算机网络 自顶向下方法》 第2章 应用层 Part1
常见的应用层协议有哪些?
HTTP(HyperText Transfer Protocol):超文本传输协议
FTP(File Transfer Protocol):文件传输协议
SMTP(Simple Mail Transfer Protocol):简单邮件传输协议
Telnet:远程终端访问
应用层协议定义了什么?
1、交换的报文类型,例如请求报文和响应报文
2、各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的
3、字段的语义,即这些字段中包含的信息的含义
4、一个进程何时以及如何发送报文,对报文进行响应的规则
有哪些可供选择的运输层协议?
TCP(Transmission Control Protocol):传输控制协议
可靠数据传输、面向连接、拥塞控制
UDP(User Datagram Protocol):用户数据报协议
UDP(User Datagram Protocol):用户数据报协议
无连接、无拥塞控制、不可靠传输(最简传输服务)
TCP 不安全,怎么办?
SSL(Secure Sockets Layer):安全套接字层
SSL 是对 TCP 的加强,在 TCP 的基础上,提供了额外的安全性服务,包括加密、数据完整性和端点鉴别
选择运输层协议时,有哪些参数需要关注?
可靠数据传输:确保数据完整、按一定顺序到达目的地
吞吐量:不管吞吐量波动的多么厉害,都确保随时能提供不少于所需要的吞吐量
定时:确保数据从发送端发出开始,到到达接收端为止,总时长不超过一定时间
安全性:要求数据以密文形式在因特网上传输
注:不是所有应用都要求在每一点上都达到要求,根据应用场景的不同,各个应用都有自己的侧重点
常见应用程序的服务要求如下图(来自《计算机网络 自顶向下方法》):
![](https://img2018.cnblogs.com/blog/1237365/201905/1237365-20190523223144719-1445483940.png)
应用程序、网络应用、应用层协议、进程、套接字(socket)之间的关系是怎样的?
应用程序和进程的关系:
应用程序 由存在于客户端和服务端的 进程对 组成
附加:进程对之间通过进程间通信协议进行通信
进程和套接字的关系:
进程通过一个套接字(socket)软件接口向网络发送报文和接收报文
网络应用和应用层协议的关系:
应用层协议是网络应用的一部分
网络应用一般由四个部分组成,客户端、服务端、定义报文结构的标准、应用层协议
例如:
Web 应用由 Web 浏览器、Web 服务器、文档格式标准(HTML)、应用层协议(HTTP)
因特网电子邮件应用由 允许用户读取和生成邮件的客户程序、能容纳用户邮箱的邮件服务器、定义电子邮件报文结构的标准、定义报文如何在服务器之间以及如何在服务器和邮件客户程序之间传递的应用层协议
应用程序和网络应用的关系?
搞不清楚(可以认为网络应用是应用程序一种吗?)
HTTP 跟 HTML 分别管哪些部分?
HTTP 确保两个主体之间能顺利地传送数据,HTML 确保两个主体之间传递的数据使用的是同一套规则
举两个例子
1、两个好朋友约好第二天 8 点碰面互相聊聊最近的生活感悟,结果一个早上 8 点到了,一直也没等到人,后来沟通才知道,那个人以为说的是晚上8点。
这相当于 HTTP 这一步没做好
2、网友约见面,约好了时间、地点,都见到对方了,结果发现语言不通,其中一个不会说普通话,操着一口方言,另一个全程懵逼。
这相当于 HTML 这一步没做好
cookie?
HTTP 本身是无状态的协议,即服务端不会去关心某个请求是哪个客户发送过来的,它只负责接收、处理并响应请求
然而,由于一个站点通常是希望能够识别用户的,可能的原因有:
1、希望限制用户的访问
2、希望把内容与用户关联起来
cookie 技术有 4 个组件:
1、在 HTTP 响应报文中的一个 cookie 首部行(Set-cookie: )
2、在 HTTP 请求报文中的一个 cookie 首部行(cookie: )
3、在用户端系统中保留有一个 cookie 文件,并由用户的浏览器进行管理
4、位于 Web 站点后的一个后端数据库
为什么需要代理服务器?
这里需要回顾一下本书第 1 章的一个概念,流量强度(1.4.2 排队时延和丢包):
La/R
L 表示每个分组的比特数;a 表示分组到达队列的平均速率(a 的单位是分组/秒,即 pkt/s);R 是传输速率,即从队列中退出比特的速率(单位是 bps,即 b/s)
即,流量强度指的是队列的输入输出速率比
要解释代理服务器的作用,必须从需求开始说起
需求:在不是特别影响用户体验的情况下,最大可能节约成本
两点,一是用户体验,二是节约成本
用户体验主要在于时延的长短,影响成本的因素有流量总量和带宽大小
回到流量强度的代表式 La/R,R 即带宽,La 与流量总量有关
所以需求的节约成本方面,可以翻译成,在减少 R 或者至少是保持 R 不变的情况下,让 La/R 的值变小,L 不好控制,只能把重点放在减小 a 的值上面
先讨论流量强度(La/R)对时延影响,定性关系如下图:
![](https://img2018.cnblogs.com/blog/1237365/201905/1237365-20190524122144904-1871495938.png)
可以看到,他们的关于可以用类似于指数函数或二次函数的函数来表示
即,对 La/R 微小的改动,可以对时延产生非常大的影响,而且 La/R 约接近 1,这个影响越明显
现在讨论代理服务器如何有效地减小 a 的值
每个请求在传入因特网之前,都需要过一下局域网中的代理服务器,如果所请求的资源能在代理服务器中找到且未过期,则直接从代理服务器返回,如果没有,则向因特网中发起请求
定量的描述在书中 “2.2.5 Web缓存” 这一节有详细的描述
综上,使用代理服务器的好处就很明显(如下),可以完全满足需求
流量小很多,不用过多的扩展带宽,能有效节省成本
流量强度小很多(排队时延小),且部分请求可以直接从代理服务器返回,所以用户体验也不会太差
CDN?
CDN(Content Distribution Network)即内容分发网络
摘抄百度百科的一段话:
“
CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。
”
了解了代理服务器的作用,即可知道 CDN 的作用
持续连接和非持续连接?
持续连接:所有的请求/响应对都经相同的 TCP 连接发送
非持续连接:每个请求/响应对都经独立的 TCP 连接发送
FTP 最特殊的地方?
相对于 HTTP,FTP 最特殊的地方在于它使用两个并行的 TCP 连接来传输数据
一条是控制连接(control connection):传输控制信息,如用户名、密码、存数据、取数据
另一条是数据连接(data connection):传输数据信息,实际发送数据
SMTP 与 HTTP 之间的区别?
HTTP 是拉协议,即 TCP 连接由想接收文件的机器发起,客户发请求给服务器请求文件
SMTP 是推协议,即 TCP 连接由发送文件的机器发起,用户代理发文件给邮件服务器的客户端,邮件服务器的客户端发文件给邮件服务器的服务端
SMTP 无法做到的?使用 POP3 和 IMAP 等邮件访问协议
由于个人 PC 不可能保证时时开启,故邮件服务器的服务端不可能装在个人 PC 上,它只能独立于接收方的用户代理
由于个人 PC 不是服务器,故邮件服务器的服务端不可能使用 SMTP 协议将邮件传送给接收方的用户代理
由于 SMTP 是推协议,故邮件接收方的用户代理不可能通过 SMTP 协议去邮件服务器的服务端拉取邮件
传统电子邮件协议链 SMTP、SMTP、POP3 或 IMAP 与 基于 Web 的电子邮件协议链 HTTP、SMTP、HTTP 的区别?
传统电子邮件 SMTP、SMTP、POP3 或 IMAP :
![](https://img2018.cnblogs.com/blog/1237365/201905/1237365-20190524123256511-1548377246.png)
基于 Web 的电子邮件协议链 HTTP、SMTP、HTTP :
发送方浏览器 → --- HTTP --- → 邮件服务器的客户端 → --- SMTP --- → 邮件服务器的服务端 → --- HTTP --- → 接收方浏览器