计算机网络(六)应用层
6.1、应用层概述
我们在浏览器的地址中输入某个网站的域名后,就可以访问该网站的内容,这个就是万维网WWW应用,其相关的应用层协议为超文本传送协议HTTP
用户在浏览器地址栏中输入的是“见名知意”的域名,而TCP/IP的网际层使用IP地址来表示目的主机,从域名到IP地址的装转换,由属于应用层范畴的域名系统DNS,在后台帮用户完成
如上是一些常见的应用,我们将通过如上应用学习应用层
总结
6.2、客户/服务器方式(C/S方式)和对等方式(P2P方式)
概念
客户/服务器方式(C/S方式)
如上图:主机A正在运行的客户程序称为客户进程,简称为客户。运行客户程序的主机A称为客户计算机,但有时也称为客户。主机B正在运行的服务器程序称为服务器进程,简称为服务器。运行客户程序的主机A称为服务器计算机,但有时也称为服务器。
对等方式(P2P方式)
如上图所示,主机CDEF运行着同一种P2P程序,其中EF,ED和CE互为对等方。举例可以理解为,E的P2P进程正在从F下载文件,并且为D的P2P进程提供下载服务
总结
6.3、动态主机配置协议DHCP
概念
-
互联网广泛使用的动态主机配置协议 DHCP (Dynamic Host Configuration Protocol) 提供了即插即用连网 (plug-and-play networking) 的机制。
-
这种机制允许一台计算机加入新的网络和获取 IP 地址,而不用手工配置。
DHCP的作用
在没有DHCP时,我们只有手动给网络中各主机正确配置网络的相关配置信息,才能正常访问Web服务器。但如果要配置的主机数很多,工作量大,就很容易出错
如果我们给网络中添加一台DHCP服务器并配置相关信息,那么主机开机时,就会向DHCP服务器请求自己的网络配置信息自动获取自己的网络配置,这就减少很多工作量
DHCP的工作过程
DHCP 使用客户 - 服务器方式
-
需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文 (DHCP DISCOVER),这时该主机就成为 DHCP 客户。
-
本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。
-
DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池 (address pool) 中取一个地址分配租用给该计算机。DHCP服务器的回答报文叫做提供报文(DHCP OFFER)。
DHCP 工作方式
-
DHCP 使用客户-服务器方式,采用请求/应答方式工作。
-
在DHCP服务器上运行DHCP服务器进程,简称DHCP服务器。在用户主机运行DHCP客户进程,简称DHCP客户
-
DHCP属于应用层协议,其基于 UDP 工作:DHCP报文在运输层会被封装成为UDP用户数据报。DHCP 服务器运行在 67 号端口, DHCP客户运行在 68 号端口。
DHCP交互过程
DHCP客户端启用DHCP后广播发送DHCP发现报文(DHCP DISCOVER)
- 事务ID
- DHCP客户端的MAC地址
封装该报文的IP数据报的源IP地址为0.0.0.0,这是因为主机目前还未分配到IP地址,因此使用该地址代替
目的IP地址为广播地址255.255.255.255,因此该网络的所有设备都会收到该IP数据报。之所以广播发送,是因为主机现在并不知道网络中有哪几个DHCP服务器。
对于DHCP客户收到DHCP发现报文后,其应用层没有监听该UDP用户数据报目的端口67进程,因此无法交付DHCP发现报文,只能丢弃。
由于DHCP服务器应用层始终运行DHCP服务器进程,因此会接受DHCP发现报文并做出响应。DHCP服务器收到DHCP发现报文后,层层解封,解封出封装有DHCP发现报文的UDP用户数据报。
DHCP服务器根据DHCP发现报文中封装的DHCP客户端的MAC地址来查找自己的数据库,如果查到匹配信息,则使用这些配置信息来构建并发送DHCP提供报文,如果没有则采用默认配置信息来构建报文并发送
DHCP服务端将广播发送DHCP提供报文(DHCP OFFER)
- 事务ID
- 配置信息:IP地址:DHCP服务器从自己的IP地址池中挑选待租用给主机的IP地址(使用ARP来确保所选IP地址未被网络中其他主机占用),子网掩码,地址租期,默认网关,DNS服务器
源IP地址:发送DHCP提供报文的DHCP服务器的IP
目的地址:因为目的主机还没分配到IP,所以使用广播地址
对于DHCP客户收到DHCP提供报文后,由于其应用层始终运行DHCP客户进程,因此会接受DHCP提供报文并做出响应。DHCP客户根据DHCP提供报文中的事务ID来判断该DHCP提供报文是否是自己的所请求的报文,若相等则接收
对于DHCP服务器收到DHCP提供报文后,其应用层没有监听该UDP用户数据报目的端口68进程,即DHCP客户进程,因此无法交付DHCP提供报文,只能丢弃。
注意:DHCP服务器从自己的IP地址池中挑选待租用给主机的IP地址时,使用ARP确保所选IP地址未被网络其他主机占有
在本例中,DHCP客户会收到两个DHCP服务器发来的DHCP提供报文,DHCP客户从中选择一个,一般选择先到的,并向所选择的DHCP服务器发送DHCP请求报文
DHCP客户端将广播发送DHCP请求报文(DHCP REQUEST)
- 事务ID
- DHCP客户端的MAC地址
- 接收的租约中的IP地址
- 提供此租约的DHCP服务器端的IP地址
源地址:0.0.0.0,因为此时DHCP客户才从多个DHCP服务器中挑选一个作为自己的DHCP服务器。DHCP客户首先要征得该服务器的同意,之后才能正式使用向该DHCP服务器租用的IP地址
目的地址:广播地址,这样可以一次性向所有DHCP服务器发送DHCP请求报文,来告知它们是否请求它们作为自己的DHCP服务器
在本例中,假设DHCP客户端选择DHCP服务器1作为自己的DHCP服务器,DHCP服务器1接受该请求,于是DHCP服务器1给DHCP客户端发送DHCP确认报文
源地址:DHCP服务器1的IP地址
目的地址:广播地址
DHCP客户收到该报文后就可以使用租用的IP地址
注意:DHCP客户在接收DHCP确认报文前使用ARP确保所选IP地址未被网络其他主机占有
DHCP NACK:DHCP否认报文
DHCP中继代理
该网络中主机发送DHCP发现报文时,会被路由器丢弃
使用DHCP中继代理是因为我们不用给每一个网络上都设置一个DHCP服务器,这样会使DHCP服务器的数量太多
总结
6.4、域名系统DNS
概述
域名相比IP地址更容易记忆
在因特网中,用户主机只需要在浏览器中输入某web服务器域名便可访问该服务器所提供的内容
我们可以通过ping命令来观察用户主机和web服务器之间的连通性。
虽然我们ping的是域名,但实际ping的是IP地址,也就是说用户主机把域名转换为了IP地址
对于大多数网络应用,我们可以用简便易记的域名访问目的web服务器,这得益于DNS
我们在浏览器地址栏中输入某web服务器域名时,用户主机会首先在自己的DNS高速缓存中查找该域名所对应的IP地址,如果没有找到则向网络中某台DNS服务器查询。
DNS服务器中存储有域名和IP地址映射关系的数据库,当DNS服务器收到DNS查询报文后,在其数据库中进行查询,然后把查询结果发送给用户主机。
此时用户中主机的浏览器可以通过Web服务器的IP地址对其访问了
名称相同的域名其等级未必相同
域名解析过程


