了解应用层

应用层

  • 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 DNS域名解析过程
  • 5. 文件传输协议FTP
    • 5.1 FTP工作流程
  • 6. 电子邮件系统
    • 6.1 邮件信息格式
    • 6.2 简单邮件传输协议SMTP
    • 6.3 邮件读取协议
      • 6.3.1 POP3协议
      • 6.3.2 IMAP协议
    • 6.4 基于万维网的电子邮件
  • 7. 万维网WWW
    • 7.1 HTTP协议
    • 7.2 Web缓存

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缓存将最近的一些请求和响应(包括最近修改时间、过期时间等信息)暂存在本地磁盘中,当新的请求与暂存的请求一致,则直接返回缓存中对应的响应,无需再访问原始服务器;
    在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/44342.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

信息的表示与处理 (深入理解计算机系统第二章)

刚学习这本书没多久,感觉里面讲的东西挺多的,前后的关联性比较强。学着后面的还需要看看前的才可以更好的理解。 2.1信息存储 无符号(unsigned) 编码是基于传统的二进制表示法的,表示大于或者等于零的数字。 二进制补码(twos-complement)编…

存储过程——用户自定义变量、局部变量

1.用户自定义变量 在会话一定义的变量在会话二中是用不了的。 使用set指令定义变量,并为变量赋值,mysql中赋值推荐使用 :,因为在mysql中没有这个比较运算,也带有比较运算的功能,因此赋值运算推荐使用 : set myname itcast; se…

软件测试面试题及答案【史上最全】

以下是软件测试相关的面试题及答案,欢迎大家参考! 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验&…

边缘提取总结

边缘提取:什么是边缘? 图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以 看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相 差较大的灰度值。 边缘有正负之分,就像…

uni-app:实现账号密码登录,并且实现当页面登录过该账号在下次登录时无需再输入账号密码(本地缓存实现)

效果 前端代码 一、完整代码 <template><view><view class"all"><view class"title"><image :src"title_login" alt"图片损坏" /></view><form class"login-form" submit"fo…

IDEA汉化插件

一、使用IDEA插件功能 重启IDEA 二、下载中文包 手动注入 进官网找自己IDEA对应版本的&#xff0c;下载压缩包&#xff1a;点我进官网 看自己的IDEA版本 把压缩包拖进去&#xff0c;IDEA里打开着文件也没关系 重启IDEA

[算法通关村] 1.2 链表的插入

上一节我们谈到了链表的概念&#xff0c;以及链表的创建方法&#xff0c;忘记的小伙伴可以复习一下&#xff1a; [算法通关村] 1.1 单向链表的创建 今天我们来探究一下链表的插入&#xff0c;链表的插入共有 3 种可能性&#xff0c;分别是在链表的头部插入、在中间插入&#x…

Cilium

Cilium是一个开源的、面向Kubernetes和容器环境的网络插件&#xff0c;用于提供高级的网络和安全功能。它是一个用于容器网络和网络层四、七层安全的项目&#xff0c;旨在简化网络和安全层的管理&#xff0c;并提供高性能和低延迟的数据包处理。Cilium通过BPF&#xff08;Berke…

UE5 用DLL文件制作第三方插件

本篇博文介绍了&#xff0c;如果在UE 中如何使用第三方库&#xff0c;及制作成插件的方法。 DLL 文件是上篇文章中创键的具体的方法见上篇文章。下面开始介绍方法 首先&#xff0c;创建一个空白的 UE5 C 项目&#xff0c;然后再创建一个空白内容的插件&#xff0c;如下图所示 …

STM32MP157驱动开发——按键驱动(线程化处理)

文章目录 “线程化处理”机制&#xff1a;内核函数线程化处理方式的按键驱动程序(stm32mp157)编程思路button_test.cgpio_key_drv.cMakefile修改设备树文件编译测试 “线程化处理”机制&#xff1a; 工作队列是在内核的线程的上下文中执行的 工作队列中有多个 work&#xff0…

