计算机网络 应用层

文章目录

  • 应用层
    • 域名系统 DNS
      • 域名系统概述
      • 互联网的域名结构
      • 域名服务器
    • 文件传送协议
      • FTP 概述
      • FTP 的基本工作原理
      • 简单文件传送协议 TFTP
    • 远程终端协议 TELNET
      • 万维网 WWW
      • 统一资源定位符 URL
      • 超文本传送协议 HTTP
      • 万维网的信息检索系统
    • 电子邮件
      • 电子邮件概述
      • 简单邮件传送协议 SMTP
      • 邮件读取协议 POP3和IMAP
      • 基于万维网的电子邮件
      • 通用互联网邮件扩充 MIME
    • 动态主机配置协议 DHCP(Dynamic Host Configuration Prot ocol)
    • 简单网络管理协议 SNMP
      • 网络管理的基本概念
      • 管理信息结构 SMI
      • 管理信息库 MIB
    • 应用进程跨越网络的通信
      • 几种常用的系统调用
    • P2P 应用
      • 具有集中目录服务器的 P2P 工作方式
      • 具有全分布式结构的 P2P 文件共享程

应用层

域名系统 DNS

域名系统概述

域名系统 DNS (Domain Name System) 是互联网使用的命名系统,用来把便于人们使用的机器名字转换为 IP 地扯

互联网的域名系统 DNS 被设计成为一个联机分布式数据库系统,并采用客户服务器方式。 DNS 使大多数名字都在本地进行解析(resolve).

互联网的域名结构

采用层次树管理
在这里插入图片描述

(1) 国家顶级域名nTLD:
(2) 通用顶级域名gTLD:
最先确定的通用顶级域名有7个,即:
com (公司企业), net(网络服务机构), org(非营利性组织),int(国际组织), edu(美国专用的教育机构),gov (美国的政府部门),mil表示(美国的军事部门)。
以后又陆续增加了 13 个迪用顶级域名:
aero (航空运输企业), asia(亚太地区),biz(公司和企业), cat(使用加泰隆人的语言和文化团体), coop(合作团体),info(各种情况),jobs (人力资源管理者), mobi(移动产品与服务的用户和提供者), museum (博物馆), name (个人),pro (有证书的专业人员),tel (Telnic 股份有限公司),travel (旅游业)。
(3) 基础结构域名(infrastructure domain): 这种顶级域名只有一个,即arpa, 用于反向域名解析,因此又称为反向域名。

域名服务器

在这里插入图片描述

分为以下四种不同的类型:
(I)根域名服务器(root name server): 根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。全世界的根域名服务器只使用 13 个不同 IP 地址的域名,虽然互联网的根域名服务器总共只有 13 个域名,但根域名服务器并非仅由 13机器所组成,在互联网中是由 13 套装置 构成这13 组根域名服务器的[W-ROOT] 。每一套装置在很多地点安装根域名服务器(也可称为镜像根服务器),但都使用同一个域名。
(2) 顶级域名服务器(即 TLD 服务器):这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到 DNS 杳询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。
(3) 权限域名服务器:当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。
(4) 本地域名服务器(local name server): 当一台主机发出 DNS 查询诮求时,这个查询请求报文就发送给本地域名服务器。

第一,主机向本地域名服务器的查询一般都采用递归查询(recurs ve uery)。
第二,本地域名服务器向根域名服务器的查询常采用迭代查询。
在这里插入图片描述

在域名服务器中广泛地使用了高速缓存。高速缓存用来存放最查询过的域名以及从何处获得域名映射信息的记录。

文件传送协议

FTP 概述

文件传送协议 FTP (File Transfer Protocol)
FTP 提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用 ASCII 码),允许文件具有存取权限。
文件共享协议中的另一大类是联机访问(online access) 。联机访问意味允许多个程序同时对一个文件进行存取。

FTP 的基本工作原理

经常遇到的问题是:
(I) 计算机存储数据的格式不同。
(2) 文件的目录结构和文件命名的规定不同。
(3) 对于相同的文件存取功能,橾作系统使用的命令不同。
(4) 访问控制方法不同。

