北航计网课程笔记-六、应用层

第六章 应用层

应用层概述

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

  • 应用层的功能:
    • 文件传输、访问和管理
    • 电子邮件
    • 虚拟终端
    • 查询服务和远程作业登录
  • 应用层的重要协议
    • FTP
    • SMTP、POP3
    • HTTP
    • DNS

网络应用模型

客户/服务器模型C/S

  • 客户是服务请求方,服务器是服务提供方
  • Web、FTP、远程登录、电子邮件
  • 网络中各计算机地位不平等
  • 网络的管理非常集中和方便
  • 客户机之间不直接通信
  • 可扩展性不佳
  • 服务器的性能决定了整个系统的性能

P2P模型

特点:

  • 典型的分布式计算模型

  • 每个节点都同时具有上传、下载的功能,权利和义务大体对等

  • 任意一对计算机(对等方)直接相互通信

分类:

  • 集中目录式
  • 纯P2P模式
  • 混合式

优点:

  • 减轻了服务器的计算压力,大大提高了系统效率和资源利用率
  • 多个客户机之间可以直接共享文档
  • 可扩展性好
  • 网络健壮性强

缺点:

  • 占用主机内存
  • 使网络拥塞

DNS

域名系统:用来把便于记忆的域名解析为便于机器处理的IP地址。

典型的C/S系统

多层次的、基于域的命名系统,使用分布式数据库实现这种命名机制。

层次域名空间

image-20241229215018609

域名服务器

  • 域名服务器负责把域名解析为IP地址,管辖范围称为。每个区所有节点相通。

  • 因特网上所有主机的映射分布在所有DNS上。

  • DNS域名服务器把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。

    当主域名服务器出故障时,辅助域名服务器可以保证DNS的查询工作不会中断,提高域名服务器的可靠性。

  • 根域名服务器:负责管理顶级域名的服务器,知道所有顶级域名服务器的IP地址。

    IPv4根域名服务器全球一共13个。

  • 顶级域名服务器:负责管理所有二级域名。收到DNS查询请求时,就给出相应的回答,可能是最后的结果,也可能是下一步查找的域名服务器的IP地址。

  • 权限域名服务器:每台主机都必须在权限域名服务器上登记,权限服务器可以将它所管辖的主机名转化为主机的IP地址。一台主机最好有两个权限域名服务器。

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

image-20241229215725991

域名解析过程

  • 递归查询:

    本地域名服务器向根域名服务器查询一次,其余查询递归地在其他几个域名服务器之间进行。

    根域名服务器负载过大。

  • 迭代查询:

    例:查询www.qwq.com

    • 客户机向本地域名服务器发送DNS请求报文
    • 本地域名服务器查询本地缓存,如果没有记录,则以DNS客户机的身份向根域名服务器发送解析请求报文。
    • 根域名服务器收到请求后,判断出域名属于com顶级域,返回com顶级域名服务器IP地址。
    • 本地域名服务器向com顶级域名服务器发送请求解析报文
    • com顶级域名服务器收到请求后,判断域名属于qwq.com,返回qwq.com的授权域名服务器的IP地址。
    • 本地域名服务器向qwq.com的授权域名服务器发送请求解析报文
    • 授权域名服务器收到请求后,判断域名属于www.qwq.com主机,返回这台主机的ip地址。
    • 本地域名服务器将结果保存到 本地缓存,同时返回给客户机
image-20241229215942801 image-20241230221734465 image-20241230221758019

高速缓存

提高查询效率,减少因特网上DNS查询报文数量。DNS服务器在一段时间后会丢弃高速缓存中的信息。

FTP

电子邮件

电子邮件的组成结构

image-20241229223124584