【TypeScript】类型推断与类型别名的使用方式。

什么是类型推断&#xff1f; 在 TypeScript 中&#xff0c; 如果声明变量时&#xff0c;没有明确的指定类型&#xff0c;那么 TypeScript 会依照类型推论&#xff08;Type Inference&#xff09;的规则推断出一个类型。 以下代码虽然没有明确指定类型&#xff0c;但是会在编译的…

【043】解密C++ STL:深入理解并使用 list 容器

解密C STL&#xff1a;深入理解并使用list容器 引言一、list 容器概述二、list容器常用的API2.1、构造函数2.2、数据元素插入和删除操作2.3、大小操作2.4、赋值操作2.5、数据的存取2.6、list容器的反转和排序 三、使用示例总结 引言 &#x1f4a1; 作者简介&#xff1a;一个热爱…

浮点型在内存中的存储

目录 1.浮点数是什么&#xff1f; 2. 浮点数存储规则 1.浮点数是什么&#xff1f; 就是数学中的小数。 常见的浮点数&#xff1a; 3.14159 1E10&#xff08;1*10^10&#xff09; 浮点数家族包括&#xff1a; float、double、long double 类型。 浮点数表示的范围&#x…

Bean的生命周期

目录 1、实例化Bean 2、设置Bean的属性 3、初始化Bean &#xff08;1&#xff09;、执行通知 &#xff08;2&#xff09;、初始化的前置方法 &#xff08;3&#xff09;、初始化方法 &#xff08;4&#xff09;、执行自定义方法 &#xff08;5&#xff09;、初始化的后置…

API接口:如何通过使用手机归属地查询

随着手机普及率的不断增加&#xff0c;手机号码的信息查询也成为了一个非常实用的功能。本文将介绍如何通过使用手机归属地查询API接口实现查询手机号码所在地的功能。 首先&#xff0c;我们需要一个可以查询手机号码所在地的API接口。目前市面上有很多免费或付费的API接口可供…

《Ansible自动化工具篇:ubuntu操作系统基于ansible工具一键远程离线部署之K8S1.24.12二进制版集群》

一、部署背景 由于业务系统的特殊性&#xff0c;我们需要针对不同的客户环境部署二进制版K8S集群&#xff0c;由于大都数用户都是专网环境&#xff0c;无法使用外网&#xff0c;为了更便捷&#xff0c;高效的部署&#xff0c;针对业务系统的特性&#xff0c;我这边编写了 基于a…

uni-app中的uni.requireNativePlugin()

这个方法是用来引入原生插件的方法&#xff0c;自 HBuilderX 1.4 版本起&#xff0c;uni-app 支持引入原生插件&#xff0c;使用方式如下&#xff1a; const PluginName uni.requireNativePlugin(PluginName); // PluginName 为原生插件名称 引入插件的类型有三种&#xff1…

【idea工具】idea工具,build的时候提示:程序包 com.xxx.xx不存在的错误

idea工具&#xff0c;build的时候提示:程序包 com.xxx.xx不存在的错误&#xff0c;如下图&#xff0c;折腾了好一会&#xff0c; 做了如下操作还是不行&#xff0c;idea工具编译的时候&#xff0c;还是提示 程序包不存在。 a. idea中&#xff0c;重新导入项目&#xff0c;也还…

Mysql-主从复制与读写分离

Mysql 主从复制、读写分离 一、前言&#xff1a;二、主从复制原理1.MySQL的复制类型2. MySQL主从复制的工作过程;3.MySQL主从复制延迟4. MySQL 有几种同步方式&#xff1a;5.Mysql应用场景 三、主从复制实验1.主从服务器时间同步1.1 master服务器配置1.2 两台SLAVE服务器配置 2…

小程序自定义步骤条实现

效果展示&#xff1a; 支持背景颜色自定义 <view class"hl_steps"><view class"hl_steps_item" wx:for"{{steps}}" wx:key"id"><view class"hl_steps_item_circle_out" style"background-color: {{col…
最新文章