FTP 使用客户服务器方式。 FTP 服务器进程可同时为多个客户进程提供服务。 FTP的服务器进程由两大部分组成: 主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个诸求。
主进程的工作步骤如下:
(I) 打开熟知端口(端口号为 21), 使客户进程能够连接上。
(2) 等待客户进程发出连接请求。
(3) 启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
(4) 回到等待状态,继续接受其他客户进程发来的诸求。主进程与从屈进程的处理是并发进行的。
在这里插入图片描述

NFS 允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。

简单文件传送协议 TFTP

TCP/IP 协议族中还有一个简单文件传送协议 TFTP (Trivial File Transfer Protocol), 它是一个很小且易于实现的文件传送协议虽然 TFTP 也使用客户服务器方式,但它使用 UDP 数据报,因此 TFTP 视频要有自己的差错改正措施。 TFTP 只支持文件传输而不支待交互。
TFTP 的主要优点有两个。第一, TFTP 可用于 UDP 环境。第二, TFTP 代码所占的内存较小。这对较小的计算机或某些特殊用途的设备是很重要的。
TFTP 的主要特点是:
(I)每次传送的数据报文中有 512 字节的数据,但最后一次可不足 512 字节
(2) 数据报文按序编号,从1开始。
(3) 支持 ASCII 码或二进制传送。
(4) 可对文件进行读或写。
(5) 使用很简单的首部。

远程终端协议 TELNET

TELNET 是一个简单的远程终端协议。用户用TELNET 就可在其所在地通过 TCP 连接注册(即登录)到远地的另一台主机上(使用主机名或 IP 地址)。 TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过TCP 连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上的。因此, TELNET 又称为终端仿真协议。

万维网 WWW

万维网 WWW (World Wide Web) 是一个大规模的、联机式的信息储藏所,英文简称为Web

万维网是一个分布式的超媒体(hypermedia) 系统.它是超文本(hyp rtext)系统的扩充。所谓超文本是指包含指向其他文档的链接的文本(text)。一个超文本由多个信息源链接成,而这些信息源可以分布在世界各地,并且数目也是不受限制的。利用一个链接可使用户找到远在异地的另一个文档,而这又可链接到其他的文档(依此类推)。这些文档可以位于世界上任何一个接在互联网上的超文本系统中。超文本是万绯网的基础。

统一资源定位符 URL

  1. URL 的格式
    统一资源定位符 URL 是用来表示从互联网上得到的资源位置和访问这些资源的方法。
    协议://主机名:端口/路径
  2. 使用 HTTP URL

