计算机网络——应用层

文章目录

    • **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码串,长度也不确定

在这里插入图片描述

开始行:用于区分是请求报文还是响应报文;请求报文的开始行称为请求行,响应报文的开始行称为状态行。方法是对所请求对进行的操作,方法实际上就是一些命令

在这里插入图片描述

首部行:用来说明浏览器,服务器或报文主体的一些信息,首部行结束时,还有一空行将首部行和实体主体分开

在这里插入图片描述

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

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

相关文章

uniapp跨域解决

uniapp跨域解决 跨域是什么 跨域指的是浏览器不能执行其他网站的脚本&#xff0c;当一个网页去请求另一个域名的资源时&#xff0c;域名、端口、协议任一不同&#xff0c;就会存在跨域。跨域是由浏览器的同源策略造成的&#xff0c;是浏览器对JavaScript施加的安全限制。 报错…

Spring AOP 中,切点有多少种定义方式?

在 Spring AOP 中&#xff0c;我们最常用的切点定义方式主要是两种&#xff1a; 使用 execution 进行无侵入拦截。使用注解进行拦截。 这应该是是小伙伴们日常工作中使用最多的两种切点定义方式了。但是除了这两种还有没有其他的呢&#xff1f;今天松哥就来和大家聊一聊这个话…

【C语言初阶(20)】调试练习题

文章目录 前言实例1实例2 前言 在我们开始调试之前&#xff0c;应该有个明确的思路&#xff1b;程序是如何完成工作的、变量到达某个步骤时的值应该是什么、出现的问题大概会在什么位置。这些东西在调试之前都需要先确认下来&#xff0c;不然自己都不知道自己在调试个什么东西…

FFmpeg aresample_swr_opts的解析

