Skip to content
🔗 内容纲要:

计算机网络原理之应用层

标签:计算机网络

目录

韩立刚计算机网络:应用层

网络应用程序的体系结构

网络核心设备并不在应用层上起作用,而仅在较低层起作用,特别是位于网络层及下面层次。这种基本设计,也即将应用软件限制在端系统的方法,促进了大量的网络应用程序的迅速研发和部署。

  • 客户 - 服务器体系架构 (client-server architecture)
  • P2P 体系结构 (P2P architecture):对位于数据中心的专用服务器有最小的(或着没有)依赖。应用的程序在间断连接的主机对之间使用直接通信,这些主机被称为对等方。目前许多流行的、流量密集型的应用都是 P2P 体系结构的,包括文件共享、因特网电话、IPTV。某些应用具有混合的体系结构,对于许多即时讯息应用而言,服务器被用于跟踪用户的 IP 地址,但用户到用户的报文在用户主机之间直接发送。

P2P 应用具有自扩展性 (self-scalability),也是成本有效的。但未来 P2P 应用面临三个挑战:

  • ISP 友好。ISP 受制于 “非对称” 带宽应用,下载要比上载多得多。
  • 安全性。 P2P 是高度开放和分布的。
  • 激励。 需要说服用户自愿向应用提供带宽、存储和计算资源。

域名系统 DNS

什么是域名

整个 Internet 网站和各种服务器数量众多,各个组织的服务器都需要给一个名称,这就很容易重名。如何确保 Internet 上的服务器名称在整个 Internet 唯一呢?这就需要 Internet 上有域名管理认证机构进行统一管理。如果你的公司在互联网上有一组服务器(邮件服务器、FTP 服务器、Web 服务器等),你需要为你的公司先申请一个域名,也就是向管理认证机构注册一个域名。

域名的注册遵循先申请先注册为原则,管理认证机构要确保每一个域名的注册都是独一无二、不可重复的。

域名的结构

一个域名下可以有多个主机,域名全球唯一,主机名 + 域名肯定也是全球唯一的,主机名 + 域名称为完全限定域名(FQDN)。

QDN 是 Fully Qualified Domain Name 的缩写,含义是完整的域名。例如,一台机器主机名(hostname)是 www, 域名后缀(domain)是 jonsam.site, 那么该主机的 FQDN 应该是 www.jonsam.site.。

image

image

Internet 中的域名服务器

当我们通过域名访问网站或点击网页中的超链接跳转到其他网站,计算机需要将域名解析成 IP 地址才能访问这些网站。DNS 服务器负责域名解析,因此你必须配置计算机使用哪些 DNS 服务器进行域名解析。

image

image

域名解析过程


动态主机配置协议 DHCP

静态地址和动态地址应用场景

  • 使用静态地址的情况:IP 地址不经常更改的设备就使用静态地址。比如企业中服务器会单独在一个网段,很少更改 IP 地址或移动到到其他网段,这些服务器通常使用静态地址,使用静态地址还方便企业员工使用地址访问这些服务器。比如学校机房,都是台式机,很少移动,这些计算机最好也使用静态地址。
  • 使用动态地址的情况:网络中的计算机不固定,就应该使用动态地址。无线设备最好也使用动态地址。ADSL 拨号上网通常也是使用自动获得 IP 地址。

DHCP 地址租约

image

DHCP 租约生成过程

DHCP 客户端会在以下所列举的几种情况下,从 DHCP 服务器获取一个新的 IP 地址:

  • 该客户端计算机是第一次从 DHCP 服务器获取 IP 地址。
  • 该客户端计算机原先所租用的 1P 地址已经被 DHCP 服务器收回,而且已经又租给其他计算机了,因此该客户端需要重新从 DHCP 服务器租用一个新的 1P 地址。
  • 该客户端自己释放原先所租用的 1P 地址,并要求租用一个新的 1P 地址。
  • 客户端计算机更换了网卡。
  • 客户端计算机转移到另一个网段。

