了解应用层

2023-11-05

1. 概述

  • 应用层是计算机网络体系结构的最顶层;
  • 应用层接受运输层提供的服务,实现应用进程之间的通信;
  • 应用层包括日常所使用的的各种应用软件,不同的应用软件对应不同的应用层协议,如

在这里插入图片描述

2. 应用程序组织方式

  • 应用程序分布在网络边缘的不同主机上;
  • 网络应用程序在各种端系统上的常见组织方式有:1)C/S方式;2) P2P方式;

2.1 C/S方式

  • Client/Server:客户端-服务器方式;
  • 客户和服务器是网络通信中涉及的两个应用进程;
  • 客户是服务请求方,服务器是服务提供方;
  • 服务器总是处于运行状态,等待用户的请求;
  • 服务器具有固定IP地址以及端口号;
  • 基于C/S的应用服务通常是服务集中型构建,通常服务器压力较大,因此常使用服务器集群构建虚拟服务器;
    在这里插入图片描述

2.1 P2P方式

  • Peer-to-Peer:对等方式;
  • P2P组织方式中,不会区分固定的服务请求者和服务提供者;
  • 分布在端系统上的应用进程是对等的,称为对等方;
  • 对等方之间直接通信,每个对等方既是服务请求者,也是服务提供者;
  • P2P方式的可扩展性强,系统性能不会因规模的扩大而降低;
  • P2P方式成本低,流行的P2P应用有P2P文件共享、即时通信、P2P流媒体和分布式存储等;
  • 基于P2P的应用服务是服务分散型的;
    在这里插入图片描述

3. 动态主机配置协议DHCP

  • DHCP:Dynamic Host Configuration Protocol;
  • 可自动为局域网内主机配置网络信息,如IP地址、子网掩码、默认网关以及DNS服务器;
  • 可避免手动配置主机网络信息,减轻工作量,降低错误率;
  • 应用层协议,建立在UDP运输层协议上;
  • DHCP通信双方分为服务器和客户端,服务器进程对应端口为67,客户端进程对应端口为68;
  • 客户端DHCP开机自启动,DHCP服务器永远运行;
  • 为降低DHCP数量,可使用DHCP中继代理(通常是一台路由器)作为各网络中计算机与DHCP服务器的桥梁;
  • DHCP中继代理中配置了DHCP服务器的IP地址信息;

3.1 DHCP工作流程

  • 1)客户端开机自启动DHCP客户进程,对应端口为68;
  • 2)客户进程广播发送DHCP发现报文,报文内容包括客户端主机MAC地址以及事务ID。注意,此报文源地址为0.0.0.0,目的地址为255.255.255.255;
  • 3)DHCP服务器进程收到该请求报文后,广播发送DHCP提供报文,该报文内容包括事务ID,网络配置信息内容(如地址租期、IP地址、子网掩码、默认网关以及DNS服务器)。此时,该报文源地址为服务器自身IP地址,目的地址为255.255.255.255。在DHCP服务器为客户端主机选择IP地址时,会使用ARP检测IP地址是否被网络中其他主机占用;
  • 4)客户端接收最先到达的DHCP服务提供报文,并做出响应,广播发送DHCP请求报文,该报文包括事务ID、DHCP客户端MAC地址、主机接受的DHCP租约中的IP地址、DHCP服务提供报文对应的服务器IP地址等信息。此时,该报文源地址为服务器自身IP地址,目的地址为255.255.255.255。
  • 5)租约对应服务器接受请求报文,确认IP地址租约。广播发送DHCP确认报文,该报文源地址为服务器自身IP地址,目的地址为255.255.255.255。
  • 6)客户端主机接收确认报文,使用ARP检测租约提供的IP地址是否被其他主机占用,如果该IP地址可用,则该主机确认该配置信息,可使用该IP地址进行网络通信了!!

在这里插入图片描述

