应用层

应用层是tcp /ip 五层最上面的一层,是离应用程序最近的一层。应用层直接和应用程序接口结合,并提供常见的网络应用服务。

针对同的解决问题有不同的应用层协议,是为了更好的解决一类问题而产生的协议。

比如 HTTP, SMB , DNS , FTP,SSH ,Telnet 等等。

使用特定的应用层传输的数据 发送给传输层,应用层的报文 将作为传输层的 数据包的数据部分

RFC

互联网公共领域的标准应用的应用协议是RFC 文档定义的。

RFC: 请求意见稿(英语:Request for Comments,缩写:RFC),又翻译作意见征求意见请求请求评论[1]是由互联网工程任务组(IETF)发布的一系列备忘录。文件收集了有关互联网相关信息,以及UNIX和互联网社群的软件文件,以编号排定。目前RFC文件是由互联网协会(ISOC)赞助发行。

RFC 可以理解为一个网络的应用层协议的提交规范,当提交的规范提议被通过后,将成为正式的规范。

如果要详细认识 应用层的某个协议的格式规范,通过查询RFC 协议是最权威的一种方式。

查看RFC文档 https://datatracker.ietf.org/

针对不同的意见稿都会有一个RFC序号,表示特定的一个意见稿。

比如 RFC 2616 HTTP/1.1 的意见稿。针对每个协议的改动和都有一个特定的序号,通过此序号查询具体的内容,可以了解详细的规范和详情。

DNS(端口号 53)

DNS 全称 Domain Name System 域名系统,是将域名转换成IP的系统。

在计算机通信中,如果直接使用ip地址进行通信,因为ip是没有规律的,并且没有特定的含义,不方便记忆,所以设计了域名来访问。在通过域名进行访问特定的网络服务之前,要做一次转换,要将域名转换成ip,而这个转换ip地址的操作就是通过 DNS 来完成的。

域名的格式和构造

域名分为顶级域名,二级域名,三级域名 ,四级域名等。

以 image.baidu.com 此域名为例. 顶级域名 为 com ,二级域名为 baidu 三级域名为 image

可以简单的理解为从域名的最右则向左算起,通过逗号分割,依次为 顶级域名,二级域名,三级域名 …..

通用的顶级域名有: com(公司企业),net(网络服务机构),org(组织),int(国际组织),edu(教育),gov(政府)等.

国家顶级域名有:cn (中国),us(美国),uk(英国)。

​ 域名的构成

通过根域名 向二级 三级设置四级域名逐渐延伸,组成最终的完整域名。

DNS的解析

dns服务器要完成的功能就是接收到服务器传来的域名,然后将此域名绑定的ip地址返回给客户端。

dns 系统是一个分布式的系统,是由多个服务器公共组成的。

域名服务器分为多种类型

  • 跟域名服务器:根名称服务器 记录了所有等级域名服务器的ip地址。当客户机的本地名称服务器没有任何域名解析缓存的时候,首先会请求根域名服务器。
  • 顶级域名服务器: 顶级域名服务器管理了在各自等级域名下的二级域名的服务器地址。比如 com 顶级域名服务器中就管理了 sian.com baidu.com 的域名服务器的地址
  • 权威域名服务器: 对于一个特定的域名,必须将域名交由某个DNS服务器进行解析,才能将域名指向对应的IP地址,才能让客户通过域名访问对应的站点。这个负责最终解析域名的服务器就是权威服务器。主要指的是特定域名的权威域名服务器

域名解析过程

  1. 客户端访问一个没有访问过的域名,优先从本机上的host 文件,浏览器缓存,本机缓存找到对应的ip地址。
  2. 当本机缓存中找不到对应的ip,那么将向本地域名服务器 获取,本地域名服务器就是本机配置的或自动获取的dns服务器的ip地址。
  3. dns服务器如果有此记录将直接返回,如果没有本地域名服务器将向根域名服务器发生代理请求。
  4. 本地域名服务器 遍历向根域名服务器发起访问,根域名服务器根据需要的域名返回对应的顶级域名服务器的ip。比如你要找域名为 xx.com 或xx.cn 的,将分表返回 com 的顶级域名服务器的ip 和cn 的顶级域名服务器的ip。
  5. 本地域名服务器获取到根域名服务器的ip后,向对应的根域名服务器请求。比如请求的是 image.baidu.com 那么顶级域名服务器将返回 baidu.com 的权威域名服务器地址,(即记录了baidu.com 相关域名信息的域名服务器)
  6. 本地服务器再次请求拿到的权威域名服务器,权威域名服务器 将请求的信息和自身的记录进行查询,并返回给本地域名服务器。
  7. 本地域名服务器对查询结果进行缓存 返回返回给客户端。
  8. 客户端对获取的结果进行缓存,同时访问的时候将域名替换成ip进行访问。

