计算机网络(六)应用层

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缓存的命中率比较高,则会大大减小了该链路上的通信量,因而减少了访问因特网的时延

原始服务器通常会为每个响应的对象设定一个修改时间字段和一个有效日期字段。代理服务器依该字段判断存储在其中的文档是否过期

现有校园网一主机请求一文档

若代理服务器中文档未过期时,文档会发给主机

若代理服务器中文档过期并且代理服务器的文档和原始服务器的文档一致,原始服务器则给代理服务器发送不包含实体主体的响应

若代理服务器中文档过期并且代理服务器的文档和原始服务器的文档不一致,原始服务器则给代理服务器发送封装有该文档的响应报文

习题

总结

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高级软件工程-复习

高级软件工程复习 坐标国科大,下面是老师说的考试重点。 Ruby编程语言的一些特征需要了解要能读得懂Ruby程序Git的基本命令操作知道Rails的MVC工作机理需要清楚,Model, Controller, View各司什么职责明白BDD的User Story需要会写,SMART要求能…

【计算机网络】lab3 802.11 (无线网络帧)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2.…

大语言模型训练的数据集从哪里来?

继续上篇文章的内容说说大语言模型预训练的数据集从哪里来以及为什么互联网上的数据已经被耗尽这个说法并不专业,再谈谈大语言模型预训练数据集的优化思路。 1. GPT2使用的数据集是WebText,该数据集大概40GB,由OpenAI创建,主要内…

Unity Burst详解

【简介】 Burst是Unity的编译优化技术,优化了从C#代码编译成Native代码的过程,经过编译优化后代码有更高的运行效率。 在Unity中使用Burst很简单,在方法或类前加上[BurstCompile]特性即可。在构建时编译代码的步骤,Burst编译器会…

【经典神经网络架构解析篇】【1】LeNet网络详解:模型结构解析、优点、实现代码

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

数据结构之双向链表

目录 双向链表的基本概念和结构 初始化 尾插 头插 尾删 头删 查找 在指定位置之后插入 删除指定位置节点 判空 销毁 完整代码 测试代码 双向链表的基本概念和结构 双向链表(Doubly Linked List)‌是一种链式存储结构,每个节点除…

[程序设计]—代理模式

[程序设计]—代理模式👳 本文章记录学习于——52.面向切面:AOP-场景模拟_哔哩哔哩_bilibili 最近闲来无事,在学习Spring的源码: 后面慢慢更新源码系列blog,希望多多关注🙏🙏 目前已经总结的b…

网易云音乐登录两部手机:IP属地归属何方?

在数字化生活日益普及的今天,音乐平台成为了我们日常娱乐不可或缺的一部分。网易云音乐,作为众多音乐爱好者的首选,其丰富的音乐资源和个性化的推荐算法深受用户喜爱。然而,随着多设备登录成为常态,一个问题也随之浮现…

spark汇总

目录 描述运行模式1. Windows模式代码示例 2. Local模式3. Standalone模式 RDD描述特性RDD创建代码示例(并行化创建)代码示例(读取外部数据)代码示例(读取目录下的所有文件) 算子DAGSparkSQLSparkStreaming…

SQL多表联查、自定义函数(字符串分割split)、xml格式输出

记录一个报表的统计,大概内容如下: 多表联查涉及的报表有:房间表、买家表、合同表、交易表、费用表、修改记录表 注意:本项目数据库使用的是sqlserver(mssql),非mysql。 难点1:业主信息&#…

实用操作系统学习笔记

第1章 操作系统概述 操作系统基本概念 【基础知识】 操作系统:控制和管理整个计算机系统的硬件和软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的…

硬件设计-齐纳管

目录 摘要 详情 齐纳管的工作电流、 摘要 齐纳管(Zener Diode)是一种特殊的二极管,它能够在特定的反向电压下保持电流稳定。正常情况下,二极管只允许正向电流通过,而阻止反向电流流过。而齐纳管在一定的反向电压下可…

linux网络 | https前置知识 | 数据加密与解密、数据摘要

前言:本节内容讲述https的相关内容。 https博主会着重讲解https如何让一个请求和一个响应能够安全的进行交互。 https博主将用两篇文章进行讲解。本篇是两篇中第一篇。会把http的安全问题引出来, 然后说一下https的基本解决方法。 下面废话不多说, 开始我…

小目标检测难点分析和解决策略

目录 一、背景 二、检测难点 三、主流改进方法 3.1 基于改进数据增强的小目标检测算法 3.1.1 监督数据增强方法 3.1.2 无监督数据增强方法 3.2. 基于改进特征提取的小目标检测算法 3.2.1. 扩张卷积 3.2.2. 特征增强 3.2.3. 多尺度特征提取 3.2.4. 注意力机制 3.3 基…

Java 继承

目录 1. 继承概述 2. 继承好处 3. 继承格式 4. 继承规定 5. debug 调试 6. 方法重写 6.1 概述 6.2 规定 7. super 关键字 7.1 概述 7.2 使用 7.3 在构造器中使用 8. 子类对象实例化的全过程 9. 练习 1. 继承概述 举例:Person 类中有name&#xff0c…

CES Asia 2025科技盛宴,AI智能体成焦点

2025第七届亚洲消费电子技术展(CES Asia赛逸展)将在北京拉开帷幕,AI智能体有望成为展会的核心亮点。 深圳市人工智能行业协会发文表示全力支持CES Asia 2025(赛逸展),称其为人工智能领域的创新发展提供了强…

HTMLHTML5革命:构建现代网页的终极指南 - 0. 课程目录设计

结构清晰,层层递进 课程从基础知识(如HTML学前必知)开始,逐步深入到高级应用(如PWA配置和WebApp优化)。每个模块都有明确的目标,适合零基础学员逐步掌握HTML。 覆盖范围广 这套课程涵盖了HTM…

大型语言模型(LLM)中的tokens是什么

大型语言模型(LLM)中的tokens是什么 在大型语言模型(LLM)中,tokens是文本处理的基本单位,它可以是一个单词、一个字符、一个标点符号,或者是一个特殊的标记。以下是关于tokens的详细介绍及举例: 一、tokens的定义和作用 定义:tokens是将文本分割成的一个个有意义的…

嵌入式C语言:二维数组

目录 一、二维数组的定义 二、内存布局 2.1. 内存布局特点 2.2. 内存布局示例 2.2.1. 数组元素地址 2.2.2. 内存布局图(简化表示) 2.3. 初始化对内存布局的影响 三、访问二维数组元素 3.1. 常规下标访问方式 3.2. 通过指针访问 3.2.1. 指向数…

Java进阶-在Ubuntu上部署SpringBoot应用

随着云计算和容器化技术的普及,Linux 服务器已成为部署 Web 应用程序的主流平台之一。Java 作为一种跨平台的编程语言,具有广泛的应用场景。本文将详细介绍如何在 Ubuntu 服务器上部署 Java 应用,包括环境准备、应用发布、配置反向代理&#…