4. 域名系统DNS

  • DNS:Domain Name System;
  • 作用:将域名解析为对应主机IP地址
  • 应用层协议,建立在UDP运输层协议上;
  • DNS服务器进程对应端口号为53,服务器中记录了域名与IP地址的映射关系;
  • 用户主机在访问指定域名时,先在本地主机的高速缓存中查找是否有对应IP地址,如果没有则访问DNS服务器获取域名对应IP地址;
  • 单台DNS服务器工作负荷过大,一般采用分布式集群搭建域名系统DNS;
  • DNS使大多数域名解析在本地完成,仅少量解析需要在因特网上通信,因此系统效率很高;
  • 因特网采用层次结构的命名树作为主机的域名;

4.1 域名结构

  • 域名构建采用层次树状结构;
  • 域名结构使用多个分量构成,各分量表示不同级别的域名,使用’.'隔开;
    在这里插入图片描述
  • 域名结构中各分量级别从右向左依次降低;
  • 完整的域名不超过255个字符;
  • 每一级域名由不区分大小写的字母、数字组成,不超过63个字符;
  • 各级域名由所属上一级的域名管理机构管理,而最高的顶级域名由因特网名字和数字分配机构ICANN管理;
  • 按照等级管理的命名方法便于维护域名的唯一性
    在这里插入图片描述

4.2 域名分类

在这里插入图片描述

4.3 域名服务器

  • 域名与IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询;
  • DNS采用分布在各地的域名服务器实现域名和IP地址的转换;

4.3.1 分类

在这里插入图片描述

4.4 DNS域名解析过程

  • 域名解析过程中有两种查询方式:1)递归查询;2)迭代查询;
  • 递归查询方式需要多次访问涉及到的域名服务器,对域名服务器压力较大,因此多使用迭代方式进行域名解析;
  • 迭代方式查询中,只有在本机向本地域名服务器发送DNS查询报文时使用递归查询,而本地域名服务器向其他域名服务器发送DNS报文时均使用迭代方式;
  • 为了提高DNS查询效率,在本地域名服务器与用户主机中广泛使用高速缓存。高速缓存记录最近查询过的域名与IP地址的映射关系,以此避免对域名服务器的不必要访问;
  • 高速缓存中的数据需要保证正确性,所以通过为每项记录设置计时器并删除超时记录保证记录正确性;
  • 用户主机在访问指定域名时,先在本地主机内高速缓存中查询,如果查询不到再向本地域名服务器发送DNS查询报文
    在这里插入图片描述

5. 文件传输协议FTP

  • FTP:File Transfer Protocol;
  • 作用:在网络中的不同主机之间传输文件;
  • 应用层协议,建立在TCP运输层协议上;
  • FTP服务器进程一般使用21/20端口;
  • FTP是因特网上使用最广泛的文件传输协议;
  • FTP提供交互式访问,允许客户指明文件的类型与格式,并允许文件具有存取权限;

5.1 FTP工作流程

  • FTP传输模式分为主动模式和被动模式两种,两种模式下略有区别;

  • 无论哪种模式,FTP客户端服务器之间必须建立两个并行的TCP连接:
    1)控制连接,该连接使用开启,用于传送FTP相关控制命令;
    2)数据连接,用于文件传输,只在文件传输期间开启,传输结束后立即关闭;

  • 主动模式(默认情况)
    1)FTP客户发起TCP连接建立请求,服务器使用21号端口与客户端建立控制连接;
    2)服务器(使用20端口)主动向客户端发送TCP连接建立请求,客户端使用临时端口号建立数据连接;

  • 被动模式
    1)FTP客户发起TCP连接建立请求,服务器使用21号端口与客户端建立控制连接;
    2)客户端通知服务器开启某临时端口号被动等待TCP连接,客户端(使用临时端口号)服务器发送TCP连接建立请求,建立数据连接;

在这里插入图片描述

6. 电子邮件系统

  • 系统采用C/S组织方式
  • 电子邮件系统三大构件:1)用户代理;2)邮件服务器;3)电子邮件所需协议
  • 用户代理是用户与邮件系统的接口,又称为电子邮件客户端软件
  • 邮件服务器用于发送和接收邮件,并维护用户的邮箱;
  • 协议包括邮件发送协议(如SMTP)和邮件读取协议(如POP3、IMAP);
  • 邮件系统简要工作流程:
    1)发送方通过用户代理,使用SMTP协议向发送方邮件服务器发送邮件;
    2)发送方邮件服务器使用SMTP协议向接收方邮件服务器转发邮件;
    3)接收方通过用户代理,使用POP3协议从接收方邮件服务器读取邮件;
    在这里插入图片描述