ffmpeg option的解析 aresample_swr_opts是AVFilterGraph中的option。 static const AVOption filtergraph_options[] {{ "thread_type", "Allowed thread types", OFFSET(thread_type), AV_OPT_TYPE_FLAGS,{ .i64 AVFILTER_THREAD_SLICE }, 0, INT_MA…

二十三种设计模式第二十篇--备忘录模式

备忘录模式&#xff0c;备忘录模式属于行为型模式。它允许在不破坏封装的情况下捕获和恢复对象的内部状态。保存一个对象的某个状态&#xff0c;以便在适当的时候恢复对象&#xff0c;该模式通过创建一个备忘录对象来保存原始对象的状态&#xff0c;并将其存储在一个负责管理备…

使用adb通过电脑给安卓设备安装apk文件

最近碰到要在开发板上安装软件的问题&#xff0c;由于是开发板上的安卓系统没有解析apk文件的工具&#xff0c;所以无法通过直接打开apk文件来安装软件。因此查询各种资料后发现可以使用adb工具&#xff0c;这样一来可以在电脑上给安卓设备安装软件。 ADB 就是连接 Android 手…

测试libcurl库的demo时,报错 curl_easy_perform() failed: SSL connect error

系统&#xff1a;麒麟V10 arm roothg-TR3250:/home/cur765/curl-7.65.3/docs/examples# cat /etc/os-release NAME"Kylin" VERSION"银河麒麟桌面操作系统(国防版)V10" VERSION_US"Kylin Linux Desktop (GFB)V10" IDkylin ID_LIKEdebian PRETT…

CloudDriver一款将各种网盘云盘挂在到电脑本地变成本地磁盘的工具 教程

平时我们的电脑可能由于大量的文件资料之类的导致存储空间可能不够&#xff0c;所以我们可以选择将网盘我们的本地磁盘用来存放东西。 CloudDrive 是一款可以将 115、阿里云盘、天翼云盘、沃家云盘、WebDAV 挂载到电脑中&#xff0c;成为本地硬盘的工具&#xff0c;支持 Window…

职工管理系统(code)

首先创建头文件、源文件&#xff0c;再编程。&#xff08;B站黑马程序员视频笔记&#xff09; 一、头文件.h 1、boss.h #pragma once #include<iostream> using namespace std; #include "worker.h"//老板类 class Boss :public Worker { public://构造函数B…

最优化方法

一. 图论 1.最小生成树 图的生成树是它的一颗含有其所有顶点的无环连通子图,一 幅加权图的最小生成树(MST)是它的一颗权值(树中的所有边的权值之和) 最小的生成树 • 适用场景&#xff1a;道路规划、通讯网络规划、管道铺设、电线布设等 题目数据 kruskal算法 稀疏图&#x…

【Git系列】了解什么是版本控制

&#x1f433;了解什么是版本控制 &#x1f9ca;1. 什么是版本控制&#x1f9ca;2. 为什么要有版本控制&#x1f9ca;3. 常见的版本控制工具&#x1f9ca;4. 版本控制分类&#x1fa9f;4.1 本地版本控制&#x1fa9f;4.2 集中版本控制&#x1fa9f;4.3 分布式版本控制 学习git之…

Elasticsearch和Kibana的安装及验证

金翅大鹏盖世英&#xff0c;展翅金鹏盖世雄。 穿云燕子锡今鸽&#xff0c;踏雪无痕花云平。 ---------------- 2023.7.31.101 ----------------- 本文密钥&#xff1a;365 Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎&#xff0c;常用来进行全文检索、…

redis 第三章

目录 1.主从复制 2.哨兵 3.集群 4.总结 1.主从复制 结果&#xff1a; 2.哨兵 3.集群 4.总结 通过集群&#xff0c;redis 解决了写操作无法负载均衡&#xff0c;以及存储能力受到单机限制的问题&#xff0c;实现了较为完善的高可用方案。

安全学习DAY09_加密逆向,特征识别

算法逆向&加密算法分类&#xff0c;特征识别 文章目录 算法逆向&加密算法分类&#xff0c;特征识别算法概念&#xff0c;分类单向散列加密 - MD5对称加密 - AES非对称加密 - RSA 常见加密算法识别特征&#xff0c;解密特点MD5密文特点BASE64编码特点AES、DES特点RSA密文…

Stable Diffusion 硬核生存指南:WebUI 中的 VAE

本篇文章聊聊 Stable Diffusion 生态中呼声最高、也是最复杂的开源模型管理图形界面 “stable-diffusion-webui” 中和 VAE 相关的事情。 写在前面 Stable Diffusion 生态中有一个很重要的项目&#xff0c;它对于 SD 生态繁荣做出的贡献可以说居功至伟&#xff0c;自去年八月…

【C++】string

string 1. 简单了解string2. string的常用接口3. 简单模拟实现string4. 写时拷贝5. 练习 1. 简单了解string string是表示字符串的字符类&#xff0c;其底层是basic_string模板类的实例化&#xff0c;只能存储单字节的字符串&#xff0c;不能操作多字节和变长字符的序列。在使…

LLM微调 | Adapter: Parameter-Efficient Transfer Learning for NLP

目的&#xff1a;大模型预训练微调范式&#xff0c;微调成本高。adapter只只微调新增的小部分参数【但adapter增加了模型层数&#xff0c;引入了额外的推理延迟。】 Adapters最初来源于CV领域的《Learning multiple visual domains with residual adapters》一文&#xff0c;其…

Android 13(T) - Media框架(1)- 总览

从事Android Media开发工作三年有余&#xff0c;刚从萌新变成菜鸟&#xff0c;一路上跌跌撞撞学习&#xff0c;看了很多零零碎碎的知识&#xff0c;为了加深对Android Media框架的理解&#xff0c;决定在这里记录下学习过程中想到的一些问题以及一些思考&#xff0c;也希望对初…

更好搭建负载测试环境的六个技巧

如果你如我昨天谈到的客户一样&#xff0c;花费了24到48个小时用于每个负载测试环境的搭建&#xff0c;那你的测试及构建部署能力绝对是受限的。 搭建一个仿真测试环境对于做好负载测试非常重要&#xff0c;同时它也是一个非常具有挑战性的任务&#xff0c;需要考虑技术解决、…

【CSS】手写 Tooltip 提示组件

文章目录 效果示例代码实现 效果示例 代码实现 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>一颗不甘坠落的流星</title><style>body {padding: 120px;}.tooltip {position: relative;display: inline-blo…