超文本传送协议 HTTP

  1. HTTP 的操作过程
    从层次的角度看, HTTP 是面向事务的(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
    在这里插入图片描述

协议 HTTP 是无状态的(stateless) 。也就是说,同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同.
在这里插入图片描述

(1) HTTP/1.1 具有流水线的工作方式。这就是在 TCP 连接建立后客户可以连续向服务器发出许多个请求,而不必等到收到一个响应后再发送下一个请求。但服务器发回响应时必须按先后顺序排队,逐个地发送给客户。有时遇到某个响应迟迟不能发回,那么排在后面的一些响应就必须等待很长的时间。 HTTP/2 把服务器发回的响应变成可以并行地发回(使用同一个 TCP 连接),这就大大缩短了服务器的响应时间。
(2) 使用 HTTP/ 1.1 时,当客户收到服务器发回的响应后,原来建立的 TCP 连接就释放了。如果客户还要继续向该服务器发送新的诸求,就必须重新建立 TCP 连接。 HTTP/2 允许客户复用 TCP 连接进行多个请求,这样就节省了 TCP 连续多次建立和释放连接所花费的时间。
(3) HTTP/ 1.1的请求和响应报文是面向文本的(tex -or en ed) 。当客户连续发送请求并受到响应时,在 TCP 连接上传送的 HTTP 报文首部成为不小的开销。在这些首部中有很多字段是重复的。为此, HTTP/2 把所有的报文都划分为许多较小的二进制编码的帧,并采用了新的压缩算法,不发送重复的首部字段,大大减小了首部的开销,提高了传输效率。

  1. 代理服务器
    代理服务器(prox server) 是一种网络实体,它又称为万维网高速缓存(Web cache) 。代理服务器把砐近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,

万维网的信息检索系统

在万维网中用来进行搜索的工具叫作搜索引擎(search engine) 。搜索引擎的种类很多,但大体上可划分为两大类,即全文检索搜索引擎和分类目录搜索引擎。
全文检索搜索引擎是一种纯技术型的检索工具。它的工作原理是通过搜索软件(例如一种叫作“蜘蛛”或“网络机器人”的 pider 程序)到互联网上的各网站收集信息,找到一个网站后可以从这个网站再链接到另一个网站,像蜘蛛爬行一样。然后按照一定的规则建立一个很大的在线索引数据库供用户查询。用户在查询时只要输入关键词,就从已经建立的索引数据库里进行查询(并不是实时地在互联网上检索到的信息)

分类目录搜索引擎并不采集网站的任何信息,而是利用各网站向搜索引擎提交网站信息时填写的关键词和网站描述等信息,经过人工审核编辑后,如果认为符合网站登录的条件,则输入到分类目录的数据库中,供网上用户查询。因此,分类目录搜索也叫作分类网站搜索。

值得注意的是,目前出现了垂直搜索引擎(vertical search engine), 它针对某一特定领域、特定人群或某一特定需求提供搜索服务。垂直搜索也是提供关键字来进行搜索的.
元搜索引擎(meta search engine), 它把用户提交的检索请求发送到多个独立的搜索引擎上去搜索,并把检索结果渠中统一·处理,以统一的格式提供给用户,因此是搜索引擎之上的搜索引擎。
2. Google 搜索技术的特点
它的核心技术就是 PageRank™, 译为网页排名。

电子邮件

电子邮件概述

简单邮件传送协议 SMTP (Simple Mail Transfer Protocol)
用互联网邮件扩充 MIME (Multipurpose Internet Mail Extensions)
一个电子邮件系统应具有三个主要组成构件,这就是用户代理、邮件服
务器,以及邮件发送协议(如 SMTP) 和邮件读取协议(如 POP3) POP3 是邮局协议(PosOffice Protocol)
在这里插入图片描述

用户代理 UA (User Agent)就是用户与电子邮件系统的接口,在大多数情况下它就是运行在用户计算机中的一个程序。用户代理向用户提供一个很友好的接口(目前主要是窗口界面)来发送和接收邮件。
用户代理至少应当具有以下4个功能。
(1) 撰写。给用户提供编辑信件的环境。例如,应让用户能创建便于使用的通信录。回信时不仅能很方便地从来信中提取出对方地址,并自动地将此地址写入到邮件中合适的位置,而且还能方便地对来信提出的问题进行答复
(2) 显示。能方便地在计算机屏器上显示出来信(包括来信附上的声音和图像)。
(3) 处理。处理包括发送邮件和接收邮件。例如,阅读后删除、存盘、打印、转发等,以及自建目录对来信进行分类保存。
(4) 通信。发信人在撰写完邮件后,要利用邮件发送协议将邮件发送到用户所使用的邮件服务器。
邮件服务器需要使用两种不同的协议。一种协议用于用户代理向
邮件服务器发送邮件或在邮件服务器之间发送邮件,如 SMTP 协议,而另一种协议用于用户代理从邮件服务器读取邮件,如邮局协议 POP3。

简单邮件传送协议 SMTP

  1. 连接建立
    发件人的邮件送到发送方邮件服务器的邮件缓存后, SMTP 客户就每隔一定时间对邮件缓存扫描一次。如发现有邮件,就使用 SMTP 的熟知端口号码 25 与接收方邮件服务器的 SMTP 服务器建立 TCP 连接。在连接建立后,接收方 SMTP 服务器要发出"220 Service ready"(服务就绪)。然后 SMTP 客户向 SMTP 服务器发送 HELO 命令,附上发送方的主机名。 SMTP 服务器若有能力接收邮件,则回答: “250 OK", 表示已准备好接收。若 SMTP 服务器不可用,则回答 “421 Service not ava lable" (服务不可用)。
    如在一定时间内(例如三天)发送不了邮件,邮件服务器会把这个情况通知发件人。

  2. 邮件传送
    邮件的传送从 MAIL 命令开始。 MAIL 命令后面有发件人的地址。如:<x ex en@ hua.or .cn> 。若 SMTP 服务器已准备好接收邮件,则回答 “250 OK”。否则,返回一个代码,指出原因。如: 451 (处理时出错)、 452 (存储空间不够)、 500 (命令无法识别)等。

  3. 连接释放
    邮件发送完毕后, SMTP 客户应发送QUIT 命令。 SMTP 服务器返回的信息是 “221(服务关闭)“,表示 SMTP 同意释放 TCP 连接。邮件传送的全部过程即结束。

邮件读取协议 POP3和IMAP

POP3 和网际报文存取协议IMAP (Internet Message Aecess Protocoll) 。
邮局协议 POP 是一个非常简单、但功能有限的邮件读取协议。
POP3 也使用客户服务器的工作力式。在接收邮件的用户计算机中的用户代理必须运行POP3 客户程序,
IMAP POP3 的主要功能比较

操作位置操作内容IMAPPOP3
收件箱阅读、标记、移动、删除邮件等客户端与邮箱更新同步仅在客户端内
发件箱保存到已发送存户端与邮箱更新同步仅在客户端内
创建文件夹新让自定义的文件夹客户端与邮箱更新同步仅在客户端内
草稿保存草稿客户端与邮箱更新同步仅在客户墙内
垃圾文件夹接收并移入垃圾文件夹的邮件支持不支什
广告邮件接受并移入广告邮件夹的邮件支持不支待

基于万维网的电子邮件

通用互联网邮件扩充 MIME

  1. MIME 概述
    前面所述的电子邮件协议 SMTP 有以下缺点:
    (I) SMTP 不能传送可执行文件或其他的二进制对象。
    (2) SMTP 限于传送 位的 ASCII 码。
    (3) SMTP 服务器会拒绝超过一定长度的邮件。
    (4) 某些 SMTP 的实现并没有完全按照 SMTP 的互联网标准。常见的问题如下:
    • 回车、换行的删除和增加;
    • 超过 76 个字符时的处理;截断或自动换行;
    • 后面多余空格的删除;
    • 300 •
    • 将制表符tab 转换为若干个空格。
    通用互联网邮件扩充 MIME
    在这里插入图片描述

MIME 主要包括以下三部分内容:
(I) 5个新的邮件首部字段,它们可包含在原来的邮件首部中。这些字段提供了有关邮件主体的信息。
(2) 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
(3) 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。

下面是 MIME 增加的 个新的邮件首部的名称及其意义(有的可以是选项)。
(I) MIME-Version: 标志 MIME 的版本。现在的版本号是1.
(2) Content-Description: 这是可读字符串,说明此邮件主体是否是图像、音频或视频。
(3) Content-Id: 邮件的唯一标识符。
(4) Conntent -Transfer-Encoding:在传送时邮件的主体是如何编码的。
(5) Content-Type: 说明邮件主体的数据类型和子类型

动态主机配置协议 DHCP(Dynamic Host Configuration Prot ocol)

是动态主机配置协议 , 它提供了一种机制,称为即插即用连网(plug -and-play networking)。这种机制允许一台计算机加入新的网络和获取 IP 地址而不用手工参与。

DHCP 使用客户服务器方式。需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文(DHCPDISCOVER) (将目的 IP 地址置为全1 ,即 255.255.255.255), 这时该主机就成为 DHCP 客户。发送广播报文是因为现在还不知道 DHCP 服务器在什么地方,因此要(DISCOVER)DHCP 服务器的 IP 地址。这台主机目前还没有自己的 IP 地址,因此它将 IP数据报的源 IP 地址设为全0。这样,在本地网络上的所有主机都能够收到这个广插报文,但只有 DHCP 服务器才对此广播报文进行回答。 DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池(address pool) 中取一个地址分配给该计算机。 DHCP 服务器的回答报文叫作提供报文(DHCPOFFER),表示“提供”了 IP 地址等配置信息。
但是我们并不愿意在每一个网络上都设置一个 DHCP 服务器,因为这样会使 DHCP务器的数量太多。因此现在是使每一个网络至少有一个 DHCP 中继代理(relay agent),它配置了 DHCP 服务器的 IP 地址信息。当 DHCP 中继代理收到主机以广播形式发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。收到 DHCP 服务器回答的提供报文后, DHCP 中继代理再把此提供报文发回给主机 。

简单网络管理协议 SNMP

网络管理的基本概念

虽然网络管理还没有精确定义,但它的内容可归纳为:
网络管理包括对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,这样就能以合理的价格满足网络的一些需求,如实时运行性能、服务质量等。网络管理常简称为网管。

管理站又称为管理器,是整个网络管理系统的核心。所有向被管设备发送的命令都是从管理站发出的。管理站的所在部门也常称为网络运行中心 NOC (Network Operations Center) 。
在这里插入图片描述

在被管网络中有很多的被管设备(包括设备中的软件)。被管设备可以是主机、路由器、打印机、媒线器、网桥或调制解调器等。在每一个被管设备中可能有许多被管对象(Managed Object)。
在每一个被管设备中都要运行一个程序以便和管理站中的管理程序进行通信。这些运行着的程序叫作网络管理代理程序。

简单网络管理协议 SNMP (Simple Network Management Protocol) 中的管理程序和代理程序按客户服务器方式工作。管理程序运行 SNMP 客户程序,而代理程序运行 SNMP 服务器程序。在被管对象上运行的 SNMP 服务器程序不停地监听来自管理站的 SNMP 客户程序的请求(或命令)。一旦发现了,就立即返回管理站所需的信息,或执行某个动作。在网络系统中往往是一个(或少数几个)客户程片与很多的服务器程序进行交互。

若网络元素使用的不是 SNMP 协议而是另一种网络管理协议,那么 SNMP 协议就无法控制该网络元素。这时可使用委托代理(proxy agent)。委托代理能提供如协议转换和过滤操作等功能对被管对象进行管理。
SNMP 的网络管理巾三个部分组成,即 SNMP 本身、管理信息结构 SMI (Structure of Management Information)和管理信息库 MIB (Management Information Base) 。
SNMP 定义了管理站和代理之间所交换的分组格式。所交换的分组包含各代理中的对象名及其状态。 SNMP 负责读取和改变这些数值。
SMI 定义了命名对象和定义对象类型(包括范围和长度)的通用规则,以及把对象和对象的值进行编码的规则。
MIB 在被管理的实体中创建了命名对象,并规定了其类型。

管理信息结构 SMI

  1. 被管对象的命名
    SMI 规定,所有的被管对象都必须处在对象命名树(object naming tree)上
    在这里插入图片描述

  2. 被管对象的数据类型
    分为简单类型和结构化类型
    几种简单类型
    在这里插入图片描述

数据类型 sequence 类似于 语言中的 sruct或 record, 它是一些简单数据类型的组合(不一定要相同的类型)。而数据类型 sequence of类似于 语言中的 array,它是同样类型的简单数据类型的组合,或同样类型的 sequence 数据类型的组合。
3. 编码方法
SMI 使用 ASN.I 制定的基本编码规则 BER (Basic Encoding Rule)进行数据的编码。
在这里插入图片描述

(1)*T(tag)*字段又叫作标记字段,占1字节。 字段比较复杂,因为它要定义的数据类型较多。 字段又再分为以下三个子字段:
• 类别(2 位)共四种:通用类(00), ASN.I 定义的类型;应用类(01), SMI义的类型;上下文类(10), 即上下文所定义的类型;专用类(11), 保留为特定厂商定义的类型。
• 格式 (1 位)共两种,指出数据类型的种类:简单数据类型(0), 结构化数据类型
• 编号 (5 位)用米标志不同的数据类型。编号的范围一般为 0~30。当编号大于 30时, 字段就要扩展为多个字节。
(2) L(length)字段又叫作长度字段(单乍节或多字节)。
(3) V(value)字段又叫作值字段,用于定义数据元素的值。

管理信息库 MIB

所谓“管理信息”就是指在互联网的网管框架中被管对象的集合。被管对象必须维持可供管理程序读写的若干控制和状态信息。这些被管对象构成了一个虚拟的信息存储器,所以才称为管理信息库 MIB。

应用进程跨越网络的通信

在这里插入图片描述

应用编程接口 API(Application Programming Interface) API 从程序设计的角度定义了许多标准的系统调用函数。应用进程只要使用标准的系统调用函数就可得到操作系统的服务。因此从程序设计的角度看,也可以把 API 看成是应用程序和操作系统之间的接口。
现在 TCP/IP 协议软件已驻留在操作系统中。
UNIX 橾作系统定义的一种 APl ,它又称为套接字接口 (socket interface) 。
微软公司在其操作系统中采用了套接字接口 API ,形成了一个稍有不同的 API ,并称之为 Windows Socket.

从另一种角度看,计算机之间的通信就是本计算机要读取另一个地点的计算机中的数据,或者要把数据从本计算机写入到另一个地点的计算机中
在这里插入图片描述

当应用进程(客户或服务器)需要使用网络进行通信时,必须首先发出 socket系统调用,请求操作系统为其创建一个“套接字“。这个调用的实际效果是诸求操作系统把网络通信所需要的一些系统资源(存储器间、 CPU 时间、网络带宽等)分配给该应用进程。操作系统为这些资源的总和用一个叫作套接字描述符(socket descriptor) 的号码来表示,然后把这个套接字描述符返回给应用进程。此后,应用进程所进行的网络操作(建立连接、收发数据、调整网络通信参数等)都必须使用这个套接字描述符。所以,几乎所有的网络系统调用都把这个套接字描述符作为套接字的许多参数中的第一个参数。在处理系统调用的时候,通过套接字描述符,操作系统就可以识别出应该使用哪些资源来完成应用进程所请求的服务。通信完毕后,应用进程通过一个关闭套接字的 close 系统调用通知操作系统回收与该套接字描述符相关的所有资源。

在这里插入图片描述

几种常用的系统调用

  1. 连接建立阶段
    套接字被创建后,它的端口号和 IP 地址都是空的,因此应用进程要调用 bind(绑定)米指明套接字的本地地址。

服务器在调用bind 后,还必须调用 listen(收听)把在接字设置为被动方式,以便随时接受客户的服务请求。

服务器紧接着就调用 accept(接受),以便把远地客户进程发来的连接请求提取出来。系统调用 accept的一个变量就是要指明足从哪一个套接字发起的连接。
在这里插入图片描述

  1. 数据传送阶段
    客户和服务器都在 TCP 连接上使用 send 系统调用传送数据,使用 recv 系统调用接收数据。
    调用 send 需要三个变量:数据要发往的套接字的描述符、要发送的数据的地址以及数据的长度。通常 send 调用把数据复制到操作系统内核的缓存中。若系统的缓存已满, send就暂时阻塞,直到缓存有空间存放新的数据。
    调用 recv 也需要三个变昼:要使用的套接字的描述符、缓存的地址以及缓存空间的长度。
  2. 连接释放阶段
    一旦客户或服务器结束使用套接字,就把套接字撤销。这时就调用close 释放连接和撤销套接字
    在这里插入图片描述

UDP 服务器由于只提供无连接服务,因此不使用 listen 和accept系统调用。

P2P 应用

P2P 应用的范围很广,例如,文件分发、实时音频或视频会议、数据库系统、网络服务持(如 P2P 打车软件、 P2P 理财等)

具有集中目录服务器的 P2P 工作方式

一个数据库管理资源和IP的映射,想要获取资源需要去数据库查ip和资源的映射,选择合适的ip下载。

具有全分布式结构的 P2P 文件共享程

了一种有限范围的洪泛查询。

用分散定位和分散传输技术

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

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

相关文章

项目管理工具——禅道在企业内部的使用

目录 一、禅道的下载安装 1.1 禅道官网 1.2 安装步骤 二、禅道启动 2.1 访问禅道 三、禅道的使用 3.1 公司信息编辑 3.2 admin管理组织结构 3.2.1 岗位母部门添加 3.2.2 岗位子部门添加 3.2.3 用户新增 3.2.4 用户职位编辑 3.3 产品经理使用禅道 3.3.1 添加产品…

Kafka-消费者-KafkaConsumer分析-PartitionAssignor

Leader消费者在收到JoinGroupResponse后&#xff0c;会按照其中指定的分区分配策略进行分区分配&#xff0c;每个分区分配策略就是一个PartitionAssignor接口的实现。图是PartitionAssignor的继承结构及其中的组件。 PartitionAssignor接口中定义了Assignment和Subscription两个…

个人实现的QT拼图游戏(开源),QT拖拽事件详解

文章目录 效果图引言玩法 拖拽概念基本概念如何在Qt中使用拖放注意事项 游戏关键问题总结 效果图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c6dd66befd314442adf07e1dec0d550c.png 引言 在学习QT demo时&#xff0c;发现有一个拼图demo&#xff0c;介绍拖…

ES框架详解

ES框架详解 1、全文检索的介绍 ​ 那么对于一般的公司&#xff0c;初期是没有那么多数据的&#xff0c;所以很多公司更倾向于使用传统的数据库&#xff1a;mysql&#xff1b;比如我们要查找关键字”传智播客“&#xff0c;那么查询的方式大概就是:select * from table where …

【AI接口】语音版、文心一言大模型和AI绘图、图片检测API

文章目录 一、语音版大模型AI1、接口2、请求参数3、请求参数示例4、接口返回示例 二、AI图片鉴黄合规检测API1、接口2、请求参数3、请求参数示例4、接口返回示例5、报错说明6、代码开源 三、人工智能AI绘画API1、接口2、请求参数3、请求参数示例4、接口返回示例5、AI绘画成果展…

RDMA编程实践-SEND-RECEICVE原语应用

RDMA编程实践 本文描述了RDMA编程过程中的SEND-RECEIVE双边原语的代码实现。包含多个版本&#xff0c;1、client向server发送消息&#xff0c;server回复client收到消息(ACK)&#xff0c;然后两边断开连接。2、server端循环等待客户端建立连接&#xff0c;client发送一次消息后…

Linux 【C编程】 引入线程,线程相关函数

1.线程的引入 1.1使用线程同时读取键盘和鼠标 代码演示&#xff1a; #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <termios.h> #include <fcntl.h> #include <string.h> // 读取…

鸿蒙HarmonyOS实战-ArkTS语言(基本语法)

&#x1f680;一、ArkTS语言基本语法 &#x1f50e;1.简介 HarmonyOS的ArkTS语言是一种基于TypeScript开发的语言&#xff0c;它专为HarmonyOS系统开发而设计。ArkTS语言结合了JavaScript的灵活性和TypeScript的严谨性&#xff0c;使得开发者能够快速、高效地开发出高质量的Har…

如何从命令行运行testng.xml?

目录 创建一个新的java项目并从命令行运行testng.xml 使用命令行运行XML文件 从命令行运行现有maven项目的XML文件 在这篇文章中&#xff0c;我们将使用命令行运行testng.xml。有多种场景需要使用命令行工具运行testng.xml。也许您已经创建了一个maven项目&#xff0c;现在想…

git提交代码到远端仓库的方法详解

一、何为git git就是版本控制器&#xff0c;就比如说你新建了一个git文件夹&#xff0c;里面用于存放你的C语言实习报告&#xff0c;现在要用git对该文件夹进行接管。当你修改了你的C语言实习报告点击保存之后&#xff0c;就用git的相关命令&#xff0c;提交给git&#xff0c;让…

Flask 3.x log全域配置(包含pytest)

最近使用到flask3.x&#xff0c;配置了全域的log&#xff0c;这边记录下 首先需要创建logging的配置文件&#xff0c;我是放在项目根目录的&#xff0c; Logging 配置 logging.json {"version": 1, # 配置文件版本号"formatters": {"default&qu…

git中合并分支时出现了代码冲突怎么办

目录 第一章、Git代码冲突介绍1.1&#xff09;什么是Git代码冲突①git merge命令介绍②代码冲突原因 1.2&#xff09;提示代码冲突的两种情况①本地不同分支的文件有差异时&#xff1a;②本地仓库和git远程仓库的文件有差异时&#xff1a; 1.3&#xff09;解决合并时的代码冲突…

音乐人声分离工具:极简的人声和背景音乐分离工具

这是一个极简的人声和背景音乐分离工具&#xff0c;本地化网页操作&#xff0c;无需连接外网&#xff0c;使用 2stems/4stems/5stems 模型。 将一首歌曲或者含有背景音乐的音视频文件&#xff0c;拖拽到本地网页中&#xff0c;即可将其中的人声和音乐声分离为单独的音频wav文件…

04 SpringBoot整合Druid/MyBatis/事务/AOP+打包项目

整合Druid 项目结构&#xff1a; 引入依赖&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaL…

rust跟我学六:虚拟机检测

图为RUST吉祥物 大家好,我是get_local_info作者带剑书生,这里用一篇文章讲解get_local_info是怎么检测是否在虚拟机里运行的。 首先,先要了解get_local_info是什么? get_local_info是一个获取linux系统信息的rust三方库,并提供一些常用功能,目前版本0.2.4。详细介绍地址:…

00-Rust前言

问&#xff1a;为什么要近期想学习Rust? 答&#xff1a; Rust出来也是有一段时间了&#xff0c;从Microsoft吵着要重构他们的C"祖传代码"开始&#xff0c;Rust就披着“高效&#xff0c;安全”的头衔。而自己决定要学习Rust&#xff0c;是因为近期发现&#xff1a;与…

TDengine 企业级功能:存储引擎对多表低频场景优化工作分享

在去年 8 月份发布的 3.1.0.0 版本中&#xff0c;TDengine 进行了一系列重要的企业级功能更新&#xff0c;其中包括对多表低频场景写入性能的大幅优化。这一优化工作为有此需求的用户提供了更大的便捷性和易用性。在本文中&#xff0c;TDengine 的资深研发将对此次优化工作进行…

Java项目:10 Springboot的电商书城管理系统

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 该系统分为前台展示和后台管理两大模块&#xff0c;前台主要是为消费者服务。该子系统实现了注册&#xff0c;登录&#xff0c;以及从浏览、下…

强化学习(二)多臂老虎机 “Multi-armed Bandits”——1

将强化学习与机器学习、深度学习区分开的最重要的特征为&#xff1a;它通过训练中信息来评估所采取的动作&#xff0c;而不是给出正确的动作进行指导&#xff0c;这极大地促进了寻找更优动作的需求。 1、多臂老虎机&#xff08;Multi-armed Bandits&#xff09;问题 赌场的老虎…

JS遍历对象的方法及特点

1、定义一个对象 let obj {name: Tom,age: 20,sex: 男,};obj.weight 70kg;// obj的原型上定义属性Object.prototype.height 180cm;Object.prototype.major function() {console.log(专业&#xff1a;计算机应用技术);};console.log(obj, obj); 控制台输出的obj中&#xff…