为啥么有奖章
6.1 域名系统 DNS
应用层的许多协议都是基于客户服务器方式。即使是 P2P 对等通信方式,实质上也是一种特殊的客户服务器方式。这里再明确一下,客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户服务器方式所描述的是进程之间服务和被服务的关系。这里最主要的特征就是:客户是服务请求方,服务器是服务提供方。
6.1.1 域名系统概述
6.1.2 互联网的域名结构
6.1.3 域名服务器
图6-3 树状结构的 DNS 域名服务器
从图6-3 可看出,互联网上的 DNS 域名服务器也是按照层次安排的。每一个域名服务器都只对域名体系中的一部分进行管辖。根据域名服务器所起的作用,可以把域名服务器划分为以下四种不同的类型:
(1)根域名服务器(root name server):根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。虽然互联网的根域名服务器总共只有 13 个域名,但根域名服务器并非仅由 13 台机器所组成(如果仅仅依靠这 13 台机器,根本不可能为全世界的互联网用户提供令人满意的服务)。
(2)顶级域名服务器(即 TLD 服务器):这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。
(3)权限域名服务器:这就是前面已经讲过的负责一个区的域名服务器。
(4)本地域名服务器(local name server):本地域名服务器并不属于图6-3 所示的域名服务器层次结构,但它对域名系统非常重要。
下面简单讨论一下域名的解析过程。这里要注意两点。
第一,主机向本地域名服务器的查询一般都采用递归查询(recursive query)。
第二,本地域名服务器向根域名服务器的查询通常采用迭代查询(iterative query)。
6.2 文件传送协议
6.2.1 FTP 概述
基于 TCP 的 FTP 和基于 UDP 的简单文件传送协议 TFTP,它们都是文件共享协议中的一大类,即复制整个文件,其特点是:若要存取一个文件,就必须先获得一个本地的文件副本。如果要修改文件,只能对文件的副本进行修改,然后再将修改后的文件副本传回到原节点。
6.2.2 FTP 的基本工作原理
图6-5 FTP 使用的两个 TCP 连接
当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口 21(用作控制连接的),同时还要告诉服务器自己的另一个端口号码,用于建立数据传送连接。接着,服务器进程用自己传送数据的熟知端口 20(用于数据传输)与客户进程所提供的端口号建立数据传送连接。
6.2.3 简单文件传送协议 TFTP
6.3 远程终端协议 TELNET
6.4 万维网 WWW
6.4.1 万维网概述
万维网是一个分布式的超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。
万维网以客户服务器方式工作。上面所说的浏览器就是在用户主机上的万维网客户程序。万维网文档所驻留的主机则运行服务器程序,因此这台主机也称为万维网服务器。 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。在一个客户程序主窗口显示出的万维网文档称为页面(page)。
从以上所述可以看出,万维网必须解决以下几个问题:
(1)怎样标志分布在整个互联网上的万维网文档?
(2)用什么样的协议来实现万维网上的各种链接?
(3)怎样使不同作者创作的不同风格的万维网文档,都能在互联网上的各种主机上显示出来,同时使用户清楚地知道在什么地方存在着链接?
(4)怎样使用户能够很方便地找到所需的信息?
为了解决第一个问题,万维网使用统一资源定位符 URL (Uniform Resource Locator)来标志万维网上的各种文档,并使每一个文档在整个互联网的范围内具有唯一的标识符 URL。为了解决上述的第二个问题,就要使万维网客户程序与万维网服务器程序之间的交互遵守严格的协议,这就是超文本传送协议 HTTP (HyperText Transfer Protocol)。 HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。为了解决上述的第三个问题,万维网使用超文本标记语言 HTML (HyperText Markup Language),使得万维网页面的设计者可以很方便地用链接从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的主机屏幕上将这些页面显示出来。 最后,用户可使用搜索工具在万维网上方便地查找所需的信息。
6.4.2 统一资源定位符 URL
- URL 的格式
统一资源定位符 URL 是用来表示从互联网上得到的资源位置和访问这些资源的方法。
现在最常用的协议就是 http(超文本传送协议 HTTP),其次是 ftp(文件传送协议 FTP)。
- 使用 HTTP 的 URL
URL 的“协议”和“主机名”部分,字母不区分大小写。但“路径”中的字符有时要区分大小写。
6.4.3 超文本传送协议 HTTP
- HTTP 的操作过程
协议 HTTP/1.0 的主要缺点,就是每请求一个文档就要有两倍 RTT 的开销。
协议 HTTP/1.1 较好地解决了这个问题,它使用了持续连接(persistent connection)。所谓持续连接就是万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。协议 HTTP/1.1 的持续连接有两种工作方式,即非流水线方式(without pipelining)和流水线方式(with pipelining)。
协议 HTTP/2 是协议 HTTP/1.1 的升级版本,其 HTTP 方法/状态码/语义等都没有改变,其主要特点如下:
(1)HTTP/2 把服务器发回的响应变成可以并行地发回(使用同一个 TCP 连接),这就大大缩短了服务器的响应时间。
(2)HTTP/2 允许客户复用 TCP 连接进行多个请求,这样就节省了 TCP 连续多次建立和释放连接所花费的时间。
(3)HTTP/2 把所有的报文都划分为许多较小的二进制编码的帧,并采用了新的压缩算法,不发送重复的首部字段,大大减小了首部的开销,提高了传输效率。
HTTP/2 是向后兼容的。
-
代理服务器
-
HTTP 的报文结构
-
在服务器上存放用户的信息
在 RFC 6265 中对 Cookie 进行了定义,规定万维网站点可以使用 Cookie 来跟踪用户。
6.4.4 万维网的文档
- 超文本标记语言 HTML
超文本标记语言 HTML (HyperText Markup Language)就是一种制作万维网页面的标准语言,它消除了不同计算机之间信息交流的障碍。但请注意, HTML 并不是应用层的协议,它只是万维网浏览器使用的一种语言。
- 动态万维网文档
上面所讨论的万维网文档只是万维网文档中最基本的一种,即所谓的静态文档(staticdocument)。静态文档在文档创作完毕后就存放在万维网服务器中,在被用户浏览的过程中,内容不会改变。
动态文档(dynamic document)是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建的。
- 活动万维网文档
6.4.5 万维网的信息检索系统
在万维网中用来进行搜索的工具叫做搜索引擎(search engine)。搜索引擎的种类很多,但大体上可划分为两大类,即全文检索搜索引擎和分类目录搜索引擎。
全文检索搜索引擎是一种纯技术型的检索工具。它的工作原理是通过搜索软件(例如一种叫做“蜘蛛”或“网络机器人”的 Spider 程序)到互联网上的各网站收集信息,找到一个网站后可以从这个网站再链接到另一个网站,像蜘蛛爬行一样。
分类目录搜索引擎并不采集网站的任何信息,而是利用各网站向搜索引擎提交网站信息时填写的关键词和网站描述等信息,经过人工审核编辑后,如果认为符合网站登录的条件,则输入到分类目录的数据库中,供网上用户查询。因此,分类目录搜索也叫做分类网站搜索。
6.4.6 博客和微博
-
博客
-
微博
每条微博字数最初限制为 140 英文字符,但现在已增加了“长微博”的选项,可输入更多的字符。
6.4.7 社交网站
6.5 电子邮件
6.5.1 电子邮件概述
一个电子邮件系统应具有图6-16 所示的三个主要组成构件,这就是用户代理、邮件服务器,以及邮件发送协议(如 SMTP)和邮件读取协议(如 POP3)。POP3 是邮局协议(Post Office Protocol)的版本3。凡是有 TCP 连接的,都经过了互联网,有的甚至可以跨越数千公里的距离。这里为简洁起见,没有画出网络。在互联网中,邮件服务器的数量是很大的。正是这些邮件服务器构成了电子邮件基础结构的核心。在图6-16 中为了说明问题,仅仅画出了两个邮件服务器。
图6-16 电子邮件的最主要的组成构件
互联网上有许多邮件服务器可供用户选用,邮件服务器24小时不间断地工作,并且具有大容量的邮件信箱。邮件服务器的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。邮件服务器按照客户服务器方式工作。邮件服务器需要使用两种不同的协议。一种协议用于用户代理向邮件服务器发起邮件或在邮件服务器之间发送邮件,如 STMP 协议,而另一种协议用于用户代理从邮件服务器读取邮件,如邮局协议 POP3。
6.5.2 简单邮件传送协议 SMTP
6.5.3 电子邮件的信息格式
6.5.4 邮件读取协议 POP3 和 IMAP
6.5.5 基于万维网的电子邮件
6.5.6 通过互联网邮件扩充 MIME
- MIME 概述
于是在这种情况下就提出了通用互联网邮件扩充 MIME[RFC 2045-2049,前三个文档是草案标准]。MIME 并没有改动或取代 SMTP。MIME 的意图是继续使用原来的邮件格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。
MIME 主要包括以下三部分内容:
(1)5 个新的邮件首部字段,它们可包含在原来的邮件首部中。这些字段提供了有关邮件的主体信息。
(2)定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
(3)定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
-
内容传送编码
-
内容类型
6.6 动态主机配置协议 DHCP
连接到互联网的计算机的协议软件需要配置的项目包括:
(1)IP 地址;
(2)子网掩码;
(3)默认路由器的 IP 地址;
(4)域名服务器的 IP 地址。
DHCP 使用客户服务器方式。需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文(DCHPDISCOVER)(将目的 IP 地址置为全 1,即255.255.255.255),这时该主机就成为 DHCP 客户。
当 DHCP 中继代理收到主机 A 以广播形式发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。
图6-18 DHCP 中继代理以单播方式转发发现报文
图6-19 DHCP 协议的工作过程
下面按照图6-19 中的注释编号(①至⑨)进行简单的解释。
②DHCP 客户从 UDP 端口 68 发送 DHCP 发现报文。
6.7 简单网络管理协议 SNMP
6.7.1 网络管理的基本概念
图6-20 网络管理的一般模型
SNMP 的网络管理由三个部分组成,即 SNMP 本身、管理信息结构 SMI(Structure of Management Information)和管理信息库 MIB(Management Information Base)。
6.7.2 管理信息结构 SMI
6.7.3 管理信息库 MIB
6.7.4 SNMP 的协议数据单元和报文
6.8 应用进程跨越网络的通信
6.8.1 系统调用和应用编程接口
6.8.2 几种常用的系统调用
6.9 P2P 应用
6.9.1 具有集中目录服务器的 P2P 工作方式
6.9.2 具有全分布式结构的 P2P 文件共享程序
6.9.3 P2P 文件分发的分析
6.9.4 在 P2P 对等方中搜索对象
本章的重要概念
习题
相关文章:
为啥么有奖章
6.1 域名系统 DNS 应用层的许多协议都是基于客户服务器方式。即使是 P2P 对等通信方式,实质上也是一种特殊的客户服务器方式。这里再明确一下,客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户服务器方式所描述的是进程之间服务和被…...
【报错】Unbalanced delimiter found in string
Unbalanced delimiter found in string uniapp报错Unbalanced delimiter found in string 查看代码发现原来是粗心导致的。条件编译删漏了一条 hid.close()// #endif加上前面的条件编译 or减去后面的即可...
Python(一)关键字、内置函数
程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&am…...
聊聊分布式架构10——Zookeeper入门详解
目录 01ZooKeeper的ZAB协议 ZAB协议概念 ZAB协议基本模式 消息广播 崩溃恢复 选举出新的Leader服务器 数据同步 02Zookeeper的核心 ZooKeeper 的核心特点 ZooKeeper 的核心组件 选举算法概述 服务器启动时的Leader选举 服务器运行期间的Leader选举 03ZooKeeper的…...
springmvc视图格式——模板引擎freemarker输出HTML文本
目录 1. freemarker 介绍创建测试工程2.2.2) 配置文件2.2.3) 创建模型类2.2.4) 创建模板2.2.5) 创建controller2.2.6) 创建启动类2.2.7) 测试 2.3) freemarker基础2.3.1) 基础语法种类2.3.2) 集合指令(List和Map)2.3.3) if指令2.3.4) 运算符2.3.5) 空值处…...
用长tree方式做等长线
我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 相关文章链接: 用set_data_check的方式做等长线 前面讲过了如何用set_data_check做等长线,这里再讲一下如何用cts的方式做。 1)写一个sdc,把等长线的起点设置成clock source,用于创建create_…...
C# out参数out多个参数
文章目录 C# out参数out多个参数背景说明作用方法定义调用方法测试结果注意 C# out参数out多个参数 背景说明 一个方法返回多个相同数据类型的变量,可以采用数据的方式; 我需要返回多个不同数据类型的方法,在这里采用out多个参数的方式。 …...
选择Android还是IOS?我终于明白了!
选择Android还是iOS,取决于个人的喜好和需求。以下是一些可能帮助您做出决策的考虑因素: 用户界面和易用性: iOS系统的界面比Android更加简单、易用,而且应用程序布局更加一致,可以更快地学会如何使用。Android系统除了…...
uniapp高德地图ios 使用uni.chooseLocation选取位置显示没有搜索到相关数据
uniapp云打包后,高德地图ios选取位置显示“ 对不起,没有搜索到相关数据” 详细问题描述 废话不多说,直接上图 解决方案 1.打开高德地图开发平台 2.重新创建key 3.获取云打包时的ios报名作为安全码 4.使用生成的高德key更改manifest.json里…...
Python绘制论文中的图形
一、条形图 使用场景:对多个实验方法的性能进行比较。代码: #条形图 import matplotlib.pyplot as plt import numpy as np#实验数据,每一行代表一个method,每一列代表一个性能指标 dataacc [[0.9504, 0.9315, 0.9420, 0.9409]…...
flutter复制口令返回app监听粘贴板
overridevoid didChangeAppLifecycleState(AppLifecycleState state) {switch (state) {case AppLifecycleState.inactive: // 处于这种状态的应用程序应该假设它们可能在任何时候暂停。break;case AppLifecycleState.resumed: //从后台切换前台,界面可见handle();b…...
学习pytorch14 损失函数与反向传播
神经网络-损失函数与反向传播 官网损失函数L1Loss MAE 平均MSELoss 平方差CROSSENTROPYLOSS 交叉熵损失注意code 反向传播在debug中的显示code B站小土堆pytorch视频学习 官网 https://pytorch.org/docs/stable/nn.html#loss-functions 损失函数 L1Loss MAE 平均 import to…...
windows平台下Qt Creator的下载与安装流程
下载 下载地址:https://download.qt.io/archive/ 下载界面 进入qt或者qtcreator都可以 版本选择 这里我选择进入qt进行下载,进入之后有多个版本可以选择。 注意:从Qt5.15版本开始,Qt公司不在提供开源离线安装程序,此…...
在 Python 中使用 Pillow 进行图像处理【3/4】
第三部分 一、腐蚀和膨胀 您可以查看名为 的图像文件dot_and_hole.jpg,您可以从本教程链接的存储库中下载该文件: 该二值图像的左侧显示黑色背景上的白点,而右侧显示纯白色部分中的黑洞。 侵蚀是从图像边界去除白色像素的过程。您可以通过使用…...
【Java】迭代器的next方法
Collection 集合的遍历 概述:Iteration:迭代器,集合的专用遍历方式 Iterator<E> Iterator() 返回在此 collection 的元素上进行迭代的迭代器boolean hasNext() 如果返回仍有元素可以迭代,则返回 trueE next() 返回迭代的下一…...
java智慧工地云平台源码,以物联网、移动互联网技术为基础,结合大数据、云计算等,实现工程管理绿色化、数字化、精细化、智能化的效果
智慧工地将更多人工智能、传感技术、虚拟现实等高科技技术植入到建筑、机械、人员穿戴设施、场地进出关口等各类物体中,围绕人、机、料、法、环等各方面关键因素,彻底改变传统建筑施工现场参建各方现场管理的交互方式、工作方式和管理模式,智…...
Unity 通过jar包形式接入讯飞星火SDK
最近工作上遇到了要接入gpt相关内容的需求,简单实现了一个安卓端接入讯飞星火的UnitySDK。 或者也可以接入WebSocket接口的。本文只讲安卓实现 我使用的Unity版本为2021.3.27f1c2 Android版本为4.2.2 1.下载SDK 登陆讯飞开放平台下载如图所示SDK 2.新建安卓工程…...
python轻量规则引擎rule-engine入门与应用实践
rule-engine是一种轻量级、可选类型的表达式语言,具有用于匹配任意 Python 对象的自定义语法,使用python语言开发。 规则引擎表达式用自己的语言编写,在 Python 中定义为字符串。其语法与 Python 最相似,但也受到 Ruby 的一些启发…...
栓Q八股文: C++ 14/17 新特性
C 14 翻译: 【翻译】C14的新特性简介-腾讯云开发者社区-腾讯云 C 17翻译:【翻译】C17的新特性简介-腾讯云开发者社区-腾讯云 原理:C Lambda 原理和编译器实现_clamda实现原理-CSDN博客...
虚拟世界游戏定制开发:创造独一无二的虚拟体验
在游戏开发领域,虚拟世界游戏定制开发是一项引人注目的任务,旨在满足客户独特的需求和愿景,创造一个完全个性化的虚拟世界游戏。这种类型的游戏开发需要专业的技能、深刻的游戏开发知识和密切的与客户合作,以确保游戏满足客户的期…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
【论文阅读28】-CNN-BiLSTM-Attention-(2024)
本文把滑坡位移序列拆开、筛优质因子,再用 CNN-BiLSTM-Attention 来动态预测每个子序列,最后重构出总位移,预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵(S…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...
Rust 开发环境搭建
环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行: rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu 2、Hello World fn main() { println…...
