相关技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > 相关技巧 > 计算机网络应用层

详细讲解计算机网络——应用层

作者:IT__learning

这不同类型的网络应用有不同的通信规则,因此应用层协议是多种多样的,比如DNS、FTP、Telnet、SMTP、HTTP、RIP、NFS等协议都是用于解决其各自的一类问题

应用层协议

在传输层之上,便是应用层。传输层的 UDP 报文和 TCP 报文段的数据部分就是应用层交付的数据。

在这里插入图片描述

应用层直接为用户提供服务,应用层有很多协议,每一个协议对应着计算机上的一个服务。

不同类型的网络应用有不同的通信规则,因此应用层协议是多种多样的,比如DNS、FTP、Telnet、SMTP、HTTP、RIP、NFS等协议都是用于解决其各自的一类问题。

在这里插入图片描述

应用层协议(application-layer protocol)定义了运行在不同端系统上的应用程序如何相互传递报文。

应用层协议定义了:

在这里插入图片描述

一、DNS

1、DNS 是什么

DNS 全名叫 Domain Name Server,中文俗称“域名服务器”

在 Internet 上域名与 IP 地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS 就是进行域名解析的服务器,将域名(机器名) 转换为 IP地址。

DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转换的服务。

这里的分布式数据库是指,每个站点只保留它自己的那部分数据。

如果整个因特网都使用一个域名服务器,负荷太大, 所以 DNS 设计成一个分布式的数据库,即使单个主机出故障也不会妨碍整个 DNS 系统。

另外 DNS 使得大多数域名都能在本地解析,仅少量解析需要在因特网上通信,因此 DNS 效率很高。

域名和 IP 是一对一关系吗?

2、域名结构

在这里插入图片描述

域名结构是树状结构,树的最顶端代表根域名

在这里插入图片描述

  在这里插入图片描述

当然域名可以3级可以4级可以5级等等,级别是没有限制的,只需要满足,一个域名的各个组成部分不超过63个字符长,总长不超过255个字符长。

3、域名服务器

在这里插入图片描述

● 根域名服务器:最高层次的域名服务器,根域名服务器知道所有顶级域名服务器的域名和IP地址。任何一个本地域名服务器要对互联网上的任何域名进行解析,只要自己无法解析,就会首先求助于根域名服务器。

● 顶级域名服务器:管理在该顶级域名服务器下注册的所有二级域名。当收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步需要去找的域名服务器的IP地址)。

● 权限域名服务器(权威域名服务器):负责一个区的域名服务器。当一个权威域名服务器不能给出最终的查询结果时,就会告诉发出请求方,下一步应该去找哪一个权威域名服务器。

● 本地域名服务器(递归服务器):主机发出 DNS 查询请求时,该请求首先会发给本地域名服务器。

理论上讲,任何标准域名的解析都需要经过层级式的域名解析。

即首先要通过第一层的根域名服务器的指引,才能去下面的顶级域名服务器寻找。

但是实际应用,提供接入服务的服务商的缓存域名服务器上可能已经有了域名与 IP 映射的缓存。

4、DNS 解析流程

● 在浏览器中输入 www.qq.com 域名,浏览器先检查自身缓存中有没有被解析过的这个域名对应的 IP 地址,如果有,就调用这个 IP 映射,完成域名解析。

● 如果浏览器缓存中未命中,操作系统会检查本地的 hosts 文件是否有该域名和 IP 的映射,如果有,就调用这个IP地址映射,完成域名解析。

● 如果 hosts 里也没有这个域名的映射,则向本地域名服务器(LDNS)发送请求,看是否有这个域名的映射关系,如果有,直接返回,完成域名解析。(LDNS 一般在城市的某个角落,距离你不会很远,一般都会缓存域名解析结果,大约 80% 的域名解析到这里就完成了)

● 如果 LDNS 仍然未命中,LDNS 就向根服务器发送查询请求,根服务器里面记录的都是各个顶级域所在的服务器 IP,根服务器会根据域名后缀返回对应的顶级域名服务器位置。当向根请求 www.qq.com 的时候,根服务器就会返回 .com 服务器的位置信息。

● LDNS 拿到 .com 的权威服务器地址以后,就会询问 .com 的权威服务器,知不知道 www.qq.com 的位置。这个时候 .com 权威服务器查找并返回 www.qq.com 服务器的地址。LDNS 继续向 www.qq.com 的权威服务器去查询这个地址,由 www.qq.com 的服务器给出了 IP 地址:202.173.11.10