三个主要组成构件:

  • 用户代理(UA):用户与电子邮件系统的接口,通常用户代理就是一个运行在PC上的程序
  • 邮件服务器:
    • 发送和接收邮件,同时还要向发件人报告邮件传送的情况。
    • 以客户/服务器模式工作,但必须能同时充当客户和服务器
  • 电子邮件使用的协议:如SMTP(推)、POP3(拉)等
  • 电子邮件的发送过程:
    1. 发件人写邮件,用户代理用SMTP把邮件发送给发送端邮件服务器。
    2. 发送端邮件服务器把邮件放入缓存队列,等待发送
    3. 发送端SMTP客户进程发现缓存中有待发送邮件,向接收端SMTP服务器发起TCP连接的建立。
    4. TCP连接建立后,发送端SMTP客户进程开始向接收端SMTP服务器发送邮件,发送完毕后关闭TCP连接。
    5. 接收端SMTP进程收到邮件,把邮件放入收信用户邮箱。
    6. 收件人收信时,调用用户代理,使用POP3/IMAP协议将邮件从接收端邮件服务器中取回。

电子邮件格式与MIME

电子邮件格式:

  • 电子邮件由信封和内容组成,内容又分为首部和主体。
  • 首部包含首部行,首部行由关键字 + : + 值组成。最重要的关键字是 ToSubject
  • To:必须的关键字,后面填入一个或多个收件人的电子邮箱地址。格式规定为:收件人邮箱名 @ 邮箱所在主机域名,例如3239695085@qq.com,邮件地址在整个因特网上唯一
  • Subject:可选关键字,邮件的主题,反应邮件的主要内容。

MIME:

  • SMTP只能传送定长的ASCII码邮件,很多语言无法传送
  • MIME在SMTP协议的基础上,增加了主题结构,定义了非ASCII码的编码规则。
  • 内容:
    • 5个新的首部字段:MIME版本,内容描述,内容标识,传送编码和内容类型
    • 定义众多邮件内容格式,对多媒体电子邮件的表示方法进行标准化
    • 定义传送编码,可对任何内容格式进行转化。

SMTP和POP3

SMTP

  • 简单邮件传输协议SMTP:使用C/S方式,发送邮件的SMTP就是客户,接收邮件的就是服务器。
  • SMTP只支持传输7比特的ASCII码内容。
  • 连接建立:
    • 发送方使用端口号25与接收方建立TCP连接。接收方发出220 Service ready的响应,发送方发出HELO命令,并附上发送方主机名
    • 不使用中间的邮件服务器,发送方直接和接收方建立连接。
  • 邮件传送
    • 客户端从 MAIL 命令开始,后跟From首部行。
    • 服务器若准备好接收邮件,回答 250 OK550 No such user here
    • 客户端发送一个或多个 RCPT 命令,后跟To首部行。
    • 每发送一个RCPT命令,都有相应信息从服务器返回。
    • 获得回答后,即确认接收方系统已做好接收邮件准备,客户端发送 DATA 命令,告诉服务器开始传送邮件。
    • 服务器回答 354 Start mail input; end with <CRLF>.<CRLF>,之后客户端发送邮件内容,以 <CRLF>.<CRLF> 结束。
  • 连接释放:
    • 客户端发送QUIT命令,服务器回答221 Service closing transmission channel,表示SMTP同意释放TCP连接,至此邮件传送过程结束。

POP3和IMAP

  • 邮局协议POP:十分简单但功能有限的邮件读取协议。
    • POP采用 C/S工作方式,传输层使用TCP,端口号110。
    • 两种工作方式:下载并保留下载并删除(用户是否可以再次从服务器上读取)
    • 第3个版本 POP3采用拉的通信方式,即用户读取邮件时,用户代理向邮件服务器发出请求,拉取用户邮箱中的邮件。
  • 因特网报文存取协议IMAP:相比POP复杂许多
    • 为用户提供创建文件夹,移动邮件等功能,为此IMAP维护了会话用户的状态信息。
    • IMAP允许用户代理只获取报文的某些部分,例如可以只读取一个报文的首部,或多部份MIME报文的一部分。

常用的邮件读取协议:POP3、IMAP、HTTP

万维网(WWW)