习题
总结
6.5、文件传送协议FTP
概念
文件传送协议FTP的应用
FTP采用C/S方式(客户/服务器方式)
FTP客户计算机可将各种类型的文件上传到FTP服务器计算机
FTP客户计算机也可以从FTP服务器计算机下载文件
我们可以在FTP服务器计算机使用第三方FTP服务器软件或者其他软件创建FTP服务器
如上图:我们可以在Windows系统中使用其自带的FTP服务器功能创建一个FTP服务器站点。
我们可以在浏览器中通过该IP地址访问FTP服务器
注意:此处使用ftp协议而非http协议
也可以通过Windows中命令行工具通过该地址访问FTP服务器
也可以通过第三方软件访问ftp服务器
FTP基本工作原理
主动模式
FTP服务器监听熟知端口(端口号为 21),使客户进程能够连接上。
首先,FTP客户随机选择一个临时端口号与其建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送FTP的相关控制命令(这条连接是FTP客户与服务器之间的命令通道)
FTP服务器使用自己的熟知端口号20与FTP客户的另一个临时端口建立TCP连接,这条TCP连接用于FTP客户与服务器之间传送数据
被动模式
注意两种模式的控制连接在整个会话期间保持打开状态,而数据连接单次数据传输完毕后就关闭
习题
总结
6.6、电子邮件
概念 
邮件发送和接收过程
简单邮件传送协议SMTP(Simple Mail Transfer Protocol)的基本工作原理
SMTP客户与服务器之间通过命令与应答的交互方式实现SMT客户发送邮件给SMTP服务器
应答代码220后可能有描述信息
当服务器邮件身份无效时,接受方发回其他代码,如421表示服务不可用
电子邮件的信息格式
Cc:抄送人,其可看可不看可回可不回邮件
邮件读取
基于万维网的电子邮件
习题
总结
6.7、万维网WWW
概念
概述
-
万维网 WWW (World Wide Web) 并非某种特殊的计算机网络,而是一个大规模的、联机式的信息储藏所。
-
万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。这种访问方式称为“链接”。
万维网的工作方式
-
万维网以客户 - 服务器方式工作。
-
浏览器就是在用户计算机上的万维网客户程序。驻留着万维网文档的计算机运行着服务器程序,这个计算机也称为万维网服务器。
-
客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
-
在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。
万维网应用举例
访问网页
怎样标志分布在整个互联网上的万维网文档?
万维网的文档
我们可以将网页另存下来,保存结果是一个HTML的文件和一个文件夹,文件夹内容如下:
由这些文件编写的万维网文档由浏览器内核负责解释和渲染
接下来我们将结合这些文件组合成一个完善的网页
如图所示,这是一个html文档,当我们打开这个文件时,出现一个页面
我们将css文件和html文件组合在一起,这个网页就变得好看一些了
此时我们在html文件中添加一个按钮,并创建一个js文件添加时间处理函数,页面就有了一个新功能了
当我们点击这个按钮时,触发功能
超文本传输协议HTTP(Hyper Transfer Protocol)
概念和传输过程
-
在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议 HTTP (HyperText Transfer Protocol)。
-
HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。
-
每个万维网网点都有一个服务器进程,它不断地监听 TCP 的端口 80,以便发现是否有浏览器向它发出连接建立请求。
-
一旦监听到连接建立请求并建立了 TCP 连接之后,浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。
-
最后,TCP 连接就被释放了。
RTT:请求和响应所耗费的时间
在HTTP/1.1持续连接的情况下,只有服务器有相关文档,浏览器不同的页面也可以发送请求报文和接收响应报文
HTTP报文格式
HTTP请求报文格式
URL:统一资源定位符字段,也就是网址
HTTP响应报文格式
短语:对状态码的简单描述
如上图所示:浏览器并不会直接显示相应报文,而是以一种人性化的方式显示
使用Cookie在服务器上记录用户信息
万维网缓存与代理服务器
如果该请求有缓存
如果该请求没有缓存
若web缓存的命中率比较高,则会大大减小了该链路上的通信量,因而减少了访问因特网的时延
原始服务器通常会为每个响应的对象设定一个修改时间字段和一个有效日期字段。代理服务器依该字段判断存储在其中的文档是否过期
现有校园网一主机请求一文档
若代理服务器中文档未过期时,文档会发给主机
若代理服务器中文档过期并且代理服务器的文档和原始服务器的文档一致,原始服务器则给代理服务器发送不包含实体主体的响应
若代理服务器中文档过期并且代理服务器的文档和原始服务器的文档不一致,原始服务器则给代理服务器发送封装有该文档的响应报文
习题
总结
相关文章:

计算机网络(六)应用层
6.1、应用层概述 我们在浏览器的地址中输入某个网站的域名后,就可以访问该网站的内容,这个就是万维网WWW应用,其相关的应用层协议为超文本传送协议HTTP 用户在浏览器地址栏中输入的是“见名知意”的域名,而TCP/IP的网际层使用IP地…...

上海亚商投顾:沪指探底回升微涨 机器人概念股午后爆发
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 市场全天探底回升,沪指盘中跌超1.6%,创业板指一度跌逾3%,午后集体拉升翻红…...
conda相关操作
conda 是一个开源的包管理和环境管理工具,主要用于 Python 和数据科学领域。它可以帮助用户安装、更新、删除和管理软件包,同时支持创建和管理虚拟环境。以下是关于 conda 的所有常见操作: 1. 安装 Conda Conda 通常通过安装 Anaconda 或 Mi…...

使用TCP协议实现智能聊天机器人
实验目的与要求 本实验是程序设计类实验,要求使用原始套接字编程,掌握TCP/IP协议与网络编程Sockets通信模型,并根据教师给定的任务要求,使用TCP协议实现智能聊天机器人。 (1)熟悉标准库socket 的用法。 …...
PHP二维数组去除重复值
Date: 2025.01.07 20:45:01 author: lijianzhan PHP二维数组内根据ID或者名称去除重复值 代码示例如下: // 假设 data数组如下 $data [[id > 1, name > Type A],[id > 2, name > Type B],[id > 1, name > Type A] // 重复项 ];// 去重方法 $dat…...

2025年01月11日Github流行趋势
项目名称:xiaozhi-esp32 项目地址url:https://github.com/78/xiaozhi-esp32项目语言:C历史star数:2433今日star数:321项目维护者:78, MakerM0, whble, nooodles2023, Kevincoooool项目简介:构建…...

备战蓝桥杯 队列和queue详解
目录 队列的概念 队列的静态实现 总代码 stl的queue 队列算法题 1.队列模板题 2.机器翻译 3.海港 双端队列 队列的概念 和栈一样,队列也是一种访问受限的线性表,它只能在表头位置删除,在表尾位置插入,队列是先进先出&…...