租约是如何生成的?

  • DHCPDISCOVER: DHCP 客户端会先送出 DHCPDISCOVER 的广播信息到网络,以便寻找一台能够提供 IP 地址的 DHCP 服务器。
  • DHCPOFFER: 当网络中的 DHCP 服务器收到 DHCP 客户端的 DHCPDISCOVER 信息后,就会从 IP 地址池中,挑选一个尚未出租的 IP 地址,然后利用广播的方式传送给 DHCP 客户端。
  • DHCPREQUEST: 当 DHCP 客户端挑选好第一个收到的 DHCPOFFER 信息后,它就利用广播的方式,响应一个 DHCPREQUEST 信息给 DHCP 服务器。 (4) DHCPACK: DHCPACK DHCP 服务器收到 DHCP 客户端要求 IP 地址的 DHCPREQUEST 信息后,就会利用广播的方式送出 DHCPACK 确认信息给 DHCP 客户端。

image

DHCP 地址租约更新

  • 当租约时间过去一半时,客户机向 DHCP 服务器发送一个请求,请求更新和延长当前租约。客户机直接向 DHCP 服务器发请求,最多可重发三次,分别在 4、8 和 16s 时。
  • 如果某台服务器应答一个 DHCP Offer 消息,以更新客户机的当前租约,客户机就用服务器提供的信息更新租约并继续工作。
  • 如果租约终止而且没有连接到服务器,客户机必须立即停止使用其租约 IP 地址。然后,客户机执行与它初始启动期间相同的过程来获得新的 IP 地址租约。

租约更新方法:

  • 自动更新:DHCP 服务自动进行租约的更新,也就是前面部分描述的租约更新的过程,当租约期达到租约期限 50%时,DHCP 客户端将自动开始尝试续租该租约。每次 DHCP 客户端重新启动的时候也将尝试续租该租约。为了续租其租约,DHCP 客户端为它提供租约的 DHCP 服务器发出一个 DHCPREQUEST 请求数据包。如果该 DHCP 服务器可用,它将续租该租约并向 DHCP 客户端提供一个包含新的租约期和任何需要更新的配置参数值的 DHCPACK 数据包。当客户端收到该确认数据包后更新自己的配置。如果 DHCP 服务器不可用,客户端将继续使用现有的配置。
  • 手动更新:如果需要立即更新 DHCP 配置信息,可以手工对 IP 地址租约进行续租操作,例如:如果我们希望 DHCP 客户端立即从 DHCP 服务器上得到一台新安装的路由 器的地址,只需简单地在客户端做续租操作就可以了。直接在客户机上的命令提示符下,执行命令: Ipconfig /renew

Telnet 协议

TELNET 是一个简单的远程终端协议,它也是因特网的正式标准。用户使用 telnet 客户端就可以连接到远程运行 Telnet 服务的设备(可以是网络设备比如路由器、交换机,也可以是操作系统,比如 Windows 或 Linux),进行远程管理。

TELNET 能将用户的键盘指令传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。因此,TELNET 又称为终端仿真协议。

TELNET 并不复杂,以前应用得很多。现在由于操作系统(Windows 和 Linux)功能越来越强,用户己较少使用 TELNET 了。不过配置 Linux 服务器和网络设备还是需要 TELNET 来实现远程管理和配置。

Telnet 协议工作方式

TELNET 也使用客户端 - 服务端方式。在本地系统运行 TELNET 客户进程,而在远地主机则运行 TELNET 服务器进程。服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。

TELNET 能够适应许多计算机和操作系统的差异。例如,对于文本中一行的结束,有的系统使用 ASCII 码的回车(CR),有的系统使用换行(LF)。还有的系统使用两个字符,回车 - 换行(CR-LF)。又如,在中断一个程序时,许多系统使用 Control-C,但也有系统使用 ESC 按键。