6.1 邮件信息格式

  • 邮件信息格式由RFC 822定义,邮件需包括信封和内容两部分;
  • 内容部分包括首部和主题,均需要发送方填写;
  • 首部中包括如下关键字:1)From:即发送方;2)To:即接收方;3)Cc:邮件抄送人;4)Subject:邮件主题;
  • 主题内容为邮件正文;
  • 信封所需信息由邮件系统从首部自动提取;
    在这里插入图片描述

6.2 简单邮件传输协议SMTP

  • SMTP:Simple Mail Transfer Protocol;
  • 邮件发送协议,其为应用层协议,建立在运输层TCP协议上;
  • SMTP服务器使用25端口号;
  • 基本工作原理,以发送方邮件服务器向接收方邮件服务器转发邮件过程为例:
    1)发送邮件时,SMTP客户端与服务端建立TCP连接,连接建立成功以后,通信双方之间以命令应答方式完成邮件传输。在邮件传输过程中,客户端向服务器发送14条SMTP命令,服务器为客户端做出21中SMTP应答;
    2)TCP连接建立成功后,服务器主动告知客户端自己已经准备就绪;
    3)客户端通过三次命令向服务器表名身份,以及邮件的发送方和接收方,服务器分别进行回应;
    4)客户端告知服务器自己即将发送邮件内容,服务器做出回应,准备接收邮件内容;
    5)客户端发送邮件完整内容以及结束符,服务器接收邮件,做出回应;
    6)客户端发送结束后,向服务器请求断开连接,服务器作出响应并主动断开连接;
    在这里插入图片描述
  • SMTP只能传输ASCII码文本数据,不能传输图像等二进制数据;
  • 可通过MIME对二进制数据进行编解码,结合SMTP进行数据发送;
    在这里插入图片描述
  • MIME(Multipurpose Internent Mail Extentions:多用途因特网邮件扩展):
    在这里插入图片描述

6.3 邮件读取协议

6.3.1 POP3协议

  • POP(Post Office Protocl):邮局协议,POP3为因特网正式标准。
  • POP协议比较简单、功能有限;
  • 用户只能以下载并删除下载并保留的方式将邮件从邮件服务器下载到本地主机中,而不能直接在邮件服务器上管理邮件;
  • 应用层协议,基于TCP协议;
  • POP3协议使用110端口;

6.3.2 IMAP协议

  • IMAP(Internet Mail Access Protocl):因特网邮件访问协议,IMAP4为因特网建议标准。
  • IMAP协议相比POP协议功能更加强大,用户可通过本地计算机直接在邮件服务器上管理邮件;
  • IMAP是一个联机协议;
  • 应用层协议,基于TCP协议;
  • IMAP4协议使用143端口;

6.4 基于万维网的电子邮件

  • 现在大多都是使用基于万维网的电子邮件,比如QQ邮件;
  • 通过浏览器登录邮件服务器万维网网站即可完成邮件的发送和接收工作;
  • 工作流程:
    1)邮件发送方与接收方使用相同邮件服务器,则发送和接收过程均使用HTTP协议;
    2)邮件发送方与接收方使用不同邮件服务器,则发送和接收过程均使用HTTP协议,但不同服务器之间邮件转发过程使用SMTP协议;
    在这里插入图片描述

7. 万维网WWW

  • WWW(World Wide Web);
  • 万维网即常说的Web应用,并非一种特殊的计算机网络,而是一个运行在因特网上的分布式应用;
  • 万维网为大规模、联机式的信息存储所,利用网页间的超链接将不同网站的网页连接成一张逻辑信息网;
  • 采用B/S架构,即浏览器/服务器架构;
  • 浏览器通过渲染引擎(浏览器内核)对其从服务器获取的网页进行解析渲染,将网页内容呈现给用户;
  • 网页资源使用URL(统一资源定位符)确定,URL标记了唯一的文件位置。URL一般形式为:协议://主机:端口/路径?查询字符串
  • 网页一般使用HTML编写结构和内容,使用CSS渲染样式,使用JS控制网页行为;