● LDNS 服务器得到了 www.qq.com 对应的 IP 地址后以 DNS 应答包的方式传递给客户机,并把域名和对应的 IP 地址在本地缓存下来。

● 客户机根据 IP 地址建立连接,并在客户端缓存域名/IP映射。

在这里插入图片描述

简单来说,其实只有四步:

在这里插入图片描述

5、DNS 服务器查询方式

在这里插入图片描述

(1)迭代查询

DNS 服务器会向客户机提供其他能够解析查询请求的 DNS 服务器地址。

在这里插入图片描述

(2)递归查询

DNS 服务器必须使用一个准确的查询结果回复客户机。

在这里插入图片描述

6、DNS 缓存机制

DNS 缓存不仅产生于操作系统,浏览器、应用程序以及 ISP(网络服务提供商)都会对 DNS 进行缓存。

一条域名的 DNS 记录会在本地有两种缓存:浏览器缓存和操作系统缓存。

DNS 记录会有一个 TTL 值(Time To Live,存活时间),单位是秒,代表这条记录最长有效期是多少。

浏览器 DNS 缓存的时间跟 DNS 服务器返回的 TTL 值无关。

应用程序的 DNS 缓存是由应用程序控制的,比如 Java 网络应用程序的 DNS 缓存是由 JVM 的缓存策略控制的。

OS 缓存会参考 DNS 服务器响应的 TTL 值,但是不完全等于 TTL 值。

● 浏览器 DNS 缓存:浏览器在获取网站域名的实际 IP 地址后会对其 IP 进行缓存,减少网络请求的损耗。每种浏览器都有一个固定的 DNS 缓存时间,其中 Chrome 的过期时间是 1 分钟,在这个期限内不会重新请求 DNS。Chrome 浏览器看本身的 DNS 缓存时间比较方便,在地址栏输入:chrome://net-internals/#dns,就能看到看浏览器的缓存。

● Java DNS 缓存:Java 网络应用程序的 DNS 缓存是由 JVM 的缓存策略控制的,可以直接设置缓存过期时间:java.security.Security.setProperty(“networkaddress.cache.ttl”, 10);

● ISP DNS 缓存:一般 ISP 服务器上缓存时间(15 min)比 OS 缓存时间长,就算刷新了本机操作系统的缓存,ISP 上仍然保留。

● Windows DNS 缓存:Windows 访问 DNS 后会把记录保存一段短暂的时间,可通过 ipconfig /displaydns 查看 windows 的 DNS 缓存、通过 ipconfig /flushdns 来清除缓存。

● IOS DNS 缓存:按照官方文档说法,IOS 设备上每 24 小时刷新一次 DNS 缓存。

7、DNS 使用 UDP 还是 TCP

DNS 占用 53 号端口,同时使用 TCP 和 UDP 协议。

DNS 在进行区域传输的时候使用 TCP 协议,其它时候则使用 UDP 协议;

DNS 有两种类型的 DNS 服务器:主 DNS 服务器和辅助 DNS 服务器

区域传送(主、辅 DNS 服务器通信)时使用 TCP

辅 DNS 服务器会定时(一般时3小时)向主域名服务器进行查询以便了解数据是否有变动。

如有变动,则会执行一次区域传送,进行数据同步。

区域传送将使用 TCP而不是 UDP,因为数据同步传送的数据量比较大。

TCP是一种可靠的连接,保证了数据的准确性。

域名解析时使用 UDP

客户端向 DNS 服务器查询域名,一般返回的内容都不超过 512 字节,用 UDP 传输即可。不用经过 TCP 三次握手,这样 DNS 服务器负载更低,响应更快。虽然从理论上说,客户端也可以指定向 DNS 服务器查询的时候使用 TCP,但事实上,很多 DNS 服务器进行配置的时候,仅支持 UDP 查询包。

二、万维网

1、万维网概述

这种访问方式称为“链接”。

在这里插入图片描述

通俗的来说万维网的使用就是我们通过游览器进行网络的通信,得到的是网页及其其他的数据。

(1)超媒体与超文本

(2)万维网的工作方式

(3)万维网必须解决的问题

1)怎样标志分布在整个互联网上的万维网文档?