IT面试求职系列主题-Jenkins
想成功求职,必要的IT技能一样不能少,先说说Jenkins的必会知识吧。 1) 什么是Jenkins Jenkins 是一个用 Java 编写的开源持续集成工具。它跟踪版本控制系统,并在发生更改时启动和监视构建系统。 2)Maven、Ant和Jenkins有什么区别…...

Vue篇-06
1、路由简介 vue-rooter:是vue的一个插件库,专门用来实现SPA应用 1.1、对SPA应用的理解 1、单页 Web 应用(single page web application,SPA)。 2、整个应用只有一个完整的页面 index.html。 3、点击页面中的导航链…...

mysql binlog 日志分析查找
文章目录 前言一、分析 binlog 内容二、编写脚本结果总结 前言 高效快捷分析 mysql binlog 日志文件。 mysql binlog 文件很大 怎么快速通过关键字查找内容 一、分析 binlog 内容 通过 mysqlbinlog 命令可以看到 binlog 解析之后的大概样子 二、编写脚本 编写脚本 search_…...
ubuntu 配置OpenOCD与RT-RT-thread环境的记录
1.git clone git://git.code.sf.net/p/openocd/code openocd 配置gcc编译环境 2. sudo gedit /etc/apt/source.list #cdrom sudo apt-get install git sudo apt-get install libtool-bin sudo apt-get install pkg-config sudo apt-install libusb-1.0-0-dev sudo apt-get…...

双系统解决开机提示security Policy Violation的方法
最近,Windows系统更新后,发现电脑开机无法进入桌面,显示“Verifiying shim SBAT data failed: security Policy Violation; So mething has gone seriously Wrong: SBAT self-check failed: Security Policy Violation”的英文错误信息。为了…...
附加共享数据库( ATTACH DATABASE)的使用场景
附加共享数据库(使用 ATTACH DATABASE)的功能非常实用,通常会在以下几种场景下需要用到: 1. 跨数据库查询和分析 场景: 你的公司有两个独立的数据库: 一个存储了学生信息 (school.db)一个存储了员工信息 …...

matlab的绘图的标题中(title)添加标量以及格式化输出
有时候我们需要在matlab绘制的图像的标题中添加一些变量,这样在修改某些参数后,标题会跟着一块儿变。可以采用如下的方法: x -10:0.1:10; %x轴的范围 mu 0; %均值 sigma 1; %标准差 y normpdf(x,mu,sigma); %使用normpdf函数生成高斯函数…...

2、第一个GO 程序
引言 接下里我们就用Go Land 工具,开发第一个GO程序。大家也可以用其他的开发工具,例如 Vs Code 1、新建项目 第一个是选择你的程序保存位置 (不要有中文)。 第二个是你的Go的编译器的安装地址。 选择完毕后,就点击 …...

【Linux-多线程】-线程安全单例模式+可重入vs线程安全+死锁等
一、线程安全的单例模式 什么是单例模式 单例模式是一种“经典的,常用的,常考的”设计模式 什么是设计模式 IT行业这么火,涌入的人很多.俗话说林子大了啥鸟都有。大佬和菜鸡们两极分化的越来越严重,为了让菜鸡们不太拖大佬的后…...
00000007_C语言设计模式
C语言设计模式 尽管 C 语言并不直接支持面向对象编程,但通过结构体和函数指针的灵活运用,我们依然可以实现多种经典的设计模式。 1. 工厂模式 1.1 工厂方法的定义与实现 工厂模式通过统一的接口创建对象,客户端无需知道具体的创建逻辑。 代…...

探索数据存储的奥秘:深入理解B树与B+树
key value 类型的数据红黑树(最优二叉树,内存最优),时间复杂度:O(logn),调整方便;一个结点分出两个叉B树一个节点可以分出很多叉数据量相等的条件下:红黑树的层数很高&am…...

Web渗透测试之XSS跨站脚本之JS输出 以及 什么是闭合标签 一篇文章给你说明白
目录 闭合标签 XSS之js输出 闭合标签 封闭标签 达到 让标签值不当成 一个属性值来展示 从而达到xss注入的效果 "> 为了想办法闭合前面的标签,不用也行成功率高一些 攻击方法 "><script>confirm(1)</script>, 其中 "> 我们称之为完成闭合…...
EasyExcel的应用
一、简单使用 引入依赖: 这里我们可以使用最新的4.0.2版本,也可以选择之前的稳定版本,3.1.x以后的版本API大致相同,新的版本也会向前兼容(3.1.x之前的版本,部分API可能在高版本被废弃)&…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...