HTTPDNS

HTTPDNS是基于HTTP协议向DNS服务器发送域名协议请求。

简单的说就是DNS服务商 提供了一个查询DNS的http协议的接口,通过此接口可以使用HTTP协议查询域名对应的ip地址。

此种方式替代了基于DNS协议向运营商Local DNS发送解析请求的方式,可以避免Local DNS造成的域名劫持和跨网访问问题。

FTP (端口号 20,21)

FTP(File Transport Protocol): 文件传输协议。,是一种基于TCP的协议,采用客户/服务器模式,不支持UDP协议。 在RFC_1738 中定义此ftp协议的内容。

​ ftp 协议的工作模式

ftp服务端占用2个端口号,分别是 20 端口 和21 端口。所以ftp服务端和一个客户端都需要建立2个连接。

21端口是用来传输控制命令。

20端口是用来传输数据。

ftp 有两种连接模式

  • 主动连接
  • 被动连接

主动模式

  1. 客户端打开一个随机的命令 端口,将此端口连接服务端的命令端口。假设此端口为N (如图:cmd 4242端口)
  2. 客户端开始监听 N+1 端口 (客户端的数据端口 比 命令端口大1),同时向服务端的命令端口发送一个port 命令,告诉服务端可以向N+1 数据端口发送数据了。
  3. 服务端打开20端口,并且创建和客户端的N+1 端口的数据连接。

被动模式

  1. 客户端打开随机命令端口N 和 数据端口 N + 1.
  2. 客户端通过命令端口发送 PASV 命令到服务端的命令端口21。
  3. 服务端打开一个随机的数据端口,并告诉客户端服务端的随机数据端口。
  4. 客户端通过数据端口 N + 1 与服务端刚刚创建的随机数据端口建立数据传输。

FTP 客户端

通过使用客户端建立ftp协议连接

格式

1
ftp://[user[:password]@]host[:port]/url-path

常用的ftp客户端有

  • 浏览器 (部分浏览器支持,并且只支持ftp 不支持ftps,使用被动模式)
  • FileZila
  • Xftp
  • FlashFxp

FTP服务端

windows 自带ftp功能,可以通过 启用或关闭windows功能 开启ftp服务.

可参考此链接 https://zhuanlan.zhihu.com/p/112249506

linux 搭建ftp服务器。 https://cloud.tencent.com/developer/article/1526161

邮件协议

发送邮件的协议。

SMTP(Simple Mail Transfer Protocol):简单的邮件传输协议,基于TCP协议,服务端默认使用 25端口,SSL/TLS 使用 465端口。

收邮件的协议

POP(Post Office Protocol):邮局协议,基于TCP协议,最新版是POP3,服务端默认使用110端口,SSL/TLS 使用995端口。

IMAP(Internet Message Access Protocol):因特网信息访问协议,基于TCP,最新版是IMAP4,服务器默认使用143端口,SSL/TLS使用993端口。

POP协议的特点:客户端连接服务器后,将会从服务器下载所有的邮件,而客户端的删除等操作并不会跟服务器同步,每个客户端都相当于从服务端拉取了一个副本。

IMAP协议的特点:客户端连接服务器的时候,获取的是服务器上的邮件的基本信息,并不会下载邮件。当打开某个邮件的时候,才跟服务端建立连接下载邮件,客户端的删除等操作会跟服务端同步。

客户端1 通过SMTP协议向 邮件服务器1 发送邮件,邮件服务器1 收到邮件后,与被发送方的邮件服务器建立网络连接,将信息发送到邮件服务器2,邮件服务器2 收到邮件信息后,通过POP 或IMAP协议同步到用户的客户端上。

VPN

VPN(Virtual Private Network),虚拟私人网络。在共用网络上建立一个专用的加密传输通道。

​ vpn 建立通道

​ 经过vpn服务器的传输将被加密

VPN 的主要就是建立加密通道,通道内拦截到数据后无法知道发送的是什么数据内容

VPN的功能和作用

  • 提高上网的安全性

    许多公司企业的员工等使用虚拟专用网(VPN)来访问其内部的网络,以达到远程办公的作用。

  • 隐藏上网者的身份

    上网者的来源信息将被隐藏,拦截到数据包也无法获取

  • 突破网络封锁,科学上网。

VPN与代理的区别

vpn 需要安装客户端软件,代理不需要安装客户端软件。

vpn会对传输的数据加密,代理不会对传输的数据加密。

VPN 使用的协议

PPTP (Point to Point Tunneling Protocol):点对点隧道协议。

L2TP (Layer Two Tunneling Protocol):第二层隧道协议。

IPsec(Internet Protocol Security):互联网安全协议.