使用统一资源定位符 URL (Uniform Resource Locator) 来标志万维网上的各种文档。使每一个文档在整个互联网的范围内具有唯一的标识符 URL。

2)用何协议实现万维网上各种超链的链接?

在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议 HTTP (HyperText Transfer Protocol)。HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。

3)怎样使各种万维网文档都能在互联网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存在着超链?

超文本标记语言 HTML (HyperText Markup Language) 使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。

4)怎样使用户能够很方便地找到所需的信息?

为了在万维网上方便地查找信息,用户可使用各种的搜索工具(即搜索引擎)。

2、超文本传送协议 HTTP

(1)HTTP 的操作过程

为了使超文本的链接能够高效率地完成,需要用 HTTP 协议来传送一切必须的信息。

从层次的角度看,HTTP 是面向事务的(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

在这里插入图片描述

(2)请求一个万维网文档所需的时间

在这里插入图片描述

每次的数据传输度需要进行建立连接与释放连接的过程,为了提高传输的效率,提出了以下几种方案:

不释放连接、流水操作、代理服务器。

1)不释放连接

2)流水与非流水

3)代理服务器

3、万维网的文档

(1)超文本标记语言 HTML

HTML

(HyperText Markup Language) 中的 Markup 的意思就是“设置标记”。

在这里插入图片描述

当浏览器从服务器读取 HTML 文档后,就按照 HTML 文档中的各种标签,根据浏览器所使用的显示器尺寸和分辨率大小,重新排版并恢复出所读取的页面。

两种不同的链接:

在这里插入图片描述

HTML还规定了链接的设置方法。每个链接都有一个起点和终点。

XML
XHTML
CSS

(2)动态万维网文档

静态文档是指该文档创作完毕后就存放在万维网服务器中,在被用户浏览的过程中,内容不会改变。

动态文档是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建。

动态文档和静态文档之间的主要差别体现在服务器一端。

这主要是文档内容的生成方法不同。而从浏览器的角度看,这两种文档并没有区别。

在这里插入图片描述

CGI (Common Gateway Interface) 是一种标准,它定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。万维网服务器与 CGI 的通信遵循 CGI 标准。

在这里插入图片描述

(3)活动万维网文档

浏览器屏幕的连续刷新

在这里插入图片描述

每当浏览器请求一个活动文档时,服务器就返回一段程序副本在浏览器端运行。

活动文档程序可与用户直接交互,并可连续地改变屏幕显示。

由于活动文档技术不需要服务器的连续更新传送,对网络带宽的要求也不会太高。

在这里插入图片描述

三、HTTP 与 HTTPs 协议

1、HTTP 特点

(1)简单快速:

客户向服务器请求服务时,只需传送请求方法和路径。

请求方法常用的有 GET、HEAD、POST。

每种方法规定了客户与服务器联系的类型不同。

由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。

(2)灵活:

HTTP 允许传输任意类型的数据对象。 正在传输的类型由 Content-Type 加以标记。

(3)无连接:

无连接的含义是限制每次连接只处理一个请求。

服务器处理完客户的请求,并收到客户的应答后立即断开连接。

采用这种方式可以节省传输时间。

HTTP使用TCP协议作为它的支撑运输协。

HTTP客户首先发起一个与服务器的TCP连接,一旦建立连接,该浏览器和服务器就可以通过套接字接口访问TCP。

(4)无状态保存:

HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。

补充:对于无状态保存,如果用户登录一家购物网站,希望即使用户跳转到该站的其他页面也能继续保持登录状态。HTTP/1.1 虽然是无状态协议,但为了实现保存状态的功能,引入了 Cookie 技术。

对于无连接,早期的 HTTP 是请求响应之后直接断开,但现在的 HTTP/1.1 不直接断开,而是等几秒钟,如果用户在这几秒钟之内有新的请求,那么还是通过之前的连接通道来收发消息,如果过了这几秒钟用户没有发送新的请求,那么就会断开连接,这样可以提高效率,减少短时间内建立连接的次数,因为建立连接也是耗时的。

(5)支持 B/S 及 C/S 模式。

2、HTTP 各版本比较

在这里插入图片描述

3、HTTP 的请求与响应报文

(1)HTTP 请求(Request)

客户端发送一个 HTTP 请求到服务器的请求消息包括:请求行(request line)、请求头部(header)、空行和请求数据四个部分。

在这里插入图片描述

HTTP 请求行

在这里插入图片描述

