当前位置: 首页 > news >正文

第十章 计算机网络——应用层

域名系统 DNS

域名系统(DNS,Domain Name System)是互联网中的一项核心服务,它充当了人类可读的域名与机器可识别的IP地址之间的“翻译官”。以下是DNS的详细概述:

DNS的定义

DNS是一个分布式命名系统,用于将域名(如www.example.com)转换为对应的IP地址(如192.0.2.1)。它构建了一个分布式数据库,将易记的域名映射到计算机可以直接理解的IP地址上,从而简化了互联网上的资源访问过程。

作用

  1. 域名解析:DNS的主要功能是将域名解析为IP地址,使得用户可以通过输入域名来访问互联网上的资源,而无需记忆复杂的IP地址。
  2. 存储其他类型记录:除了域名到IP地址的映射外,DNS还可以存储其他类型的记录,如邮件交换记录(MX记录)、别名记录(CNAME记录)等,这些记录提供了额外的功能和信息。
  3. 域名注册和管理:DNS还涉及域名的注册和管理。域名注册商负责管理域名的注册过程,并将域名信息传递给相应的DNS服务器。域名所有者可以通过注册商管理自己的域名设置。

工作原理

  1. 查询过程
    • 当用户在浏览器中输入一个域名时,操作系统会首先查询本地的DNS缓存。
    • 如果本地缓存中没有找到对应的IP地址,则会向本地的DNS服务器发送查询请求。
    • 本地DNS服务器会先查询自己的缓存,如果也没有找到,则会向根域名服务器发送查询请求。
    • 根域名服务器会告知本地DNS服务器该域名的顶级域(TLD)DNS服务器的地址。
    • 本地DNS服务器再向顶级域服务器发起查询请求,逐级向下查询,直到找到对应的IP地址。
    • 最后,本地DNS服务器将查询结果返回给用户。
  2. 递归查询与迭代查询
    • 递归查询:本地DNS服务器代表客户端进行完整的域名解析过程,直到找到所需的域名记录或遇到错误为止。
    • 迭代查询:在某些情况下,本地DNS服务器可能只从上一级DNS服务器获取下一级DNS服务器的地址,然后由客户端自行向下一级DNS服务器发起查询,直到找到所需的IP地址。但现代DNS系统中,递归查询更为常见。
  3. 缓存机制
    • DNS服务器(包括本地DNS服务器和递归DNS服务器)会缓存最近的查询结果,以便在将来的查询中快速响应。这可以减少对DNS服务器的查询次数,提高解析速度。

DNS的分层结构

DNS采用了分层的结构,由多个不同层级的DNS服务器组成:

  1. 根域名服务器:位于DNS层次结构的最顶层,负责将查询路由到正确的顶级域。全球共有13台根域名服务器(实际上是服务器集群),它们的IP地址是固定的,并集成在操作系统中。
  2. 顶级域名服务器:位于根域名服务器之下,负责管理特定顶级域(如.com、.org、.net等)的域名记录。
  3. 次级域名服务器:进一步细分,负责管理特定域名下的子域或二级域。

这种分层结构使得DNS查询可以高效地进行,并允许灵活地管理域名和其相关的IP地址。

DNS是互联网基础设施中不可或缺的一部分,它确保了用户可以通过易记的域名来访问互联网上的资源,而无需记忆复杂的IP地址。同时,DNS还提供了额外的功能和信息,如邮件交换记录、别名记录等,进一步丰富了互联网的应用场景。

文件传送协议

文件传送协议,即文件传输协议(File Transfer Protocol,简称FTP),是用于在网络上进行文件传输的一套标准协议。

概念

  • 定义:FTP是一种应用层协议,使用客户/服务器模式,通过TCP/IP连接在计算机之间传输文件。
  • 起源:FTP的起源可以追溯到1971年,当时A. Bhushan提出了第一个FTP规范(RFC 114)。最初,FTP并不是为IP网络设计的,而是作为ARPANET网络中计算机间文件传输协议。
  • 发展:随着互联网的普及和计算机技术的进步,FTP经历了多次修订和改进,包括RFC 765(1980年)和RFC 959(1985年)等,以适应新的网络标准和需求。

工作原理

  • 客户端与服务器:在FTP事务中,最终用户的计算机通常称为本地主机或客户端,而涉及的第二台计算机是远程主机,通常是FTP服务器。
  • 连接类型:FTP依赖于两个TCP连接:一个控制连接(默认端口21)用于发送FTP命令和接收服务器响应;一个数据连接(默认端口20,但在被动模式下可能不同)用于实际文件数据的传输。
  • 工作模式:FTP有两种工作模式——主动模式和被动模式。主动模式下,客户端向服务器的数据端口(默认为20)发起连接请求;而在被动模式下,客户端向服务器的控制端口(默认为21)发送PASV命令,请求服务器开启一个随机的数据端口进行监听,然后客户端主动向该端口发起连接请求。

