Application_Layer
应用层的功能
通过互联网上任意两台主机的应用进程之间的交互来完成特定网络应用。协议数据单元是报文。
应用层协议原理
网络应用的体系结构
- C-S(客户-服务器模式)
- 服务器:
- 一直运行
- 固定的IP和约定的端口号
- 扩展性差
- 客户端:
- 间歇性链接
- 可能是动态IP
- 服务器:
- P2P(对等模式)
- 端与端之间的通信
- 混合体(C-S+P2P)
不同主机之间的进程通信
-
通信方式:通过交换报文进行通信
-
对进程进行编址
- 主机:唯一标识的32位ip地址
- 所采用的传输协议:TCP/UDP
- 端口号:表示不同的进程
-
传输层提供的服务-需要穿过层间的信息
- 层间接口必须要携带的信息
- 要传输的报文
- 用户地址(ip+协议+port)
- 目标地址(ip+协议+port)
- 传输层实体(TCP/UDP)根据这些信息进行TCP(UDP)报文段的封装
- 源端口号,目标端口,数据等
- 将ip地址向下交IP实体,用于封装ip数据报,源ip,目标ip
- 层间接口必须要携带的信息
-
传输层提供的服务-层间信息的代表
-
Socket: 用于表示通信的一端,并提供了数据传输与通信的功能。
-
TCP之上的socket:TCP服务,两个进程之间的通信需要之前建立连接
- 4元组(源IP,源port,目标IP,目标port)
- 唯一的指定一个进程会话
-
UDP之上的socket:UDP服务,两个进程之间的通信需要之前无需建立连接
-
2元组(目标ip,目标port)源端指定
-
UDP_socket指定了应用所在的一个端节点
-
在发送数据报时,采用创建好的本地socket,就不必在发送每个报文中指定自己所采用的ip和port
-
-
-
如何使用传输层提供的服务实现应用(应用层协议)
- 应用层协议定义了什么:
- 交换的报文类型:请求or应答
- 各种报文类型的语法:报文中的各个字段及其描述
- 字段的语义:字段取值的含义
- 进程何时、如何发送报文及对报文进行相应的规则
- 应用协议仅仅是应用的一个组成部分,例如一个Web应用,由HTTP协议、web客户端、web服务器,HTML组成
- 应用需要传输层提供什么样的服务
- 数据丢失率:是否要求可靠的传输
- 延迟:对时间是否敏感
- 吞吐:一些应用(多媒体)需要最小限制的吞吐,一些应用则为弹性应用
- 安全
- 传输层提供的服务
- TCP服务
- 可靠的传输服务
- 流量控制:发送方不会淹没接收方(控制流量强度不能大于1)
- 拥塞控制:当网络出现拥塞,抑制发送方。
- 面向连接:要求在客户端进程与服务器进程之间建立连接
- 不能提供的服务:时间保证、最小吞吐保证、安全
- UDP服务
- 不可靠的数据传输
- 无需建立连接,省去建立连接的时间
- 不做可靠性工作,例如检错重发,适合对实时性要求比较高而对正确性要求不高的应用
- 不提供的服务:可靠、流量控制、拥塞控制、时间、建立连接
- SSL(Secure Sockets Layer)服务:建立在TCP之上的加密通信协议,用于确保数据传输的安全性和完整性
- TCP服务
- 应用层协议定义了什么:
常用的应用层协议
Web与HTTP
-
Web页:由一些对象组成:HTML文件、jpg图像、多媒体文件、JAVA小程序等
-
Web页含有一个基本的HTML文件,该基本HTML文件又包含若干对象的引用
-
**URL的组成:**访问协议+用户名+主机+路径+端口
-
示例:https://www.example.com:8080/path/to/resource?param1=value1¶m2=value2#section1
-
协议部分: 指定要使用的传输协议,通常是HTTP或HTTPS。HTTP代表未加密的传输,而HTTPS代表加密的传输。
-
主机部分: 指定资源所在的主机名或IP地址。对于Web页面,主机部分通常是一个域名,例如www.example.com。
-
端口部分(可选): 指定服务器使用的端口号。如果未指定端口号,则默认使用HTTP的标准端口号80,HTTPS的标准端口号为443。在URL中,如果端口号与协议的默认端口号一致,则通常不需要显式指定。
-
路径部分: 指定要访问的资源的路径。路径部分以斜杠(/)开头,表示服务器上的目录结构和文件位置。例如,/index.html表示访问服务器上的index.html文件。
-
-
HTTP概述:超文本传输协议
- C-S服务模式
- Web的应用层协议
- TCP连接
- 用户发送一个与服务器的TCP连接,port:80
- 服务器接受TCP连接
- 浏览器与Web服务器进行报文信息交互
- TCP连接关闭
-
HTTP连接
- 非持久性HTTP
- 一个TCP连接只有一个对象发送
- 下载多个对象需要建立多个TCP连接
- HTTP/1.0使用非持久性HTTP
- 持久性HTTP
- 一个TCP连接可以发送多个对象
- HTTP/1.1使用持久性HTTP
- 非持久性HTTP
-
HTTP报文(面向文本ASCII码)
- HTTP请求报文
- HTTP响应报文
-
用户-服务器状态:cookies
- Http响应报文中有一个cookie的首部行
- Http请求报文中含有一个cookie的首部行
- 在用户端系统中保留有一个cookie文件,由用户的浏览器管理
- 在Web站点有一个后端数据库
-
Web缓存(代理服务器)
- 缓存工作原理
- 在缓存中的对象:直接返回对象
- 若对象不在缓存中:缓存请求原始服务器,然后再将对象返回客户端
- 为什么使用Web缓存
- 降低服务器的压力,可以大大减少Internet接入链路上的流量
- 互联网上大量采用缓存,可以使较弱的ICP也能够有效提供内容
- 缓存工作原理
-
一个完整的URL请求过程
- 浏览器分析超链指向页面的 URL,看其是否合法,如果合法,先在浏览器缓存中查询,如果有对应页面直接返回。
- 浏览器通过DNS域名解析服务解析IP地址,先从浏览器缓存查询、然后是操作系统和hosts文件的缓存,如果没有查询本地域名服务器的缓存。
- 域名系统 DNS 解析出对应网站服务器的 IP 地址。
- 浏览器与服务器进行三次握手,建立 TCP 连接。
- 浏览器发出取页面文件命令。
- 服务器给出响应,把页面文件发给客户端浏览器。
- TCP 连接进行四次挥手释放。
- 浏览器渲染并显示页面文件中的所有文本。
FTP(File Trans Protocol)
-
FTP支持的服务:向远程主机上传输文件或从远程主机接收文件
- C-S 服务模式
- 端口号:21
-
FTP:控制连接与数据连接分开
-
控制连接:FTP客户端与服务器通过端口号21联系,并通过TCP作为传输协议
- 客户端通过控制连接获得身份确认以及发送命令浏览远程目录
- 服务器端收到一个文件传输命令时,服务器打开一个到客户端的数据连接
- 文件传输完成后,服务器关闭连接
-
数据连接:端口号20
- 服务器打开第一个TCP数据连接用于传输文件
-
EMail和SMTP
- 用户代理(邮件阅读器)
- 撰写、编辑和阅读邮件
- 例如Outlook、Foxmail、Gmail等
- 输出和输入邮件保存在邮件服务器上
- 邮件服务器
- 负责管理和维护发送给用户的邮件
- 简单邮件传输协议:SMTP(发送邮件)
- TCP协议之上
- 端口25
- 传输的三个阶段:握手、传输报文、关闭
- 收发邮件的详细流程
- 发送人通过用户代理撰写要发送的邮件
- 发送人的用户代理把邮件用SMTP协议发送给发送方的邮件服务器
- 发送方服务器将邮件临时存放在邮件缓存队列中,等待发送
- 发送方的服务器的SMTP客户与接收方邮件服务器的SMTP建立TCP连接,连接确认后将缓存队列中的邮件发出
- 收件人的邮件服务器收到邮件
- 收件人通过收件人的用户代理,使用POP3协议读取邮件服务器中的邮件
DNS(Domain Name System——域名系统)
-
DNS的必要性:将难以记忆的定长IP地址转化为容易记忆的不定长的域名,方便人的使用
-
DNS的主要思路:
- 分层的、基于域的命名机制
- 若干分布式的数据库完成名字到IP地址的转换
- 运行在UDP之上端口号为53的应用服务
- 核心的Internet功能,但以应用层协议实现
-
DNS域名空间
-
DNS域名服务器
-
域名服务器的概念:一个服务器所负责管辖的范围叫做区zone,每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位
-
域名服务器的类型
- 根域名服务器:最高层次的域名服务器,最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址
- 顶级域名服务器(TLD服务器):负责管理在该顶级域名服务器注册的所有二级域名
- 权限域名服务器:负责一个区的域名服务器
- 本地域名服务器(默认域名服务器)
-
域名解析过程
- 递归查询:主机向本地域名服务器的查询一般都是采用递归查询
- 迭代查询:本地域名服务器向根域名服务器的查询通常是采用迭代查询
-
域名缓存
- 每个域名服务器中都有一个高速缓存,一旦NS学到一个IP地址映射,就将该映射缓存起来
- 根服务器通常都在本地服务器中缓存
- 若IP地址的映射关系有所变化,缓存结果可能与实际的记录不一致,解决方案——**TTL(Time To Live)**限制缓存的生存时间
-
CDN(Content Delivery Network)
- CDN概述:CDN是一种分布式网络架构,用来提高Web内容的传输速度和用户体验,CDN将内容存储在分布式的服务器群组中,以就近原则将内容提供给用户,从而减少网络延迟和带宽占用,提高内容的访问速度和可用性
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2542608082@qq.com