HTTP 请求头

请求头信息为 “名:值” 对,之间用冒号分隔。

请求头参数包括:

在这里插入图片描述 在这里插入图片描述在这里插入图片描述

空行

HTTP 请求头的最后会有一个空行,表示请求头部结束,接下来为请求数据,空行一定要有。

请求数据

请求数据不一定有,比如 get 请求就没有请求数据。

(2)HTTP 响应(Response)

服务器接收并处理客户端发过来的请求后会返回一个 HTTP 的响应消息,响应包括:状态行、响应头部、空行和响应正文四个部分。

在这里插入图片描述

状态行:

包括协议版本、状态码和状态码描述。协议版本和请求报文一致,状态码是一个 3 位数字。

在这里插入图片描述

比较常见的状态码有:

响应头部

这里是引用

4、HTTP 请求响应步骤

(1)客户端连接到 Web 服务器

用户确定要访问网页的URL,并将其输入到浏览器的地址栏中,浏览器向DNS服务器发出请求,获取Web服务器域名所对应的IP地址。

HTTP 客户端通常就是浏览器,与 Web 服务器的 HTTP 端口(默认为 80)建立一个 TCP 套接字连接,比如http://www.abc.com;

(2)发送 HTTP 请求

通过 TCP 套接字,客户端向 Web 服务器发送一个请求传输网页的 HTTP 请求报文。

一个请求报文由请求行、请求头部、空行和请求数据 4 部分组成;

(3)服务器接受请求并返回 HTTP 响应

Web 服务器解析请求,定位请求资源并将资源复本写到 TCP 套接字,由客户端读取。

一个响应由 状态行、响应头部、空行和响应数据 4 部分组成;

(4)释放 TCP 连接

若 connection 模式为 close,则服务器主动关闭 TCP 连接,客户端被动关闭连接,TCP 连接释放;

若 connection 模式为 keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

(5)客户端浏览器解析 HTML 内容

客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。

然后解析每一个响应头,响应头告知以下为若干字节的 HTML 文档和文档的字符集。

客户端浏览器读取响应数据 HTML,根据 HTML 的语法对其进行格式化,并在浏览器窗口中显示;

在这里插入图片描述

5、HTTPS 协议

HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议,使用安全套接字层(SSL)进行信息交换

即 HTTPS 是使用了 TLS/SSL 加密的 HTTP 协议,基于非对称加密算法和对称加密算法的协作使用。

TLS/SSL 指加密的规范,介于 TCP 和 HTTP 之间的安全协议,不影响原有的 TCP 和 HTTP 协议。

在这里插入图片描述在这里插入图片描述

(1)TLS/SSL协议的三个特性

TLS/SSL 协议就是客户端和服务器之间实现安全交换信息的协议。

在这里插入图片描述

TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 Hash、非对称加密和对称加密。

在这里插入图片描述

(2)SSL 握手过程

● ClientHello:客户端请求建立 SSL 连接,向服务器提供以下信息:

1)支持的 SSL 协议版本,比如 TLS1.0;

2)客户端生成的随机数,用于后续对称加密阶段生成对话密钥;

3)支持的加密方法,比如RSA公钥加密。

● SeverHello:服务器对客户端的请求发出回应,包括以下信息:

1)确认使用的 SSL 协议版本,如果服务器与客户端支持的版本不一致,服务器关闭通信;

2)服务器生成的随机数,用于后续对称加密阶段生成对话密钥;

3)确认使用的加密方法,比如 RSA 公钥加密;

4)服务器证书。(如果服务器也需要确认客户端的身份,就会再包含一项信息,即要求客户端提供客户端证书,比如金融机构只允许认证客户连入自己的网络)

● 客户端收到服务器回应后,验证服务器证书的合法性,如果证书非可信机构颁布、证书已过期等,会提出警告,选择是否还要继续通信。如果证书没有问题,客户端就从证书中取出服务器的公钥。然后向服务器发送三个信息:

1)用公钥加密的随机数(pre-master key);

2)编码改变通知,表示随后的信息将用双方商量好的加密方法和密钥发送;

3)客户端握手结束通知,这一项同时也是前面发送的所有内容的 hash 值,用于供服务器校验。

● 服务器的最后回应,服务器收到客户端的 pre-master key 之后,计算生成本次会话所用的会话密钥,然后向客户端发送以下信息:

1)编码改变通知,表示随后的信息将用双方商量好的加密方法和密钥发送;

2)服务器握手结束通知,这一项同时也是前面发送的所有内容的 hash 值,用于供客户端校验。

握手阶段结束,客户端和服务器进入加密通信阶段,就是使用 HTTP 协议,只不过通信内容都用上面商定的会话密钥进行了加密。

在这里插入图片描述

(3)非对称加密和对称加密

1)非对称加密:用于在 SSL 握手过程中加密生成的密码。一对多通信,分为公钥和私钥,公钥加密的信息只有私钥能解开(甚至公钥都不能解密出自己加密的信息),因此掌握公钥的不同客户端之间不能互相解密信息。常见非对称加密算法有 RSA、ECC、DH 等。

2)对称加密:用于加密真正要传输的数据。一对一通信,使用相同的密钥对信息进行加密和解密,只有掌握密钥才能获取信息。常见的对称加密算法有 AES-CBC、DES、3DES、AES-GCM 等。不同节点采用的对称密钥不同,从而保证了信息只能由通信双方获取。

3)Hash 算法:用于验证数据的完整性。哈希函数特性是单向不可逆,对输入非常敏感,输出长度固定,对原始数据的任何修改都会改变散列函数的结果,在这里用于防止信息篡改并验证数据的完整性。常见的算法有 MD5、SHA1、SHA256(Secure Hash Algorithm,安全哈希算法)。散列函数不能脱离加密进行信息防篡改,因为明文传输时中间人可以修改信息后重新计算信息摘要,因此需要对传输的信息及信息摘要进行加密。

6、HTTP 和 HTTPs 区别

在这里插入图片描述

HTTPS 优点:

在这里插入图片描述

HTTPS 缺点:

在这里插入图片描述

7、Web 缓存

Web缓存(Web cache)也叫代理服务器(proxy server)。

在这里插入图片描述

(1)WEB缓存的作用

在这里插入图片描述

(2)工作过程

1) 浏览器和代理服务器建立TCP连接,并将HTTP请求发送到代理服务器

2)代理服务器见检查本地已存储对象复本。如果存储对象在其中,代理服务器向浏览器发送HTTP响应报文返回该对象

3)如果代理服务器中没有该请求对象,代理服务器和源服务器建立TCP连接,然后代理服务器向源服务器发送一个目标对象的HTTP请求。源服务器接到请求后,将请求对象通过HTTP响应发送给代理服务器

4)代理服务器收到请求的对象时,在本地建立该对象的副本,然后通HTTP响应将对象发送给浏览器。

8、Web 页面请求过程

(1)DHCP 配置主机信息

假设主机最开始没有 IP 地址以及其它信息,那么就需要先使用 DHCP 来获取。

① 主机生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67 和源端口 68 的 UDP 报文段中。

② 该报文段则被放入在一个具有广播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 数据报中。

③ 该数据报则被放置在MAC 帧中,该帧具有目的地址 FF:FF:FF:FF:FF:FF,将广播到与交换机连接的所有设备。

④ 连接在交换机的 DHCP 服务器收到广播帧之后,不断地向上分解得到 IP 数据报、UDP 报文段、DHCP 请求报文,之后生成 DHCP ACK 报文,该报文包含以下信息:IP 地址、DNS 服务器的 IP 地址、默认网关路由器的 IP 地址和子网掩码。该报文被放入 UDP 报文段中,UDP 报文段有被放入 IP 数据报中,最后放入 MAC 帧中。

⑤ 该帧的目的地址是请求主机的 MAC 地址,因为交换机具有自学习能力,之前主机发送了广播帧之后就记录了 MAC 地址到其转发接口的交换表项,因此现在交换机就可以直接知道应该向哪个接口发送该帧。

⑥ 主机收到该帧后,不断分解得到 DHCP 报文。之后就配置它的 IP 地址、子网掩码和 DNS 服务器的 IP 地址,并在其 IP 转发表中安装默认网关。

(2)ARP 解析 MAC 地址

①: 主机通过浏览器生成一个 TCP 套接字,套接字向 HTTP 服务器发送 HTTP 请求。为了生成该套接字,主机需要知道网站的域名对应的 IP 地址。

②: 主机生成一个 DNS 查询报文,该报文具有 53 号端口,因为 DNS 服务器的端口号是 53。

③: 该 DNS 查询报文被放入目的地址为 DNS 服务器 IP 地址的 IP 数据报中

