计算机网络-应用层
文章目录
- 应用层协议原理
- 万维网和HTTP协议
- 万维网概述
- 统一资源定位符
- HTML文档
- 超文本传输协议(`HTTP`)
- HTTP报文格式
- 请求报文
- 响应报文
- cookie
- 万维网缓存与代理服务器
- DNS系统
- 域名空间
- 域名服务器和资源记录
- 域名解析过程
- 递归查询
- 迭代查询
- 动态主机配置协议(DHCP)
- DHCP中继代理
- DHCP交互过程
- 电子邮件
- 电子邮件系统的组成
- 简单邮件传送协议
- 邮局协议POP3
- 互联网报文存取协议
- 电子邮件格式和MIME
应用层协议原理
万维网和HTTP协议
万维网概述
万维网简称Web是一个大规模的、联机式的信息存储空间,是运行在互联网上的一个超大规模的分布式应用
万维网应用通过统一资源定位符URL来指明因特网上任何种类资源的位置,通过超文本标记语言html描述信息资源、通过超文本传输协议http传递信息资源
统一资源定位符
url的组成
< 协议 > : / / < 主机 > : < 端口 > / < 路径 > {<协议>://<主机>:<端口>/<路径>} <协议>://<主机>:<端口>/<路径>
比如湖南科技大学的官网:

- < 协议 > : / / {<协议>://} <协议>:// :他指出访问该资源所使用的协议,或称为服务方式,最常用的协议就是
HTTP和HTTPS - < 主机 > : < 端口 > {<主机>:<端口>} <主机>:<端口> :他指出保存该资源的主机和处理该URL的服务器进程。其中 < 主机 > {<主机>} <主机>是指保存该资源的主机的域名或者IP地址, < 端口 > <端口> <端口>指明处理该url的进程,如果服务器上采用的端口是已经在IANA注册过的熟知端口,则 : < 端口 > {:<端口>} :<端口>可以省略,HTTP在IANA注册的熟知端口是80端口,当Web采用80端口时,就可以省略 : < 端口 > {:<端口>} :<端口>
- / < 路径 > {/<路径>} /<路径> :指出资源在该主机中的具体位置,如目录和文件名,
/代表根目录,根目录时一个逻辑目录,它可以映射到主机上的某个物理目录,映射关系由服务器程序指定
eg:例如,郑州大学主页的URL为"http://www/zzu.edu.cn",省略了HTTP的熟知80端口, 也省略了 / < 路径 > {/<路径>} /<路径>部分,它代表使用HTTP访问主机 w w w . z z u . e d u . c n {www.zzu.edu.cn} www.zzu.edu.cn 上的根目录下的默认资源,于目的主机的80端口绑定的服务器进程负责处理该URL指定的资源的访问。
HTML文档
万维网引入了超文本标记语言(HTML)作为万维网页面的标准语言
-
HTML是一种标记语言,或者说是一种描述如何格式化文档的语言,使用标记标签来描述网页文档,HTML标记标签简称为HTML标签 -
HTML标签是由一对 < > {<>} <>包含的关键词,通常成对出现,第一个标签是开始标签,第二个标签是结束标签,从开始标签到结束标签之间的所有代码称为
HTML元素

-
HTML定义了几十种不同的元素,用来定义不同的对象,如 < i m g > {<img>} <img>来定义图像, < p > {<p>} <p>来定义段落, < a > {<a>} <a>定义超链接
-
HTML的目标是指定文档的结构而不是文档外观,文档外观指定使用
CSS,javascript是一种脚本语言用来控制网页的行为 -
静态HTML文档:静态HTML文档在创作完毕后就存放在万维网服务器中,它的内容不会根据浏览器发来的数据而改变 -
动态HTML文档:动态HTML文档在浏览器访问服务器时才创建,当浏览器的请求到达时,服务器会将URL映射到一个应用程序,由应用程序根据请求中的数据创建一个HTML文档,根据请求不一样,得到的文档也不一样 -
活动HTML文档:活动文档HTML是把创建文档的工作移动到浏览器里进行,服务器发回给浏览器的文档中包含脚本程序,浏览器执行脚本后,得到完整的HTML文档,一旦文档建立后,她所包含的内容荣也就被固定下来了
超文本传输协议(HTTP)
HTTP由两个一个客户程序(浏览器程序)和一个服务器程序(通常是万维网服务器),浏览器和万维网服务器一般运行在不同的端系统中,通过HTTP报文进行会话。
HTTP大致的工作过程如下:

hhtp/1.0:仅支持非持续连接
http/1.1:既支持非持续连接也支持持续连接
- 非持续连接方式

非持续连接方式下每获取一个文件就要有两倍的RTT的时间开销 - 持续连接方式
不用每次传输都建立TCP连接,只需要在最开始的一次传输中建立TCP连接即可
持续连接方式中还可以采用两种不同的方式,一种是流水线方式,一种是非流水线方式
流水线方式就是我们在未收到HTTP相应报文是也可以发送新的HTTP请求报文
非流水线方式是只有在接收到上一次HTTP响应报文后才能发送新的HTTP请求报文
HTTP报文格式
http报文分为两类一类是请求报文,一类是响应报文, http是面向文本的,因此报文中的每一个字段都是一些ASCLL码串。
请求报文和响应报文均由三部分组成
- 开始行:在请求报文中开始行叫请求行,在响应报文中开始行叫状态行
- 首部行:用来说明浏览器、服务器、或报文主体的一些信息。首部行可以包含多行,也可以不使用。每一行都有首部字段名和它的值
- 实体主体:在请求报文中叫请求主体,在响应报文中叫响应主体
请求报文


http的几种方法:
GET用于获取URL指定的资源
POST用于提交信息或数据
HEAD用于请求读取URL所指定的资源的首部
PUT向指定URL上传内容
DELETE请求服务器删除指定URL的资源
TRACE回显服务器收到的请求,用于测试或诊断
CONNECT用于代理服务器
OPTION请求服务器告知选项功能
响应报文


cookie
http是无状态协议,每次请求之间是相互独立的,cookie可以弥补http协议无状态的不足
cookie包含四个组件:
- http响应报文中的Set-cookie首部行
- http请求报文中的cookie首部行
- 在用户系统中保存的cookie,cookie可以保存在磁盘上由浏览器管理
- 位于万维网服务器的后端数据库


万维网缓存与代理服务器
DNS系统
域名空间

顶级域名
- 国家顶级域名:
cn、us、uk - 通用顶级域名:
com(公司企业)、net(网络服务机构)、org(非营利组织)、int(国际组织)、edu(美国的专用教育机构)、gov(美国的政府部门)、mil(美国的军事部门) - 基础结构域名/反向域名:
arpa(只有这一个)用于反向域名解析
二级域名:(我国)
类别域名:ac(科研机构)、com(工商金融等企业)、edu(中国的教育机构)、gov(中国的政府机构)、net(提供互联网络服务的机构)、org(非营利性的组织)、mil(中国的国防机构)行政区域名:用于各省、自治区、直辖市例如bj、js
根是顶级域名后面的一个
.
域名服务器和资源记录
域名服务器:
根域名服务器:最高层的域名服务器也是最重要的域名服务器,所有根域名服务器知道所有顶级域名服务器的域名和IP地址。互联网上面目前有13个根域名服务器使用13个不同的IP地址的域名a.rootservers.net~m.rootservers.net
根域名服务器并不会直接把待查询的域名直接转换成IP地址(根域名服务器中也没有保存这些信息),而是告诉DNS解析器下一步应该找哪一个顶级域名服务器进行查询顶级域名服务器:负责管理在该顶级域注册的所有二级域名,当收到DNS查询请求时他的回答可能是最终的IP地址,也可能是下一步应当找的域名服务器的IP地址权限域名服务器:负责管理某个区的域名服务器,保存了该区域中的所有主机的域名到IP地址的映射本地域名服务器:直接为用户提供域名解析服务的域名服务器。当一台主机发出DNS查询请求时,这个查询请求报文被发送给本地域名服务器。每个互联网服务提供方都可以拥有一个本地域名服务器,这种域名服务器有时也称默认域名服务器

域名解析过程

递归查询

如果DNS客户所询问的域名服务器不知道被查询域名的IP地址,那么该域名服务器就将代替DNS客户,继续向其他域名服务器发出查询请求报文,直至得到结果
通常主机向本地域名服务器发起的查询是递归查询
迭代查询

当域名服务器收到迭代查询的请求报文时,要么给出所要查询的主机的IP地址,要么告诉DNS客户下一步应当向哪一个域名服务器进行查询,而不会代替DNS客户进行下一步查询
本地域名服务器向其他域名服务器发出的查询是迭代查询
高速缓存:
- 高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录,
- 为了保证高速缓存中的内容正确,域名服务器为每项内容设置计时器并删除超过合理时间的项,
- 本地DNS服务器不仅缓存最终查询结果,也能缓存顶级域名服务器的IP地址,因而本地DNS服务器可以绕过根域名服务器
动态主机配置协议(DHCP)
- 互联网上广泛使用动态主机配置DHCP来自动配置网络参数,配置信息一般包括
IP地址、子网掩码、默认路由器的IP地址、和本地域名服务器的IP地址 - DHCP服务分配给DHCP用户的IP地址等网络参数是临时的,只能在一段时间内使用,这段时间称为租用期
- DHCP客户使用UDP68端口,DHCP服务器使用UPDP67端口
DHCP中继代理
为什么需要DHCP中继代理
DHCP客户启动时,需要利用广播报文寻找DHCP服务器,该报文称为DHCP发送报文,DHCP发送报文采用本地网络广播地址作为目的的IP地址,该报文不能被路由器转发,因此DHCP只能发现本网络上的DHCP服务器,这就要求在每个网络上都配置一台DHCP服务器,为了简化配置,避免DHCP服务器过多,我们采用DHCP中继代理解决这个问题
DHCP交互过程

- DHCP客户从UDP端口68以广播方式发送DHCP Discover报文,目的IP:255.255.255.255,源IP地址:0.0.0.0
- DHCP服务器广播发送DHCP Offer报文给予相应
- DHCP客户从收到的Offer报文中选择一个服务器,向所选择的DHCP服务器广播发送DHCP Request报文
- DHCP服务器收到Request报文后,向DHCP客户广播发送DHCP ACK报文
收到DHCP ACK报文时,DHCP客户真正获得、并能够分配IP地址
- 将租期记为T,当到达0.5T时,DHCP客户单播发送DHCP Request报文请求续租,如果没有DHCP ACK报文,则在0.875T时,会再次单播发送DHCP Request报文请求续租
- DHCP服务器收到单播DHCP Request报文,向DHCP客户单播发送DHCP ACK报文或DHCP NAK报文
如果DHCP客户收到DHCP ACK报文,则更新租用期,重新设置计时器
如果DHCP客户收到DHCP NAK报文则停止使用原来的IP地址,发送DHCP Discover报文重新请求
DHCP客户可以随时发送DHCP Release报文,释放IP地址
电子邮件
电子邮件系统的组成

用户代理:发送发用户代理、接收方用户代理,用户与电子邮件系统的接口,通常情况下是主机中运行的程序邮件服务器:发送方邮件服务器、接收方邮件服务器,主要功能是发送和接收邮件,以及向发信人报告邮件传送的情况协议:SMTP(发)、POP3(收)、IMAP(收)

简单邮件传送协议
- SMTP规定了在两个相互通信的SMTP进程之间如何交换信息
- SMTP客户使用25端口与SMTP服务器建立TCP连接
- SMTP使用客户-服务器工作方式
- SMTP规定了14条命令、21种应答信息每条命令用几个字母组成,而每一种应答信息一般只有一行信息,由一个3位数字的代码开始,后面附上(也可不附上)很简单的文字说明
SMTP协议的缺点,不能传送可执行文件或其他二进制对象
仅限于传送7位ASCLL码,不能传送其他非英语国家的文字,SMTP服务器会拒绝超过一定长度的电子邮件
邮局协议POP3
特点:C/S、TCP连接、端口号110
pop3工作方式:
- 下载并保留(在服务器)
- 下载并删除
互联网报文存取协议
- 特点:
C/S、端口号143 - 发出删命令之前IMAP服务器中的邮件一直保存这
- IMAP允许用户只读取邮件中某些部分,如只读取一个邮件的首部
- IMAP为用户提供了创建文件夹以及将邮件从一个文件夹移动到另一个文件夹的命令
电子邮件格式和MIME
一封邮件由一个基本的信封、数个首部字段、一个空行、邮件主体组成。首部的每个字段由一行ASCLL文本组成
常见的电子邮件首部及其含义如下:

- MIME在原有的邮件格式基础上,增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。
- MIME定义了五种新的邮件首部
- MIME规定了非ASCII码文件的编码方式
- MIME定义了多种邮件主体的类型和子类型

相关文章:
计算机网络-应用层
文章目录 应用层协议原理万维网和HTTP协议万维网概述统一资源定位符HTML文档 超文本传输协议(HTTP)HTTP报文格式请求报文响应报文cookie 万维网缓存与代理服务器 DNS系统域名空间域名服务器和资源记录域名解析过程递归查询迭代查询 动态主机配置协议&…...
linux 创建git项目并提交到gitee(保姆式教程)
01、git安装与初始化设置 mhzzjmhzzj-virtual-machine:~/work/skynetStudy$ apt install mhzzjmhzzj-virtual-machine:~/work/skynetStudy$ git config --global user.name "用户名" mhzzjmhzzj-virtual-machine:~/work/skynetStudy$ git config --global user.ema…...
STM32 IAP应用开发--bootloader升级程序
STM32 IAP应用开发--bootloader升级程序 Chapter1 STM32 IAP应用开发——通过串口/RS485实现固件升级(方式2)前言什么是IAP?什么是BootLoader? 方案介绍:1)bootloader部分:2)APP部分…...
Q_GLOBAL_STATIC宏
文章目录 目的Q_GLOBAL_STATIC源代码分析涉及到原子操作 以及静态变量初始化顺序代码实现 目的 由Q_GLOBAL_STATIC宏, 引发的基于线程安全的Qt 单例模式的使用。 Q_GLOBAL_STATIC /***************************************************************************…...
[批处理]_[初级]_[如何删除变量值里的双引号]
场景 在使用Visual Studio开发本地程序的时,需要在项目属性,生成事件->生成后事件里增加一些资源的打包,复制,删除等操作,那么就需要用到批处理来进行。而传递带空格的路径给外部的批处理文件时就需要双引号引用从…...
51单片机电子钟闹钟温度LCD1602液晶显示设计( proteus仿真+程序+原理图+设计报告+讲解视频)
51单片机电子钟闹钟温度液晶显示设计( proteus仿真程序原理图设计报告讲解视频) 1.主要功能:2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单&&下载链接资料下载链接(可点击): 🌟51单片…...
怎样学好java
最近在看一本java方面的书。《java从入门到精通》,里面看到一段如何学习java的话,觉得非常好,下面我分享一下。 如何学好java语言,是所有初学者都需要面对的问题。其实,每种语言的学习方法都大同小异。初学者需要注意…...
HarmonyOS 数据管理与应用数据持久化(二)
通过键值型数据库实现数据持久化 场景介绍 键值型数据库存储键值对形式的数据,当需要存储的数据没有复杂的关系模型,比如存储商品名称及对应价格、员工工号及今日是否已出勤等,由于数据复杂度低,更容易兼容不同数据库版本和设备…...
Hadoop环境搭建及Demo
参考博客 Windows 10安装Hadoop 3.3.0教程 (kontext.tech) Hadoop入门篇——伪分布模式安装 & WordCount词频统计 | Liu Baoshuai’s Blog Hadoop安装教程 Linux版_linux和hadoop的安装_lnlnldczxy的博客-CSDN博客 hadoop启动出错 The value of property bind.address …...
更新一下数据集
UCI Machine Learning Repository UCI的数据集还是挺老牌的,最近换了地址,我就再记录一下。 左边是比较常见的数据集,比如Iris很经典,Heart Disease这也是,包括Wine,通常对于初学者学习比较好,…...
web3之跨链预言机SupraOracles:什么是Supra
文章目录 web3之跨链预言机SupraOracles什么是Supra什么是DORA(分布式Oracle协议)使用场景web3之跨链预言机SupraOracles 什么是Supra 官网:https://supraoracles.com/ 预言机的核心价值就在于数据传输,数据传输的速度、准确性、安全性更是重中之重。Supra Oracles 就是这…...
关系型数据库 期末复习(未完
关系型数据库 绪论概念间的关系数据库的历史信息和数据数据模型 关系模型数据结构关系完整性关系操作语言 关系代数语言 绪论 概念间的关系 数据->数据库->数据库管理系统->数据库系统 数据库的历史 人工管理阶段 -> 文件系统阶段 -> 数据库系统阶段 数据库…...
【学习笔记】CF1895G Two Characters, Two Colors
感谢grass8sheep提供的思路。 首先,我们可以用 D P DP DP解决这个问题。 设 f i , j f_{i,j} fi,j表示前 i i i个数中有 j j j个为 1 1 1的位置为红色的最大价值。则转移如下: f i , j ← f i − 1 , j b i f_{i,j}\gets f_{i-1,j}b_i fi,j←fi−…...
GZ035 5G组网与运维赛题第10套
2023年全国职业院校技能大赛 GZ035 5G组网与运维赛项(高职组) 赛题第10套 一、竞赛须知 1.竞赛内容分布 竞赛模块1--5G公共网络规划部署与开通(35分) 子任务1:5G公共网络部署与调试(15分) 子…...
基于SSM的教学管理系统(有报告)。Javaee项目。
演示视频: 基于SSM的教学管理系统(有报告)。Javaee项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringMvc My…...
软件测试工作流程
流程体系介绍 在以往的项目工作中,我参与过,需求评审、测试计划制定、测试用例编写、测试用例执行、测试脚本编写、测试脚本的执行,进行回归测试、验收测试、编写阶段性测试报告等工作 需求分析,需求评审(RPD、产品原…...
高级文本编辑软件 UltraEdit mac中文版介绍说明
UltraEdit mac是一款在Windows系统中非常出名的文本编辑器, UltraEdit for mac对于IT程序猿来说,更是必不可少,可以使用UltraEdit编辑配置文件、查看16进制文件、代码高亮显示等,虽然Mac上已经有了很多优秀的文本编辑器࿰…...
python模块的介绍和导入
python模块的介绍和导入 概念 在Python中,每个Python代码文件都是一个模块。写程序时,我们可以将代码分散在不同的模块(文件)中,然后在一个模块中引用另一个模块的内容。 导入格式 1、在一个模块中引用(导入)另一个模块可以使用import语句…...
基于单片机的智能饮水机系统
收藏和点赞,您的关注是我创作的动力 文章目录 概要 一、系统设计方案分析2.1 设计功能及性能分析2.2设计方案分析 二、系统的硬件设计3.1 系统设计框图系统软件设计4.1 总体介绍原理图 四、 结论 概要 现在很多学校以及家庭使用的饮水机的功能都是比较单一的&#…...
CSS画圆以及CSS实现动态圆
CSS画圆以及CSS实现动态圆 1. 先看基础(静态圆)1.1 效果如下:1.2 代码如下: 2. 动态圆2.1 一个动态圆2.1.1 让圆渐变2.1.2 圆渐变8秒后消失2.1.3 转动的圆(单个圆) 2.2 多个动态圆 1. 先看基础(…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