万维网的概念和组成结构

  • 万维网是一个分布式的、联机式的信息存储空间,在此空间中,一样有用过的事物常称为一样资源,并使用一个全域统一资源定位符URL标识。

    这些资源通过超文本传输协议HTTP传送给使用者。

  • 万维网内核部分组成:

    • 统一资源定位符URL:标识万维网上各种文档
    • 超文本传输协议HTTP:应用层协议,使用TCP连接进行可靠传输。
    • 超文本标记语言HTML:一种文档结构的标记语言。
  • URL格式:<协议>://<主机>:<端口>/<路径>

  • 万维网以C/S方式工作,浏览器是在用户主机上的万维网客户程序,万维网文档驻留的主机则运行服务器程序,这台主机称为万维网服务器

    • Web用户用了浏览器与服务器建立连接,发送浏览请求
    • 服务器把URL转化为文件路径,并返回给Web浏览器
    • 通信完成,关闭连接

超文本传输协议HTTP

HTTP是面向事务的应用层协议,规定了浏览器和服务器之间的请求和相应的格式和规则,是万维网上能够可靠地交换文件的重要基础。

HTTP的操作过程

HTTP有两类报文:请求报文和响应报文。

例:访问www.qwq.com

  • 浏览器分析链接指向页面URL(www.qwq.com)
  • 浏览器向DNS请求解析www.qwq.com的IP地址
  • DNS解析出IP地址
  • 浏览器与该服务器建立TCP连接(默认端口80)
  • 浏览器发出HTTP请求:GET/index.htm
  • 服务器通过响应把文件index.htm发送给浏览器
  • 释放TCP连接
  • 浏览器释放文件indx.htm,并将Web页显示给用户。

HTTP的特点

  • HTTP使用TCP作为传输层协议,保证了数据的可靠性,但HTTP本身是无连接的。

  • HTTP是无状态的,同一个客户第二次访问同一个服务器上的页面时,服务器相应与第一次被访问是一样的。

  • HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。实际应用中,通常使用Cookie加数据库的方式跟踪用户的活动

  • Cookie工作原理

    • 当某个用户浏览某个使用Cookie的网站时,该网站的服务器就为用户产生一个唯一识别码,并在用户的响应报文中添加一个Set-cookie的首部行。
    • 用户继续浏览这个网站时,会取出这个网站的识别码,并放入请求报文的首部行。
    • 服务器根据请求报文中的 Cookie识别码 就能从数据库中查询到该用户的活动记录,执行一些个性化操作。
  • HTTP既可以使用非持久性连接,也可以使用持久连接

  • 对于非持久性连接,每个网页元素对象的传输都要单独建立TCP连接。每个对象的引入都要导致 2×RTT 的开销,一次用于建立TCP连接,另一次用于请求和接收文档。这使得万维网服务器的负担很重。

  • 对于持久连接,指的是服务器在发送响应后仍然保持这条连接,使同一个客户和服务器可以继续在这条连接上传送后续的HTTP请求和响应报文。

HTTP的报文结构

  • HTTP是面向文本的,因此报文中每个字段都是一些ASCII码串,且每个字段长度都是不确定的

  • 分为请求报文响应报文,两者都由三部分组成,区别在于开始行不同。

    image-20241230152258848
    • 开始行:区别报文是请求报文还是响应报文。请求报文中称为请求行,响应报文中称为状态行

    • 开始行三个字段之间以空格分隔,最后的CRLF分别表示回车和换行

    • 请求报文的请求行包含三个字段:

      • 方法:表示请求的类型,如 GETPOSTHEAD 等。
      • URL:表示请求的资源的位置。
      • HTTP版本:表示请求报文的HTTP版本。
    • 响应报文的状态行包含三个字段:

      • HTTP版本:表示响应报文的HTTP版本。
      • 状态码:表示服务器对请求的处理结果。
      • 状态码的原因短语:表示状态码的含义。
    • 首部行:用来说明浏览器、服务器或报文主体的一些信息。首部可以有几行,也可以不使用。

      每个首部行中都有首部字段和它的值,每一行结束都要有CRLF。

      整个首部行结束时,还有一个空行将它和后面的实体主体分开。

    • 实体主体:请求报文一般不用,响应报文很少用。

posted @   qiuer0121  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示