④: 该 IP 数据报被放入一个以太网帧中,该帧将发送到网关路由器。

⑤: DHCP 过程只知道网关路由器的 IP 地址,为了获取网关路由器的 MAC 地址,需要使用 ARP 协议。

⑥: 主机生成一个包含目的地址为网关路由器 IP 地址的 ARP 查询报文,将该 ARP 查询报文放入一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧转发给所有的连接设备,包括网关路由器。

⑦: 网关路由器接收到该帧后,不断向上分解得到 ARP 报文,发现其中的 IP 地址与其接口的 IP 地址匹配,因此就发送一个 ARP 回答报文,包含了它的 MAC 地址,发回给主机。

(3)DNS 解析域名

①: 知道了网关路由器的 MAC 地址之后,就可以继续 DNS 的解析过程了。

②: 网关路由器接收到包含 DNS 查询报文的以太网帧后,抽取出 IP 数据报,并根据转发表决定该 IP 数据报应该转发的路由器。

③:因为路由器具有内部网关协议(RIP、OSPF)和外部网关协议(BGP)这两种路由选择协议,因此路由表中已经配置了网关路由器到达 DNS 服务器的路由表项。

④: 到达 DNS 服务器之后,DNS 服务器抽取出 DNS 查询报文,并在 DNS 数据库中查找待解析的域名。

⑤: 找到 DNS 记录之后,发送 DNS 回答报文,将该回答报文放入 UDP 报文段中,然后放入 IP 数据报中,通过路由器反向转发回网关路由器,并经过以太网交换机到达主机。

(4)HTTP 请求页面

①: 有了 HTTP 服务器的 IP 地址之后,主机就能够生成 TCP 套接字,该套接字将用于向 Web 服务器发送 HTTP GET 报文。

②: 在生成 TCP 套接字之前,必须先与 HTTP 服务器进行三次握手来建立连接。生成一个具有目的端口 80 的 TCP SYN 报文段,并向 HTTP 服务器发送该报文段。

③: HTTP 服务器收到该报文段之后,生成 TCP SYN ACK 报文段,发回给主机。

④: 连接建立之后,浏览器生成 HTTP GET 报文,并交付给 HTTP 服务器。

⑤: HTTP 服务器从 TCP 套接字读取 HTTP GET 报文,生成一个 HTTP 响应报文,将 Web 页面内容放入报文主体中,发回给主机。

⑥: 浏览器收到 HTTP 响应报文后,抽取出 Web 页面内容,之后进行渲染,显示 Web 页面。

四、远程终端协议 TELNET

TELNET 是一个简单的远程终端协议,也是互联网的正式标准。

用户用 TELNET 就可在其所在地通过 TCP 连接注册(即登录)到远地的另一个主机上(使用主机名或 IP 地址)。

TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。

这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。

客户/服务器方式

现在由于 PC 的功能越来越强,用户已较少使用 TELNET 了。TELNET 也使用客户/服务器方式。

在本地系统运行 TELNET 客户进程,而在远地主机则运行 TELNET 服务器进程。

和 FTP 的情况相似,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。

TELNET 使用网络虚拟终端 NVT 格式 。

在这里插入图片描述

网络虚拟终端 NVT 格式

客户软件把用户的击键和命令转换成 NVT 格式,并送交服务器。

服务器软件把收到的数据和命令,从 NVT 格式转换成远地系统所需的格式。

向用户返数据时,服务器把远地系统的格式转换为 NVT 格式,本地客户再从 NVT 格式转换到本地系统所需的格式。

五、FTP

文件传输协议(FileTransfer Protocol,FTP)属于 TCP/IP 协议族的应用层协议,其传输层使用的是 TCP,基于客户机/服务器模式工作,为数据传输提供了可靠保证。

在这里插入图片描述

FTP的工作过程

其实就是客户机程序根据用户需要发送命令,服务器程序响应命令的过程。

需要建立两种类型的连接:控制连接和数据连接。

在这里插入图片描述

流程

(1)启动FTP服务器:

由于FTP采用了客户机/服务器工作模式,因此在创建FTP会话之前,首先必须启动FTP服务器,并使其处于等待客户机程序的FTP请求状态。

(2)启动FTP客户机程序并建立控制连接:

启动FTP客户机程序,并向FTP服务器的21端口(控制连接端口)发出主动连接的请求,以期获得FTP服务器的相应权限。服务器响应请求后便在用户协议解释器和服务器协议解释器之间建立了一条TCP连接。

(3)建立数据连接并进行文件传输:

用户通过客户机程序输入FTP命令,服务器接收命令。如果命令正确且需要进行文件传输,服务器使用TCP20端口在双方之间建立另一条TCP连接,即数据连接,并通过该连接进行文件传输。当本次命令的文件传输完毕,关闭该数据连接。

(4)关闭FTP:

用户执行完其所需的FTP命令后,发出退出FTP命令,控制连接关闭,本次FTP服务结束。

常见的命令下:

在这里插入图片描述

六、电子邮件传输协议

一个电子邮件系统由三部分组成:

用户代理、邮件服务器以及邮件协议。

在这里插入图片描述

需要发送者邮件代理、发送者邮件服务器、接收者邮件服务器,接收者代理4个程序的参与。

● 邮件服务代理(邮件服务器)MTA:邮件服务代理通常是计算机系统中的一个进程,负责把邮件从源端传输到目的端。

● 用户代理:用户代理就是我们平时见到的Gmail,QQ邮箱之类的,其中有查看邮件等功能。

● 邮件传输过程:用户编写邮件后会存放在邮件服务器,发送时根据目的邮箱地址从DNS查找对方的邮件服务器地址并发送,目的邮件服务器将邮件存储 。

邮件协议包含发送协议和读取协议,发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。

电子邮件格式:

在这里插入图片描述

1、SMTP(Simple Mail Transfer Protocol)

简单邮件传输协议SMTP(下层协议TCP,端口25):一般用于发送邮件即由用户代理发送到邮件服务器,或邮件服务器到达目的邮件服务器。 SMTP 是建立在传输层协议 TCP 上的可靠高效的邮件传输协议,采用请求/应答方式来实现。整个工作过程包括连接建立、邮件传送和连接释放3个阶段。

(1)连接建立:SMTP是基于客户机/服务器模式工作的,邮件服务器在TCP的25端口守候客户机的请求。当需要发送邮件时,发送主机的SMTP客户机向连接主机的SMTP服务器的TCP端口25发出建立连接请求,得到服务器确认后连接建立。此后,SMTP客户机再次向SMTP服务器发送HELO命令,并附上发送方主机名以确认SMTP服务器是否已经准备好接收邮件。如果SMTP服务器应答“250 XXXX”表示已准备好接收邮件。(2)邮件传送:SMTP客户机得到SMTP服务器的肯定回答后,随即可利用MAIL命令告诉SMTP服务器新的邮件发送操作已经开始。如果SMTP服务器已经准备好接收邮件,则以250应答代码应答。其后SMTP客户机可以用RCPT命令发送邮件接收者的目的地址,以便SMTP服务器把邮件内容最终传送到收件人的邮箱中。如果命令被接收,则返回250应答码。然后SMTP客户机可利用DATA命令告诉SMTP服务器下面将要发送邮件内容。如果命令被接收,则SMTP服务器以354应答码应答,并认定以下的各行都是邮件内容。发送完毕后,再发送

2、POP3

邮局协议版本3POP3协议(下层协议TCP,端口110)用于由邮件服务器接收邮件到用户代理端。

(1)只要用户从服务器上读取了邮件,就把该邮件删除,但是目前改进的 POP3 已经全面支持下载而不删除原邮件。

(2)无论你在客户端做了任何操作(如移动、标记),都不会反映到服务器上,也就是只能单方面地从服务器“读取”。POP3协议所用的是110端口。

3、IMAP

交互邮件访问协议IMAP协议(下层协议TCP,端口143)用于由邮件服务器接收邮件到用户代理端。

IMAP 协议中客户端和服务器上的邮件保持同步,如果不手动删除邮件,那么服务器上的邮件也不会被自动删除。

IMAP 这种做法可以让用户随时随地去访问服务器上的邮件。

同时它与 POP3 的本质区别在于,在客户端的操作(包括删除)都会反映到服务器上,是一个双向的通信。

七、Socket

TCP下的socket

处于应用层和运输层之间,给出了一个接口,可以使用TCP协议进行通信。

在这里插入图片描述

TCP 下 socket 流程:

在这里插入图片描述

到此这篇关于详细讲解计算机网络——应用层的文章就介绍到这了,更多相关计算机网络应用层内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文