计算机网络——应用层
文章目录
- **1 网络应用模型**
- **2 域名系统DNS**
- **3 文件传输协议FTP**
- **4 电子邮件**
- **4.1 电子邮件系统的组成结构**
- **4.2 电子邮件格式与MIME**
- **4.3 SMTP和POP3**
- **5 万维网WWW**
- **5.1 HTTP**
1 网络应用模型
客户/服务器模型 C/S
服务器服务于许多来自其他称为客户机的主机请求
工作流程:
(1)服务器处于接收请求的状态
(2)客户机发送服务请求,并等待接收结果
(3)服务器收到请求后,分析请求,进行必要的处理,得到结果发给客户机
客户程序必须知道服务器程序的地址,服务器程序不需要知道客户的地址
主要特点:
(1)网络中各计算机的地位不平等,服务器可以对用户权限的限制来管理客户机
整个网络的管理工作由少数服务器担当,因此网络管理非常集中和方便
(2)客户机相互之间不直接通信
(3)可扩展性不佳
P2P模型
C/S模型中服务器性能的好坏决定整个系统的性能,大量用户请求时,服务器成为系统的瓶颈
P2P模型每个结点都同时具有下载,上传的功能,其权利和义务大体对等
优点:
(1)减轻了服务器的计算压力,消除对服务器的完全依赖,任务分配到各个结点,大大提高了系统效率和资源利用率
(2)多个客户机直接可以直接共享文档
(3)可扩展性好,传统服务器有相应和带宽的限制,只能接收一定数量的请求
(4)网络健壮性强,单个结点失效不影响其他结点
缺点:获取服务时还要给其他结点提供服务,因此会占用较多的内存,影响整机速度
2 域名系统DNS
DNS是因特网使用的命名系统,用来把便于人们记忆的具有特定含义的主机名(如www.DASDSA.COM)转换为便于机器处理的IP地址。DNS采用C/S模型,运行在UDP之上,使用53号端口
DNS分为三部分
层次域名空间
域可划分为子域,子域还可以划分为子域的子域,形成了顶级域,二级域,三级域
特点:
(1)标号中英文不区分大小写
(2)标号中除连字符-外不能使用其他标点符号
(3)每个标号不超过64个字符,完整域名最长不超过255个字符
(4)级别最低的域名在最左边,最高的在最右边
顶级域名:
(1)国家地区顶级域名:如cn,us,uk
(2)通用顶级域名:com公司,net网络服务机构,org非盈利性组织,gov国家或政府部门
(3)基础结构域名:只有一个,arap,用于反向域名解析,又称反向域名
国家顶级域名下注册的二级域名有国家自行决定;每个域分别由不同的组织管理
域名服务器
域名系统被设计成一个联机分布式的数据库系统,采用C/S模型;域名到IP地址的解析是由域名服务器上的程序完成的,一个服务器负责管辖的范围称为区,每个区设置相应的权限域名服务器,用来保存该区中所有主机的域名到IP地址的映射
DNS使用大量的域名服务器,以层次的方式组织,没有一台域名服务器具有因特网上所有主机的映射
(1)根域名服务器:知道所有的顶级域名服务器的IP地址;它不直接把查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找那个顶级域名服务器进行查询
(2)顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名
(3)授权/权限域名服务器:每台主机都必须在授权域名服务器登记,许多域名服务器同时充当本地域名服务器和授权域名服务器,总能将其管辖的主机名转换为IP地址
(4)本地域名服务器:每个因特网服务提供者都可以有一个,主机发出DNS查询请求,先发给主机的本地域名服务器
域名解析过程
正向解析:把域名映射成IP地址
反向解析:把IP地址映射成域名
域名解析的方式:递归查询,递归与迭代结合的查询
(1)主机向本地域名服务器的查询采用的是递归查询
(2)本地域名服务器向根域名服务器的查询采用迭代查询
为提高DNS的查询效率,并减少因特网的DNS报文数量,在域名服务器中广泛的使用了高速缓存;但主机名和IP地址之间的映射不是永久的,所以DNS服务器将在一段时间后丢弃高速缓存中的信息
3 文件传输协议FTP
工作原理
提供交互式访问,允许客户指明文件的类型和格式,允许文件具有存取权限,屏蔽了计算机系统的细节,适合在异构网络中的任意计算机之间传送文件;采用C/S工作方式,使用TCP可靠传输;端口号21
提供功能:
(1)提供不同种类主机系统之间的文件传输能力
(2)以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力
(3)以匿名FTP的方式提供公用文件共享的能力
FTP服务器必须在整个会话期间保留用户的状态信息
控制连接与数据连接
FTP工作时使用两个并行的TCP连接,一个控制连接(服务器端口号21),一个数据连接(服务器端口号20)
(1)控制连接
用来传输控制信息(如连接请求,传送请求等),并且控制信息都以7位ASCII格式传送
传输文件时还可以使用控制连接,如客户在传输中途发一个终止传输的命令,因此连接一直保持打开状态
(2)数据连接
服务器收到文件传输请求后,就创建数据传送进程和数据连接
数据连接的两种传输模式
主动模式PORT:客户端先连接到服务器的21端口,登录成功后读取数据时,客户端要随机开放一个端口,并告知服务器,服务器收到PORT命令和端口号后,通过20端口和客户端开放的端口连接,发送数据
被动模式PASV:不同是服务器在本地随机开放一个端口,告知客户端,客户端再连接到服务器开放端口进行数据传输
FTP要修改服务器上的文件,必须先传给本地主机,修改后再将副本传给服务器
网络文件系统NFS,运行进程打开一个远程文件,并在文件某个特定位置开始读写数据,这样NFS可使用户复制大文件中一个很小的片段,不需要复制整个文件
4 电子邮件
4.1 电子邮件系统的组成结构
三个最主要的组成构件,即用户代理,邮件服务器和电子邮件使用协议
用户代理UA:用户与电子邮件系统的接口,具有撰写,显示和邮件处理的功能,通常情况下就是一个用户程序
邮件服务器:发送和接收邮件,向发信人报告邮件传送情况,采用C/S工作方式,同时充当客户和服务器
邮件发送协议和读取协议:发送协议用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如SMTP;读取协议用于用户代理从邮件服务器读取邮件,如POP3
4.2 电子邮件格式与MIME
邮件分为信封和内容两大部分,内容又分为首部和主体两部分
RFC822规定了邮件的首部格式,主体部分让用户自由撰写,写好首部系统自动填写信封
内容的首部首部包含一些首部行,每个首部行由一个关键字后跟冒号再后跟值组成
多用途网际邮件扩充MIME
SMTP只能传输一定长度的ASCII码邮件,一些其他国家的非英语文字就无法传送,且无法传送可执行文件及其他二进制对象,因此提出MIME
MIMIE并未改动SMTP或取代它,继续使用目前格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则
MIMI主要内容:
(1)5个新的邮件首部字段:MIME版本,内容描述,内容标识,传送编码和内容类型
(2)定义了许多邮件内容的格式:对多媒体电子邮件的表示方法进行了标准化
(3)定义了传送编码,对任何内容格式进行转换,而不会被邮件系统改变
4.3 SMTP和POP3
SMTP
简单邮件传输协议SMTP,提供可靠且有效的电子邮件传输的协议,TCP连接,端口号25
(1)连接建立:SMTP客户每隔一定时间对邮件缓存扫描一次,发现有文件就建立TCP连接,建立后,接收方服务器发出220 service ready,然后客户向服务器发送HELLO命令,并附上发送方的主机名;两个服务器直接连接,不管有多远
(2)邮件传送:
MAIL命令后右发件人的地址:MAIL FROM:asudiashd
服务器准备好接收就回答:250 OK
客户端发送一个或多个RCPT命令:RCPT TO:收件人地址;每发送一个RCPT就有一个相应信息从服务器返回;RCPT的作用是检测接收方是否做好接收邮件的准备,然后才发送,避免资源浪费
获得OK后,客户端使用DATA命令,表示要开始传输邮件
(3)连接释放:
邮件发送完毕,客户发出QUIT命令,服务器返回221表示同意释放
POP3和IMAP
邮局协议POP3,非常简单功能有限,使用C/S,TCP,端口号110,
两种工作方式:
下载并保留:读取邮件后仍保存在服务器上
下载并删除:邮件一旦读取就被从邮件服务器上删除
邮件读取协议IMAP:为用户提供了创建文件夹,在不同文件夹之间移动邮件及在远程文件夹中查询邮件等联机命令,为此IMAP服务器维护了会话用户的状态信息
IMAP允许用户代理只获取报文的部分,非常适合低带宽的情况,用户可能不想读取所有邮件
随着万维网的发展,出现了很多基于万维网的电子邮件如Gmail,特点是用户浏览器与邮件服务器之间的邮件发送或接收使用HTTP,仅在不同邮件服务器之间传送才使用SMTP
5 万维网WWW
万维网是一个分布式,联机式的信息存储空间,这个空间中:一样有用的事物称为一样资源,由一个全域同一资源定位符URL标识
这些资源通过超文本传输协议HTTP传送给使用者,而后者通过单击链接来获取资源
超文本标记语言HTML使得万维网页面的设计者可以很方便的用一个超链接从本页面的某处链接到因特网上的任何一个万维网页面,并能够在自己的计算机屏幕上显示这些页面
万维网内核部分的三个标准:
(1)统一资源定位符URL:表示万维网上的各种文档,并使文档具有唯一标识符,相当于一个文件名在网络范围的拓展
(2)超文本传输协议HTTP:一个应用层协议,使用TCP连接进行可靠的传输,是客户和服务器必须遵守的协议
(3)超文本标记语言HTML:使用一些约定的标记对页面上的各种信息,格式进行描述
URL一般形式:<协议>://<主机>:<端口>/<路径>
5.1 HTTP
是面向事物的应用层协议,定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器
操作过程
浏览器访问www服务器时,首先对域名解析,获得IP地址,浏览器就通过TCP向服务器发送连接建立请求
HTTP报文:请求报文,响应报文
具体过程:页面的URL—DNS解析IP地址—建立TCP连接—浏览器发出HTTP请求—服务器发出HTTP响应和文件—释放TCP连接—打开文件并显示页面
特点
HTTP本身是无连接的,交换报文前不需要先建立HTTP连接
是无状态的,同一个客户第二次访问同一个服务器的页面,服务器的响应和第一次访问相同,简化了服务器设计,容易支持大量并发的HTTP请求
既可以使用非持久连接,也可以使用持久连接
非持久:每个网页元素都单独建立一个TCP连接,每次都要建立新的缓存和变量使得服务器负担重
持久:万维网服务器发送相应后仍保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的HTTP请求和响应报文
持久连接又分为非流水线和流水线两种方式
非流水线:客户在收到前一个响应后才能发出下一个请求,服务器发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源
流水线(HTTP/1.1):客户每遇到一个对象引用就立即发出一个请求,因而客户可以逐个的连续发出对各个引用对象的请求
如果所有请求响应都是连续发送,那么所有引用对象共计一个RTT延迟,而不是像非流水线方式那样,每个引用都必须有一个RTT延迟,这种方式减少了TCP连接中的空闲时间,提高了效率
报文结构
HTTP是面向文本的,报文中每个字段都是ASCII码串,长度也不确定
开始行:用于区分是请求报文还是响应报文;请求报文的开始行称为请求行,响应报文的开始行称为状态行。方法是对所请求对进行的操作,方法实际上就是一些命令
首部行:用来说明浏览器,服务器或报文主体的一些信息,首部行结束时,还有一空行将首部行和实体主体分开
相关文章:

计算机网络——应用层
文章目录 **1 网络应用模型****2 域名系统DNS****3 文件传输协议FTP****4 电子邮件****4.1 电子邮件系统的组成结构****4.2 电子邮件格式与MIME****4.3 SMTP和POP3** **5 万维网WWW****5.1 HTTP** 1 网络应用模型 客户/服务器模型 C/S 服务器服务于许多来自其他称为客户机的主…...
【C++】写一个函数实现系统时间与输入时间进行比较
目录 1 代码 2 运行结果 时间比较函数: 输入为字符串2023-7-28,将字符串分解为年、月、日信息。 获取系统时间2023-7-24,然后将输入时间和系统时间进行比较,输出比较结果。 1 代码 #include <ctime> #include<iostream> #include<vector> using names…...

uniapp 微信小程序 navigationBarBackgroundColor 标题栏颜色渐变
大体思路: 第一步:“navigationStyle”:“custom” 第二步: template内 重点:给view添加ref“top” 第三步:添加渐变色样式 1、pages.json {"path" : "pages/user/user","style" : …...
ffplay播放器剖析(7)----音视频暂停模块分析
文章目录 1. 暂停触发流程2. toggle_pause3. stream_toggle_pause 1. 暂停触发流程 1.通过SDL触发事件调用toggle_pause 2.toggle_pause调用stream_toggle_pause 3.stream_toggle_pause修改暂停变量 2. toggle_pause static void toggle_pause(VideoState *is) {stream_to…...

ceph-mon运行原理分析
一、流程:ceph-deploy部署ceph-mon组建集群 1.ceph-deploy部署ceph-mon的工作流程及首次启动 1)通过命令创建ceph-mon,命令为:ceph-deploy create mon keyring def mon(args):if args.subcommand create:mon_create(args)elif…...

听GPT 讲K8s源代码--pkg(八)
k8s项目中 pkg/kubelet/envvars,pkg/kubelet/events,pkg/kubelet/eviction,pkg/kubelet/images,pkg/kubelet/kubeletconfig这些目录都是 kubelet 组件的不同功能模块所在的代码目录。 pkg/kubelet/envvars 目录中包含了与容器运行…...
差速驱动机器人的车轮里程计模型
一、说明 车轮测程法是指使用旋转编码器(即连接到车轮电机以测量旋转的传感器)的测程法(即估计运动和位置)。这是轮式机器人和自动驾驶汽车定位的有用技术。 在本文中,我们将通过探索差速驱动机器人的车轮里程计模型来深入研究车轮里...

Pytorch个人学习记录总结 09
目录 损失函数与反向传播 L1Loss MSELOSS CrossEntropyLoss 损失函数与反向传播 所需的Loss计算函数都在torch.nn的LossFunctions中,官方网址是:torch.nn — PyTorch 2.0 documentation。举例了L1Loss、MSELoss、CrossEntropyLoss。 在这些Loss函数…...
代码随想录算法训练营day51 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费
题目链接309.最佳买卖股票时机含冷冻期 class Solution {public int maxProfit(int[] prices) {if (prices null || prices.length < 2) {return 0;}int[][] dp new int[prices.length][2];dp[0][0] -prices[0];dp[0][1] 0;dp[1][0] Math.max(dp[0][0], dp[0][1] - pr…...
做UI设计需要具备什么平面技能呢优漫动游
想要成为一名合格的UI设计师,那么需要学会的技能是非常多的,UI设计包含的知识点也比较多,那么具体做UI设计需要具备什么技能呢?来看看下面小编的详细介绍吧。 —、软件能力 一位好的ui设计师除了需要精通Photoshop.IlustratorDW.C4D等设…...

cass--单选不累加设置
打开软件,在空白处右击--选项--选择,如下: 完成后,点击确定按钮即可。...
线程结构——链表
C中的链表是一种非常常见的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。 链表结构包括单向链表、双向链表和循环链表; 1.单向链表 单向链表由一系列节点组成,每个节点包含一个数据元素和…...
freeRTOS:基于(信号量+线程)的日志系统设计
1.日志的重要性 故障排查与调试:嵌入式系统通常运行在资源有限的环境中,故障排查和调试变得尤为复杂。日志系统可以记录系统在运行过程中的各种操作、状态和事件信息,方便开发人员追踪和定位问题所在。通过分析日志,可以快速找到故…...

数据可视化(1)
使用python带的matplotlib库进行简单的绘图。使用之前先进行安装,pip install matplotlib。如果安装了Anaconda,则无需安装matplotlib。 1.简单折线图 #绘制简单图表 import matplotlib.pyplot as plt plt.plot([1,2,3,4,5]) plt.show() import matplotlib.pyp…...

Llama 2: Open Foundation and Fine-Tuned Chat Models
文章目录 TL;DRIntroduction背景本文方案 实现方式预训练预训练数据训练细节训练硬件支持预训练碳足迹 微调SFTSFT 训练细节 RLHF人类偏好数据收集奖励模型迭代式微调(RLHF)拒绝采样(Rejection Sampling)PPO多轮一致性的系统消息&…...
BTY-DNS AMA回顾:致力于创建Web3领域中的去中心化身份(DID)
传统域名系统 (DNS) 是一个分层的分散信息存储,用于将用户在网络浏览器中输入可读名称(例如www.baidu.com)解析为IP地址,来访问互联网上的计算机。传统域名系统存在一些例如过于集中化管理、效率并不高等局限性问题。而去中心化域…...

【设计模式——学习笔记】23种设计模式——装饰器模式Decorator(原理讲解+应用场景介绍+案例介绍+Java代码实现)
生活案例 咖啡厅 咖啡定制案例 在咖啡厅中,有多种不同类型的咖啡,客户在预定了咖啡之后,还可以选择添加不同的调料来调整咖啡的口味,当客户点了咖啡添加了不同的调料,咖啡的价格需要做出相应的改变。 要求ÿ…...

《golang设计模式》第一部分·创建型模式-01-单例模式(Singleton)
文章目录 1. 概述1.1 目的1.2 实现方式 2. 代码示例2.1 设计2.2 代码 1. 概述 1.1 目的 保证类只有一个实例有方法能让外部访问到该实例 1.2 实现方式 懒汉式 在第一次调用单例对象时创建该对象,这样可以避免不必要的资源浪费 饿汉式 在程序启动时就创建单例对象…...

若依微服务整合activiti7.1.0.M6
若依微服务3.6.3版本整合activiti7(7.1.0.M6) 目前有两种办法集成activiti7 放弃activiti7新版本封装的API,使用老版本的API,这种方式只需要直接集成即可,在7.1.0.M6版本中甚至不需要去除security的依赖。不多介绍&a…...
Ubuntu 下安装软件,卸载,查看已经安装的软件
参考网址:http://wiki.ubuntu.org.cn/UbuntuSkills 一般的安装程序用三种: .deb 和.rpm 这两种安装文件 .bundle 这是二进制的安装文件 而 tar.gz 这类的只是压缩包(相当于 .rar,.zip 压缩包一样),如果此类文件是程序的话&a…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...

AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...