7.1 HTTP协议

详见https://blog.csdn.net/qq_43665602/article/details/131733583

  • HTTP/1.0采用非持续连接方式(Connection: Close),每个HTTP请求都需要建立一次TCP连接;
  • HTTP/1.1采用持续连接(长连接,Connection: keep-alive)方式,多个HTTP请求共用一个TCP连接,且可以使用流水线(不用等收到HTTP响应再发送其他HTTP请求)方式工作;

7.2 Web缓存

  • Web缓存即为万维网缓存,可位于客户端主机,也可位于中间系统上;
  • 位于中间系统上的Web缓存又称为代理服务器;
  • Web缓存将最近的一些请求和响应(包括最近修改时间、过期时间等信息)暂存在本地磁盘中,当新的请求与暂存的请求一致,则直接返回缓存中对应的响应,无需再访问原始服务器;
    在这里插入图片描述

参考:《计算机网络微课堂》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解应用层 的相关文章

  • 有没有办法在 java 桌面应用程序上体验 Windows 8 Metro 的外观和感觉?

    正如标题中所述 我真的很难找到这个问题的好答案 我目前正在开发一个仅桌面应用程序 根本没有 CSS 或任何互联网部分 我希望它看起来像 Windows 8 的 Metro 外观 我不是在谈论布局 而是在谈论外观和感觉 我特别喜欢方形而不是圆
  • 为什么 JavaFX API 不包含在 Java 8 J2SE 中? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有谁知道为什么 JavaFX 8 仍然不是即将推出的 Java 8 中的日常 J2SE API 显示所有 Java 组件的技术图清楚地将 Jav
  • 从 BroadcastReceiver 获取方法来更新 UI

    我正在尝试根据变量的变化更新用户界面BroadcastReceiver 因此 我需要调用一个扩展类的方法 以获取我提到的变量 BroadcastReceiver in MainActivity取决于但我无法以任何方式获得真正的返回值 扩展的
  • 在此代码中,Runnable 未实例化。为什么?

    Runnable cannot instantiate public class Thread4 public static void main String args Thread t1 new Thread new Runnable R
  • Java HashMap 嵌套泛型与通配符

    我正在尝试创建包含自定义类的不同子类的哈希集的哈希映射值的哈希映射 如下所示 HashMap
  • 按位运算符简单地翻转整数中的所有位?

    我必须翻转整数的二进制表示形式中的所有位 鉴于 10101 输出应该是 01010 当与整数一起使用时 完成此操作的按位运算符是什么 例如 如果我正在编写类似的方法int flipBits int n 什么会进入身体 我只需要翻转数字中已经
  • 探索java图像处理的好资源[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我是图像处理领域的新手 请推荐一些好的资源 书籍和网络链接 来学习 Java 中的图像处理 最适合隐写术分析 适合初学者和高级水平 我看过
  • 如果主引用指向 null,WeakReference 或 SoftReference 有何不同

    我正在读关于WeakReference https docs oracle com javase 10 docs api java lang ref WeakReference html and SoftReference https do
  • Java时间转正常格式

    我有 Java 时间1380822000000 我想转换为我可以阅读的内容 import java util Date object Ws1 val a new Date 1380822000000 toString 导致异常 warnin
  • 如何将测试类打包到jar中而不运行它们?

    我正在努力将我的测试类包含到 jar 包中 但不运行它们 经过一番谷歌搜索后 我尝试过mvn package DskipTests 但我的测试类根本没有添加到 jar 中 有任何想法吗 如果您遵循 Maven 约定 那么您的测试类位于src
  • Java:java.util.Preferences 失败

    我的程序将加密的产品密钥数据保存到计算机上java util Preferences类 系统首选项 而不是用户 问题是 在 Windows 和 Linux 上 尚未在 OSX 上测试过 但可能是相同的 如果我不运行该程序sudo或者具有管理
  • Java 常量枚举[重复]

    这个问题在这里已经有答案了 可能的重复 理解 Java 中的枚举 https stackoverflow com questions 1419835 understanding enums in java 为什么我们应该使用枚举而不是 Ja
  • java中的第三个布尔状态是什么?

    虽然我知道根据定义 布尔值仅包含两种状态 真或假 我想知道布尔值在用这些状态之一初始化之前有什么值 它默认为 false http java sun com docs books tutorial java nutsandbolts dat
  • SDK尚未初始化,请务必先调用FacebookSdk.sdkInitialize()

    我在实现 Facebook SDK 时遇到此错误 并且我tried https stackoverflow com questions 15490399 error inflating class com facebook widget l
  • 在片段之间切换时底部导航栏会向下推

    在我的活动中 我有一个底部导航栏和框架布局来显示片段 一切正常 但问题是当我开始按顺序从 1 4 移动时 底部导航栏保持在其位置 但当我突然从 4 跳到2 然后底部导航栏就会超出屏幕 当再次单击同一项目时 它就会回到正常位置 该视频将清楚地
  • 动态创建 JSON 对象

    我正在尝试使用以下格式创建 JSON 对象 tableID 1 price 53 payment cash quantity 3 products ID 1 quantity 1 ID 3 quantity 2 我知道如何使用 JSONOb
  • 一个类中有多个具有相同参数类型的方法

    我知道 至少已经有了关于这个主题的一个问题 https stackoverflow com questions 5561436 can two java methods have same name with different retur
  • 如何在apache POI中读取excel文件的准确单元格内容

    当我读取单元格的内容时 例如如果它是日期格式 它会转换为另一个值 例如 12 31 2099 gt 46052 和 50 00 gt 50 和 50 00 gt 0 5 但我想要的是获取每个单元格的确切字符串值 我的代码是这样的 cell
  • 如何让JComboBox中的内容居中显示?

    目前我有这个JComboBox 我怎样才能将其中的内容居中 String strs new String 15158133110 15158133124 15158133458 JComboBox com new JComboBox str
  • Swing:创建可拖动组件...?

    我在网上搜索了可拖动 Swing 组件的示例 但我发现示例不完整或不起作用 我需要的是一个摇摆组件那可以是dragged通过鼠标 在另一个组件内 被拖拽的时候 应该已经 改变它的位置 而不仅仅是 跳 到目的地 我很欣赏无需非标准 API 即

随机推荐

  • 如何使用宝塔部署网站

    1 根据自己的版本输入不同安装宝塔的命令 我用的使用的是finashell软件 安装及使用前一篇已经介绍过了 用的是第一个安装命令 yum install y wget wget O install sh https download bt
  • 图的遍历(详解DFS与BFS)

    首先 我们来看一下涉及的知识点 图 图 G V E 由顶点集 V 和边集 E 组成 每条边对应一个点对 v w 其中 v w 属于 V 如果图中的点对是有序的 那么该图就是有向图 反之为无向图 邻接点 若顶点 v 与 w 之间存在一条边 则
  • 6、状态模式

    文章目录 概念 3个角色 demo 概念 状态模式属于行为型模式 只需要改变对象状态即可改变对象的行为 状态模式对 开闭原则 的支持并不太好 所以对象状态最好为有限个且不常变动 场景 1 行为随状态 属性改变而改变的场景 2 条件 分支语句
  • 终于拿下淘宝了。淘宝抓取,淘宝爬虫。taobao spider

    上个demo先
  • Linux 查看当前路径下所有文件夹大小的方法

    进入需要查看的目录 例如 根目录 cd 查看当前目录下每个文件夹的大小 du sh 查看当前目录下每个文件夹的大小并排序 单位 字节 n 按照数值排序 du s sort n 补充 du sh 查看当前目录总共占的容量 而不单独列出各子项占
  • Task-Oriented Conversation Generation Using Heterogeneous Memory Networks

    EMNLP 2019 录用长文 Abstract 如何将外部知识库与对话模型结合起来是一个重要的问题 传统上人们是使用了Memory Network 然而当面对多种来源的 异构的info时 Mem对这些info的处理并不好 我理解的是权重的
  • Numpy基础数据结构

    Numpy基础数据结构 NumPy数组是一个多维数组对象 称为ndarray 其由两部分组成 实际的数据 描述这些数据的元数据 Numpy Python开源的科学计算工具包 高级的数据编程工具 ndarray 是强大的N维数组对象 对数据结
  • Eclipse导入项目No projects are found to import

    如果发现导入工程 impot 的时候 出现 No projects are found to import 的提示 首先查看项目目录中是否有隐藏文件 project 还有目录结构也还要有一个隐藏文件 classpath 如果没有 你可以参考
  • 不能不知道的OS模块的那些常用函数(附内置变量)

    文章目录 OS 模块 1 1 常用函数 1 2 使用示例 1 3 内置变量 1 4 附 内置变量详解 OS 模块 该模块提供了各种函数 允许您操作文件路径和检查与路径相关的信息 比如是否存在 文件扩展名 目录名等等 1 1 常用函数 其中一
  • [DIP]如何提取文件中的公章,并识别其朝向是否准确

    任务描述 我们需要知道 我们盖在文件上的红章是否是端正的 需要解决的问题 1 图章的识别 2 图章的定位 3 图章的方向判定 思路 图章基本上是红色的 我们先根据颜色提取可能的图章区域 当然 假如文档中 还有其他红色的区域 这一步都会提取出
  • 从Authy中导出账户和secret

    文章作者 GoodBoyboy 文章链接 https blog goodboyboy top posts 2689781648 html 版权声明 本博客所有文章除特别声明外 均采用 CC BY NC SA 4 0 许可协议 转载请注明来自
  • oracle bulk collect forall,Oracle批量绑定forallbulkcollect用法

    采用bulk collect 可以将查询结果一次性的加载到collections中 而不是通过CURSOR一条一条地处理 可以在select into fetchinto 采用bulk collect 可以将查询结果一次性的加载到colle
  • 银行项目测试

    主要的核心业务 存款业务 吸收客户的存款 为客户发放利息 属于负债业务 贷款业务 发放贷款给客户 收取客户的利息 属于银行的资产业务 中间业务 银行已中间人的身份 为客户办理业务 收取客户的手续费 例如 批量代发工资 批量代收水 电 燃气费
  • 华为OD机试 Python 【单词加密】

    题目 给你一句英文 里面有很多单词 单词间用空格隔开 我们要对这句子做点的变化 加密规则 如果单词里有元音 a e i o u 大小写都算 就把元音变成 如果一个单词完全没有元音 那就让这个单词的第一个和最后一个字母交换位置 输入 一句英文
  • SKB几个复制函数的区别

    1 skb clone Skb clone 函数只是复制sk buff结构 并不复制skb的数据缓冲区 Clone后的sk buff结构与原始的sk buff指向同一数据缓冲区 原始的和clone后的skb描述符的cloned值都会被置1
  • 前端基础之滚动显示

    marquee滚动标签 注 该标签已经过时 被w3c弃用 使用样例
  • 设计模式(一)- 模板方法模式

    模板方法模式 文章目录 模板方法模式 1 模板方法模式 1 介绍 2 应用实例 代码 1 父类抽象模板 统一方法定为final 2 子类去实现不同的方法 3 其他子类实现不同的方法 4 结果展示 1 模板方法模式 在模板模式 Templat
  • 微信小程序 功能页导航 functional-page-navigator 组件

    完整微信小程序 Java后端 技术贴目录清单页面 必看 仅在插件中有效 用于跳转到插件功能页 属性 类型 默认值 必填 说明 最低版本 version string release 否 跳转到的小程序版本 线上版本必须设置为 release
  • linux安装idea并创建快捷方式

    一 安装 1 下载 在linux自带的火狐浏览器打开下载更方便 下载 IntelliJ IDEA JetBrains 功能强大 符合人体工程学的 Java IDE 选择Linux 这里以下载社区版为例 我下载的版本是2022 2 3 文件名
  • 了解应用层

    应用层 1 概述 2 应用程序组织方式 2 1 C S方式 2 1 P2P方式 3 动态主机配置协议DHCP 3 1 DHCP工作流程 4 域名系统DNS 4 1 域名结构 4 2 域名分类 4 3 域名服务器 4 3 1 分类 4 4 D