功能特点

  • 文件操作:FTP允许用户通过客户端软件连接到FTP服务器,进行文件的上传、下载、删除、重命名等操作。
  • 用户分类:FTP用户分为Real账户、Guest用户和Anonymous用户。Real账户拥有独立登录权限,可以执行各种文件操作;Guest用户权限受限,通常只能访问自己的主目录;Anonymous用户是未注册但允许访问公开资源的用户,通常使用“anonymous”作为用户名。
  • 安全性:虽然FTP在默认情况下不加密流量,但可以通过FTPS(FTP over SSL)或SFTP(SSH File Transfer Protocol)等加密方式来提高数据传输的安全性。

应用场景

  • 文件共享:FTP广泛用于文件共享和分发,如软件更新、资料分享等。
  • 备份与恢复:企业可以使用FTP将数据备份到远程服务器,并在需要时恢复数据。
  • 网站内容更新:网站管理员可以使用FTP将网站内容上传到服务器,实现网站的更新和维护。

简单文件传送协议 TFTP

基本特点

  • 简单性:TFTP设计简单,易于实现和维护,主要用于需要简便性而非复杂功能性的场景。
  • 轻量级:作为FTP的简化版,TFTP去除了FTP中的许多复杂功能,仅支持基本的文件传输操作。
  • 无身份验证:TFTP不支持用户身份验证,这简化了传输流程,但也降低了安全性。
  • 基于UDP:TFTP使用UDP(用户数据报协议)作为底层传输协议,这使得数据传输速度较快,但可靠性相对较低。

功能与应用

  • 文件传输:TFTP允许客户端从远程主机获取文件或将文件传输到远程主机,特别适用于小型文件的传输。
  • 网络启动:TFTP常用于网络启动过程中,如计算机启动时通过TFTP从服务器下载启动文件(如操作系统内核)。
  • 设备配置:在网络设备(如路由器、交换机)的配置和固件升级中,TFTP也扮演着重要角色,用于传输配置文件或固件文件。

工作原理

  • 客户端-服务器模型:TFTP采用简单的客户端-服务器模型进行文件传输。
  • 传输过程
    1. 客户端发送读取请求(RRQ)或写入请求(WRQ)到服务器。
    2. 服务器响应数据(DATA)或确认(ACK)。
    3. 客户端和服务器之间交换数据(DATA)和确认(ACK),直到文件传输完成。
    4. 每个数据块(通常为512字节)都有一个序列号,用于确保数据的完整性和顺序。

安全性与可靠性

  • 安全性:由于TFTP不支持加密和身份验证,因此存在较高的安全风险。在使用TFTP进行文件传输时,通常需要采取额外的安全措施来确保数据的安全性。
  • 可靠性:由于TFTP基于UDP协议,其可靠性相对较低。UDP不保证数据包的顺序、完整性或错误检查,因此在传输过程中可能会出现数据丢失或损坏的情况。然而,TFTP通过确认机制(ACK)来确保每个数据块都被正确接收,从而在一定程度上提高了传输的可靠性。

端口与扩展

  • 端口号:TFTP使用标准的UDP端口号69进行通信。服务器监听69端口,客户端使用随机的高位端口向服务器发送请求和接收数据。
  • 扩展功能:TFTP协议后来又经过一次扩展,增加了一些控制命令。如果客户端或服务器想使用扩展命令时,必须向对方确认是否也能支持相应命令。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 递归求数组和
  • vscode+cmake+msvc+vcpkg的入门使用
  • C++设计模式笔记(内附可运行代码示例)
  • Github 2024-07-25开源项目日报 Top10
  • ubuntu24.04 LTS安装BackupPC备份软件
  • docker compose 安装 kafka
  • ArduPilot开源代码之ROS2Humble+CartographerSLAM+SITL+Gazebo
  • reshape函数及MATLAB应用
  • sql查询优化小知识-01,非等值条件查询影响
  • Vue3基础语法
  • C#-了解ORM框架SqlSugar并快速使用(附工具)
  • c# 对接第三方接口实现签名
  • 记一次因敏感信息泄露而导致的越权+存储型XSS
  • 谷粒商城实战笔记-75-商品服务-API-品牌管理-品牌分类关联与级联更新
  • 微信小程序云开发订单微信支付与小票和标签打印的完整高效流程
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • 03Go 类型总结
  • 10个最佳ES6特性 ES7与ES8的特性
  • Flex布局到底解决了什么问题
  • HTML-表单
  • interface和setter,getter
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Lucene解析 - 基本概念
  • SQLServer之创建数据库快照
  • 阿里云购买磁盘后挂载
  • 百度地图API标注+时间轴组件
  • 测试如何在敏捷团队中工作?
  • 读懂package.json -- 依赖管理
  • 模型微调
  • 我看到的前端
  • 项目管理碎碎念系列之一:干系人管理
  • 中文输入法与React文本输入框的问题与解决方案
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​iOS实时查看App运行日志
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​虚拟化系列介绍(十)
  • #大学#套接字
  • (9)STL算法之逆转旋转
  • (function(){})()的分步解析
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (ZT)薛涌:谈贫说富
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (四)js前端开发中设计模式之工厂方法模式
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (推荐)叮当——中文语音对话机器人
  • (转) Android中ViewStub组件使用
  • (转)Sublime Text3配置Lua运行环境
  • (转)程序员疫苗:代码注入
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • *上位机的定义
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .mysql secret在哪_MYSQL基本操作(上)