应用层

应用层对应用程序的通信提供服务。

应用层协议定义:

  • 应用进程交换的报文类型,请求还是响应?

  • 各种报文类型的语法,如报文中的各个字段及其详细描述字段的语义,即包含在字段中的信息的含义。

  • 进程何时、如何发送报文,以及对报文进行响应的规则。

应用层的功能:

  • 文件传输、访问和管理

  • 电子邮件

  • 虚拟终端

  • 查询服务和远程作业登录

应用层重要协议

FTPSMTP、POP3HTTPDNS

网络应用模型

  • 客户/服务器模型(C/S)
  • P2P模型(Peer-to-peer)也叫对等模型

DNS系统

域名

域名从左到右级别逐渐升高,最右边的叫做顶级域名

image-20240305091606492

根指的是顶级域名右边的一点,所以完整的域名写法应该是www.xxx.com.,从根后面才是顶级域名

顶级域名

image-20240305091738436

反向域名即通过IP地址来反向解析出域名

二级域名

image-20240305091920777

域名树

域名可以有很多级,比如学校的域名就有三级、四级等等

image-20240305092053637

域名服务器

  • 本地域名服务器:当一个主机发出DNS查询请求时,这个查询请求报文就发给本地域名服务器。

  • 根域名服务器:知道所有的域名,就是知道顶级域名对应那个顶级域名服务器,在本地域名服务器找不到域名时就会先去请求根域名服务器

  • 顶级域名服务器:管理该顶级域名服务器注册的所有二级域名

  • 权限域名服务器:负责一个区的域名服务器

总之就是向DNS请求来指明下一步要查询哪一个DNS服务器,这是一个示例图:

image-20240305093038757

域名解析过程

可以参考这篇文章:域名分级与域名解析过程(DNS)-CSDN博客

域名解析分为两种查询:

  • 递归查询

    image-20240305093323157

  • 迭代查询

    image-20240305093347626

这两种查询的区别就是客户角色不同,递归是每一种服务器都要做查询用户,而迭代就一直是本地域名服务器做查询用户

高速缓存

这是为了提高DNS查询效率的方法,比如最近查询过的域名会存放在本地域名服务器

文件传送协议

  • 文件传送协议FTP(FileTransfer Protocol):提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。
  • 简单文件传送协议TFTP(Trivial File Transfer Protocol)

FTP服务端和用户端

FTP是基于客户/服务器(C/S)的协议。

用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。

依照 FTP协议提供服务,进行文件传送的计算机就是FTP服务器。

连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端

FTP工作原理

  • 登陆

    知道ftp服务器地址后有两种登陆方式,一种是用户名&密码登陆方式,另一种是匿名登陆

    互连网中有很大一部分FTP 服务器被称为“匿名”(Anonymous)FTP服务器。这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权。Anonymous(匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“anonymous”登陆FTP服务,就可访问远程主机上公开的文件。这样可以减少服务器的压力。

FTP使用TCP实现可靠传输

FTP的服务器进程分为两种:

  • 一个主进程:负责接收请求
  • n个从属进程:去处理用户请求

这是ftp传输的过程及其使用的端口号:

image-20240305095147480

ftp传输的文件有两种模式:

  • 文本模式:ASCII模式,以文本序列传输数据
  • 二进制模式:Binary模式,以二进制序列传输数据

电子邮件

信息格式

  • 信封:例如xxx@163.com

  • 内容

    • 首部

      image-20240305124931354

    • 主体

      就是邮件内容了。

组成结构

邮件发送采用C/S模式,邮件服务器既可以做服务器也可以做发送方客户端,下面是一个示意图:

image-20240305130100685

邮件是存放在邮件服务器的缓存当中

SMTP协议

SMTP规定了14条命令(几个字母)和21种应信息(三位数字代码+简单文字说明)。

用于TCP连接的端口号一般是25端口

SMTP通信的三个阶段

连接建立=》邮件传送=》连接释放

image-20240305131325496

SMTP的缺点

  1. SMTP不能传送可执行文件或者其他二进制对象。

  2. SMTP仅限于传送7位ASCII码,不能传送其他非英语国家的文字。

  3. SMTP服务器会拒绝超过一定长度的邮件。

MIME

也叫通用因特网邮件扩充MIME,用来弥补SMTP协议的不足,MIME是电子邮件可以传输各种各样的数据

image-20240305131619206

现在也不光为邮件服务使用,也已经为浏览器使用,传输数据的时候就会声明传输的数据是什么MIME类型,http的请求头会有一栏content-type就是标识数据的MIME类型

邮局协议POP3

该协议也采用TCP连接,端口号一般为110,也是C/S模式,作用在最后用户读取邮件内容的时候

image-20240305132443641

其工作方式有两种:

  • 下载并保留(在服务器)
  • 下载并删除

网际报文存取协议IMAP

IMAP协议比POP协议复杂。当用户Pc上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。

IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分
(先看正文,有WiFi的时候再下载附件)。

该协议也是和POP3一样作用在最后一个环节

基于万维网的电子邮件

现在很少专门去下载发送邮件的软件,我们直接在网上输入邮箱写上内容就可以发送邮件了,是基于http协议去连接别的厂商的邮件服务器,比如通过http协议用户代理连接到网易邮件服务器

image-20240305132800061

万维网和HTTP协议

URL和URI

URI叫做统一资源标识符,URL(统一资源定位符)是其中的一种。

HTTP 请求的内容通称为”资源”。”资源“这一概念非常宽泛,它可以是一份文档,一张图片,或所有其他你能够想到的格式。每个资源都由一个 URI 来进行标识。

一般情况下,资源的名称和位置由同一个 URL(统一资源定位符,它是 URI 的一种)来标识。也有某些特殊情况,资源的名称和位置由不同的 URI 进行标识:例如,待请求的资源希望客户端从另外一个位置访问它。我们可以使用一个特定的首部字段,Alt-Svc,来指示这种情况。

URL 由多个必须或可选的组件构成。下面给出了一个复杂的 URL:

http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument

URL的结构如下:

URI=scheme:[//authority]path[?query][#fragment]
authority组件又分为三部分:[userinfo@]host[:port]
该组件中,userinfo用的比较少,一般HTTP以匿名的方式获取数据,如果要进行身份验证,格式为 username:password ,以@结尾

URN 是另一种形式的 URI,它通过特定命名空间中的唯一名称来标识资源。

urn:isbn:9780141036144
urn:ietf:rfc:7230

HTTP请求过程

HTTP请求具体过程示例图:

image-20240305133740408

HTTP连接方式

http协议本身是一个无状态协议,如果需要识别用户的话可以利用Cookie

连接方式:

  • 持久连接(Keep-alive)

    只需要进行一次TCP连接,后续再发送新数据不需要重新建立连接

    • 非流水线

      image-20240305134328129

      这就是非流水线式的连接,要在收到响应后才能继续下一次请求

    • 流水线

      就是可以同时发送多个请求报文不需要逐次等待

  • 非持久连接(Close)

    image-20240305134223174

    即每次发送一次新的数据都需要重新建立连接,比较耗时

HTTP请求报文结构

这里放一张图就行了,这是get请求的报文结构

image-20240305134824112