TELNET 定义了数据和命令应怎样通过网络。这些定义就是所谓的网络虚拟终端 NVT(Network Virtual Terminal)。

image

RDP(远程桌面协议)

远程桌面协议 RDP

现在 Windows 操作系统很少使用 telnet 进行远程管理了,更多是使用远程桌面进行远程管理。Windows 系统启用远程桌面,客户端使用远程桌面客户端(mstsc)进行连接。它们之间使用 RDP 协议进行通信,RDP 协议默认使用 TCP 的 3389 端口。

image

超级文本传输协议 HTTP

http 协议

Web 的应用层协议是超文本传输协议(HyperText Transfer Protocol,HTTP)。HTTP 由两个程序实现:一个用户程序和一个服务器程序。两个程序运行在不同的端系统中,通过交换 HTTP 报文进行会话。HTTP 协议定义了这些报文的结构以及客户和服务器进行报文交换的方式。

Web 浏览器实现了 HTTP 的客户端,Web 服务器实现了 HTTP 的服务端。

Web 页面是由对象组成的。一个对象一般是一个文件,如 HTML 文件、JPEG 图形、Java 小程序等,他们通过一个 URL 地址寻址。URL 地址由两部分组成:存放对象的服务器主机名和对象的路径名。

image

非持续连接和持续连接:如果每一对请求和响应是经过一个单独的 TCP 连接发送,则使用的是非持续连接,如果多个请求和响应是经同一个 TCP 连接发送,则使用的是持续连接。

统一资源定位符号 - URL

绝对路径和相对路径

HTTP 协议版本

设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。HTTP 协议有三个版本 HTTP/0.9、HTTP/1.0、HTTP/1.1,HTTP2.0 目前 HTTP/1.0 和 1.1 被广泛应用。

HTTP 通信流程

image

HTTP 请求报文和响应报文

HTTP 请求报文:

image

HTTP 请求报文由四部分组成,每行由一个回车和换行符表示结束。

  • 请求行(Request Line)
  • 请求头(Request Header)
  • 空白行
  • 请求体(Request Body)

Cookie 意为 “甜饼”,是由 W3C 组织提出,最早由 Netscape 社区发展的一种机制。目前 Cookie 已经成为标准,所有的主流浏览器如 IE、Netscape、Firefox、Opera 等都支持 Cookie。

由于 HTTP 是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是 Cookie 的工作原理。Cookie 可以导出导入。

通过代理服务器访问网站

文件传输协议 FTP

FTP 是 File Transfer Protocol(文件传输协议)的英文简称。用 于 Internet 上的控制文件的双向传输。基于不同的操作系统有不同的 FTP 应用程序,而所有这些应用程序都遵守同一种协议以传输文件。在 FTP 的使用当中,用户经常遇到两个概念:“下载”(Download)和 “上传”(Upload)。“下载” 文件就是从远程主机拷贝文件至自己的计算机上;“上传” 文件就是将文件从自己的计算机中拷贝至远程主机上。用 Internet 语言来说,用户可通过客户机程序向(从)远程主机上传(下载)文件。

简单地说,支持 FTP 协议的服务器就是 FTP 服务器。

FTP 主动模式和被动模式

FTP 协议和其他协议不一样的地方就是客户端访问 FTP 服务器需要建立两个 TCP 连接,一个是用来传输 FTP 命令,一个用来传输数据。在 FTP 服务器上需要开放两个端口,一个命令端口(或称为控制端口)和一个数据端口。通常 21 端口是命令端口,20 端口是数据端口。当混入主动 / 被动模式的概念时,数据端口就有可能不是 20 了。

FTP 主动模式:

image

被动模式 FTP:

image

电子邮件

电子邮件发送和接收过程

电子邮件信息格式

SMTP 协议

POP3 协议和 IMAP 协议

来源文章

Released under the MIT License.