2.应用层

2.1 应用层协议原理

  • 应用层对应用程序的通信提供服务。

  • 应用层协议定义:

    1. 应用进程交换的报文类型,请求还是响应?
    2. 各种报文类型的语法,如报文中的各个字段及其详细描述。
    3. 字段的语义,即包含在字段中的信息的含义。
    4. 进程何时、如何发送报文,以及对报文进行响应的规则。
应用层的功能 对应的协议
文件传输,访问和管理 FTP
电子邮件 SMTP,POP3
虚拟终端 HTTP
查询服务和远程作业登录

网络应用模型

客户/服务器(C/S)模型

即客户(client)/服务器(server)模型。

服务器
  • 一直运行
  • 固定的IP地址和周知的端口号(约定)
  • 扩展性:服务器场数据中心进行扩展扩展性差
客户端
  • 主动与服务器通信
  • 与互联网有间歇性的连接)
  • 可能是动态IP地址
  • 不直接与其它客户端通信

P2P模型

peer-to-peer

(几乎)没有一直运行的服务器

peer-to-peer简称P2P,即点对点技术。又称对等互联网络技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。

简单的说,P2P直接将人们联系起来,让人们通过互联网直接交互。P2P使得网络上的沟通变得容易、更直接共享和交互,真正地消除中间商。

P2P就是人可以直接连接到其他用户的计算机、交换文件,而不是像过去那样连接到服务器去浏览与下载。

  • 任意端系统之间可以进行通信
  • 每一个节点既是客户端又是服务器
    • 自扩展性-新peer节点带来新的
      服务能力,当然也带来新的服务请求
  • 参与的主机间歇性连接且可以改变地址
    • 难以管理(缺点)
  • 例子:Gnutella,迅雷

P2P的优势是在使用中对于运营者来说能解决带宽消耗大的问题,而对于用户来说是体验的提升。

除了在电视直播方面,其实P2P技术的应用还有很多领域,可以说只要有大文件分发传输的地方,都可以用到P2P技术。

常见的有:大型端游的分发更新、网吧游戏更新、科研数据资料、出版社的图文资料、视频的分发传输等等。

C/S和P2P体系结构的混合体

当然还有混合体,比如 Napster 是一种 p2p 的文件分发系统。它是美国西北大学一个本科生开发的,用于在校园网中分发免费的 MP3 音乐。

它的工作原理是什么呢?

注册、目录查询是 CS 的,文件下载是 P2P 的。

  • 你下载了 Napster 的客户端,运行起来之后,你就成为了一个节点。这个时候,Napster 会向服务器发出一个注册的命令,告诉服务器你的 IP,还有你拥有的 MP3 音乐。
  • 如果你想下载其他音乐,客户端会向中心服务器联系,找到哪些节点有这个音乐可以供你下载。

对于大学生来说是非常有吸引力的。只要下载这个软件,就可以收获一堆免费的音乐,有一阵大学 2/3 的带宽都用于 P2P 的分发。

但唱片厂商少收了很多钱,最终把 Napster 告上了法院,Napster 也被迫下架了。

但这种技术形式非常好,用户下载的速度比较快,资源也比较多。而且随着用户数量越多,资源越多,下载的速度越快,吸引更多的用户进来,形成马太效应。

当然除了国外的 Napster,国内的也有应用采用这种系统,比如百度网盘、迅雷。

进程通信

进程: 在主机上运行的应用程序

在同一个主机内,使用进程间通信机制通信(操作系统定义)
不同主机,通过**交换报文(Message)**来通信使用OS提供的通信服务
按照应用协议交换报文借助传输层提供的服务

  • 客户端进程:发起通信 的进程
  • 服务器进程:等待连接 的进程

注意:P2P架构的应用也 有客户端进程和服务器进程之分

分布式进程通信需要解决的问题

TCP socket

两个应用进程使用 TCP 进行通讯时,会先建立连接。建立连接之后,TCP 会返回一个整数来代表我是谁、对方是谁。

( 4 元组:源 IP、源 port、目标 IP、目标 port)

使用这个 4 元组与远程的应用进程通信,我们就不用在每一次发送报文的时候都指定我是谁、对方是谁。

就像使用操作系统打开一个文件一样,操作返回一个文件句柄。以后使用这个文件句柄来标记文件,而不是使用这个文件的目录名、文件名。

这样的话,对操作系统来说简单容易管理,并且穿过层间的信息也比较少。

2.2 Web and HTTP⭐

1.万维网概述

万维网www (World Wide web)是一个大规模的、联机式的信息储藏所/资料空间,是无数个网络站点和网页的集合。

我们需要一个统一标识符(URL)来区分万维网上的各种资源。

用户通过点击超链接(https://www.baidu.com/)获取资源,这些资源通过超文本传输协议HTTP传送给使用者。

万维网以客户/服务器方式工作,用户使用的浏览器就是万维网客户程序,万维网文档所驻留的主机运行服务器程序。

万维网使用超文本标记语言HTML,使得万维网页面设计者可以很方便地从一个界面的链接转到另一个界面,并能够在自己的屏幕上显示出来。

Web页:由一些对象组成

对象可以是HTML文件、JPEG图像、Java小程序、声音剪辑文件等

Web页含有一个基本的HTML文件,该基本HTML文件又包含若干对象的引用(链接)

通过URL对每个对象进行引用
访问协议,用户名,口令字,端口等;

URL格式: protocol :// hostname[:port] / path / [;parameters][?query]#fragment

2.HTTP ⭐

HTTP协议定义了浏览器(万维网客户进程〉怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

HTTP: 超文本传输协议 也就是HyperT*ext Transfer Protocol*。

  • Web的==应用层==协议
  • 客户/服务器模式
  • 客户: 请求、接收和显示 Web对象的浏览器
  • 服务器: 对请求进行响应, 发送对象的Web服务器
  • HTTP 1.0: RFC 1945
  • HTTP 1.1: RFC 206
  • web服务默认80端口

HTTP 的名字「超文本协议传输」,它可以拆成三个部分:

  • 超文本
  • 传输
  • 协议

协议

生活中的协议,本质上与计算机中的协议是相同的,协议的特点:

  • 」字,代表的意思是必须有两个以上的参与者。例如三方协议里的参与者有三个:你、公司、学校三个;租房协议里的参与者有两个:你和房东。
  • 」字,代表的意思是对参与者的一种行为约定和规范。例如三方协议里规定试用期期限、毁约金等;租房协议里规定租期期限、每月租金金额、违约如何处理等。

针对 HTTP 协议,我们可以这么理解。

HTTP 是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范(两个以上的参与者),以及相关的各种控制和错误处理方式(行为约定和规范)。

传输

所谓的「传输」,很好理解,就是把一堆东西从 A 点搬到 B 点,或者从 B 点 搬到 A 点。

HTTP 协议是一个双向协议

我们在上网冲浪时,浏览器是请求方 A,百度网站就是应答方 B。双方约定用 HTTP 协议来通信,于是浏览器把请求数据发送给网站,网站再把一些数据返回给浏览器,最后由浏览器渲染在屏幕,就可以看到图片、视频了。

数据虽然是在 A 和 B 之间传输,但允许中间有中转或接力

就好像第一排的同学想传递纸条给最后一排的同学,那么传递的过程中就需要经过好多个同学(中间人),

这样的传输方式就从「A < --- > B」,变成了「A <-> N <-> M <-> B」

而在 HTTP 里,需要中间人遵从 HTTP 协议,只要不打扰基本的数据传输,就可以添加任意额外的东西

针对传输,我们可以进一步理解了 HTTP。

HTTP 是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。

超文本

HTTP 传输的内容是「超文本」。

我们先来理解「文本」,在互联网早期的时候只是简单的字符文字,但现在「文本」的涵义已经可以扩展为图片、视频、压缩包等,在 HTTP 眼里这些都算作「文本」。

再来理解「超文本」,它就是超越了普通文本的文本,它是文字、图片、视频等的混合体,最关键有超链接,能从一个超文本跳转到另外一个超文本。

HTML 就是最常见的超文本了,它本身只是纯文字文件,但内部用很多标签定义了图片、视频等的链接,再经过浏览器的解释,呈现给我们的就是一个文字、有画面的网页了。

HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。

HTTP报文

报文由ASCII编码, 因此是可读的(Readable)

HTTP 特性

3.1 HTTP 常见面试题 | 小林coding (xiaolincoding.com)

优点

HTTP 最突出的优点是「简单、灵活和易于扩展、应用广泛和跨平台」。

1. 简单

HTTP 基本的报文格式就是 header + body,头部信息也是 key-value 简单文本的形式,易于理解,降低了学习和使用的门槛。

2. 灵活和易于扩展

HTTP 协议里的各类请求方法、URI/URL、状态码、头字段等每个组成要求都没有被固定死,都允许开发人员自定义和扩充

同时 HTTP 由于是工作在应用层( OSI 第七层),则它下层可以随意变化,比如:

  • HTTPS 就是在 HTTP 与 TCP 层之间增加了 SSL/TLS 安全传输层;
  • HTTP/1.1 和 HTTP/2.0 传输协议使用的是 TCP 协议,而到了 HTTP/3.0 传输协议改用了 UDP 协议。

3. 应用广泛和跨平台

互联网发展至今,HTTP 的应用范围非常的广泛,从台式机的浏览器到手机上的各种 APP,从看新闻、刷贴吧到购物、理财、吃鸡,HTTP 的应用遍地开花,同时天然具有跨平台的优越性。

缺点

HTTP 协议里有优缺点一体的双刃剑,分别是「无状态、明文传输」,同时还有一大缺点「不安全」。

1. 无状态双刃剑

无状态的好处,因为服务器不会去记忆 HTTP 的状态,所以不需要额外的资源来记录状态信息,这能减轻服务器的负担,能够把更多的 CPU 和内存用来对外提供服务。

无状态的坏处,既然服务器没有记忆能力,它在完成有关联性的操作时会非常麻烦。

例如登录->添加购物车->下单->结算->支付,这系列操作都要知道用户的身份才行。但服务器不知道这些请求是有关联的,每次都要问一遍身份信息。

这样每操作一次,都要验证信息,这样的购物体验还能愉快吗?别问,问就是酸爽

对于无状态的问题,解法方案有很多种,其中比较简单的方式用 Cookie 技术。

Cookie 通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。

相当于,在客户端第一次请求后,服务器会下发一个装有客户信息的「小贴纸」,后续客户端请求服务器的时候,带上「小贴纸」,服务器就能认得了了

2. 明文传输双刃剑

明文意味着在传输过程中的信息,是可方便阅读的,比如 Wireshark 抓包都可以直接肉眼查看,为我们调试工作带了极大的便利性。

但是这正是这样,HTTP 的所有信息都暴露在了光天化日下,相当于信息裸奔。在传输的漫长的过程中,信息的内容都毫无隐私可言,很容易就能被窃取,如果里面有你的账号密码信息,那你号没了

3. 不安全

HTTP 比较严重的缺点就是不安全:

  • 通信使用明文(不加密),内容可能会被窃听。比如,账号信息容易泄漏,那你号没了。
  • 不验证通信方的身份,因此有可能遭遇伪装。比如,访问假的淘宝、拼多多,那你钱没了。
  • 无法证明报文的完整性,所以有可能已遭篡改。比如,网页上植入垃圾广告,视觉污染,眼没了。

HTTP 的安全问题,可以用 HTTPS 的方式解决,也就是通过引入 SSL/TLS 层,使得在安全上达到了极致。

HTTP 常见的状态码

状态码的类别

类别 说明
1XX Informational(信息性状态码) 接受的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错
2XX——表明请求被正常处理了

200 OK:请求已正常处理。

204 No Content:请求处理成功,但没有任何资源可以返回给客户端,一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。

206 Partial Content:是对资源某一部分的请求,该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文中包含由Content-Range指定范围的实体内容。

3XX——表明浏览器需要执行某些特殊的处理以正确处理请求

301 Moved Permanently:资源的uri已更新,你也更新下你的书签引用吧。永久性重定向,请求的资源已经被分配了新的URI,以后应使用资源现在所指的URI。

302 Found:资源的URI已临时定位到其他位置了,姑且算你已经知道了这个情况了。临时性重定向。和301相似,但302代表的资源不是永久性移动,只是临时性性质的。换句话说,已移动的资源对应的URI将来还有可能发生改变。

303 See Other:资源的URI已更新,你是否能临时按新的URI访问。该状态码表示由于请求对应的资源存在着另一个URL,应使用GET方法定向获取请求的资源。303状态码和302状态码有着相同的功能,但303状态码明确表示客户端应当采用GET方法获取资源,这点与302状态码有区别。

当301,302,303响应状态码返回时,几乎所有的浏览器都会把POST改成GET,并删除请求报文内的主体,之后请求会自动再次发送。

304 Not Modified:资源已找到,但未符合条件请求。该状态码表示客户端发送附带条件的请求时(采用GET方法的请求报文中包含If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since中任一首部)服务端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回304.。

307 Temporary Redirect:临时重定向。与302有相同的含义。

4XX——表明客户端是发生错误的原因所在。

400 Bad Request:服务器端无法理解客户端发送的请求,请求报文中可能存在语法错误。

401 Unauthorized:该状态码表示发送的请求需要有通过HTTP认证(BASIC认证,DIGEST认证)的认证信息。

403 Forbidden:不允许访问那个资源。该状态码表明对请求资源的访问被服务器拒绝了。(权限,未授权IP等)

404 Not Found:服务器上没有请求的资源。路径错误等。

5XX——服务器本身发生错误

500 Internal Server Error:貌似内部资源出故障了。该状态码表明服务器端在执行请求时发生了错误。也有可能是web应用存在bug或某些临时故障。

503 Service Unavailable:抱歉,我现在正在忙着。该状态码表明服务器暂时处于超负载或正在停机维护,现在无法处理请求。

2.3 文件传输协议FTP

了解即可, 详细内容可以去阅读 《TCP/IP详解1 : 协议》 第27章FTP:文件传送协议

  • 文件传送协议FTP ( File Transfer Protocol)提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。

由F T P提供的文件传送是将一个完整的文件从一个系统复制到另一个系统中。要使用F T P,就需要有登录服务器的注册帐号,或者通过允许匿名F T P的服务器来使用

  • FTP是基于客户/服务器(C/S)的协议。
  • 用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。
  • 依照 FTP协议提供服务,进行文件传送的计算机就是FTP服务器。
  • 连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。

FTP传输模式

  1. 文本模式:ASCIl模式,以文本序列传输数据;
  2. 二进制模式: Binary模式,以二进制序列传输数据。

工作原理

2.4 Emil

与普通邮件一样,电子邮件是一种异步通信媒介,即当人们方便时就可以收发邮件不必与他人的计划进行协调。与普通邮件相比,电子邮件更为快速并且易于分发,而且价格便宜。

现代电子邮件具有许多强大的特性,包括具有附件、超链接、HTML格式文本和图片的报文。

1.信息格式

2.组成结构

3.SMTP协议

SMTP用于从发送方的邮件服务器发送报文到接收方的邮件服务器。

原始的SMTP协议的报文使用ASCII编码, 不能表示更多的字符, 扩展后的SMTP协议使用Base64编码, 可以表示更多的字符

authentication - Why need base64 in smtp - Stack Overflow

PKI - 电子邮件传输算法 - Base64 - 二进制的可视化展示_阿湯哥的博客-CSDN博客_邮件报文二进制换算

  • SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息。
  • 负责发送邮件的SMTP进程就是SMTP客户,负责接收邮件的进程就是SMTP服务器。
  • SMTP规定了14条命令(几个字母)和21种应答信息(三位数字代码+简单文字说明)。

下面来看一个简单的例子

  • Aice调用她的邮件代理程序并提供Bob的邮件地址(例如bob.@someschool…edu),撰写报文,然后指示用户代理发送该报文。
  • Alice的用户代理把报文发给她的邮件服务器,在那里该报文被放在报文队列中。
  • 运行在Alice的邮件服务器上的SMTP客户端发现了报文队列中的这个报文,它就创建一个到运行在Bob的邮件服务器上的SMTP服务器的TCP连接。
  • 在经过一些初始SMTP握手后,SMTP客户通过该TCP连接发送Alice的报文
  • 在Bob的邮件服务器上,SMTP的服务器端接收该报文。Bob的邮件服务器然后将该报文放入Bob的邮箱中。
  • 在Bob方便的时候,他调用用户代理阅读该报文。

SMAP通信的三个阶段

与HTTP的对比

SMTP从一个邮件服务器向另一个邮件服务器传送文件(即电子邮件报文)。

当进行文件传送时,持续的HTTP和SMTP都使用持续连接。因此,这两个协议有一些共同特征。

区别

  1. HTTP主要是一个拉协议(pull protocol),即在方便的时候,某些人在Wb服务器上装载信息,用户使用HTTP从该服务器拉取这些
    信息。特别是TCP连接是由想接收文件的机器发起的。而SMTP基本上是一个推协议(push protocol), 即发送邮件服务器把文件推向接收邮件服务器。特别是,这个TCP连接是由要发送该文件的机器发起的。
  2. SMTP要求每个报文(包括它们的体)使用7比特ASCI码格式。如果某报文包含了非7比特ASCI字符(如具有重音的法文字
    符)或二进制数据(如图形文件),则该报文必须按照7比特ASCI码进行编码。HTTP数据则不受这种限制。
  3. 在处理一个既包含文本又包含图形(也可能是其他媒体类型)的文档时, HTTP把每个对象封装到它自己的HTTP响应报文中,而SMTP则把所有报文对象放在一个报文之中。

4. MIME

SMTP的缺点:

  1. SMTP不能传送可执行文件或者其他二进制对象。
  2. SMTP仅限于传送7位ASC码,不能传送其他非英语国家的文字。
  3. SMTP服务器会拒绝超过一定长度的邮件。

5. 邮局协议POP3

6. 国际报文存取协议 IMAP

  • IMAP协议比POP协议复杂。当用户PC上的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。
  • IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分(先看正文,有WiFi的时候再下载附件)。

2.5 DNS系统

1.DNS提供的服务

==DNS服务的作用 : 将域名解析成IP地址。==

IP地址标识主机、路由器 , 但IP地址不好记忆,不便人类使用(没有意义) , 人类一般倾向于使用一些有意义的字符串来标识 Internet上的设备

  • 例如:qzheng@ustc.edu.cn
    所在的邮件服务器 www.ustc.edu.cn 所在的web服务器

存在着“字符串”—IP地址的转换的必要性 , 人类用户提供要访问机器的“字符串”名称

计算机网络里有一种应用专门提供这样的服务,它就是DNS(Domain Name System)域名系统DNS是一个由分层的DNS服务器组成的分布式数据库和一个使得主机可以查询分布式数据库的应用层协议组成;

2.DNS工作机理概述

首先,DNS使用UDP作为其传输层协议;DNS服务使用53端口;

当主机上的DNS客户端收到一个转换请求时,客户端将向网络发送一个DNS查询报文,然后客户端将收到一个包含相关信息的DNS回答报文,这个报文里有客户端想要的内容,之后DNS客户端将IP地址返回给请求的提出者即可。

从使用DNS服务的请求者来看,DNS就像一个简单的提供直接转换服务的黑盒子,实际上这个黑盒子非常复杂,由分布在全球的大量DNS服务器以及定义DNS服务器和查询主机之间如何通信的应用层协议组成;

DNS采用分布式的设计方案实际上,DNS是一个在因特网实现分布式数据库的精彩范例!而之所以这样做,是因为,单一的DNS服务器无法解决单点故障、无法保证通信容量以及无法临近所有的查询主机和维护困难等问题

根DNS服务器

因特网上有13个根DNS服务器,大部分分布在北美洲,尽管我们可以将这13个根DNS服务器视为单个的服务器,但是每台服务器实际上是一个冗余的计算机网络以提供安全性和可靠性;

顶级域DNS服务器

负责顶级域名,如com,org,net,edu,gov以及各个国家的顶级域名的转换。

权威DNS服务器

因特网上,具有公共可访问主机的每个组织机构必须公共可访问的DNS记录,这些记录将主机名映射为IP地址。一个组织的权威DNS服务器收藏了这些DNS记录,多数大学和大公司实现和维护它们自己的基本和辅助(备份)权威DNS服务器;当然,也可以通过付费的方式,将相关的信息插入到其它权威服务器中;

除了上面三种DNS服务器,还有一种不在DNS层次结构之中,但是很重要的DNS,是本地DNS服务器本地DNS服务器通常邻近其所在网络的其他主机。

当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将请求转发到DNS服务器层次结构中。

DNS缓存

DNS缓存实际上是为了盖上时延性能并且减少在因特网上传输的DNS报文数量而引入的。

DNS缓存原理十分简单,每当DNS服务器发出请求后收到回答时,就将回答的内容缓存在它自己的主机空间上。这样,如果有相同的请求到达时,就不需要再去发出请求,直接使用缓存即可;

因为有了缓存,本地DNS就可以直接提供一些经常被访问的主机名所对应的IP地址,而不需要询问根DNS服务器了。

需要注意的是,缓存不可避免的一个问题:有效时间如果缓存过时而未得到更新,那么就会导致一些请求失败。

3.DNS记录和报文

共同实现分布式数据库的所有DNS服务器存储了资源记录(Resource Record)。而RR提供了主机名到IP地址的映射信息;一条RR是具有一下字段的4元组:(name, value, type, TTL);其中TTL是指该记录的生存时间,它决定了该条记录何时被删除。

首先看看type,type有4种取值,包括:A、NS、CNAME、MX等:

  • type=A:则name为主机名,value为对应的IP地址;
  • type=NS:则name为域,value为如何获得该域下主机IP地址的权威DNS服务器的主机名;
  • type=CNAME:则value为name(本身为主机别名)所对应的主机的规范主机名;
  • type=MX:则value为那么所对应的邮件服务器的规范主机名;

举例

腾讯云域名解析控制台

其中A的记录值为 服务器 IP , CNAME 记录的值为 *****.github.io

这里我的域名是dhx.icu , 那么直接访问 adorabled4.github.io 以及dhx.icu都是一样的

如果为了获得邮件服务器的规范主机名,请求一条MX记录;为了获得其它服务器的规范主机名,请求一条CNAME记录

所以如果一条记录为type=A,则它直接包含了需要的信息;

如果是NS,需要进一步得到权威DNS服务器的IP地址(同时返回一条NS记录,并返回一条以该NS记录的value值为name的A记录)希望得到一条A记录;

而type=CNAME和MX的记录则实现了主机别名到主机规范名的转换,可以通过该规范名继续构建查询链条,直到获得希望的IP地址;

DNS报文

DNS报文有两种,即查询报文回答报文,并且两种报文有着相同的结构:
DNS报文结构:

前12字节为首部区域。标识符是一个用来标记该查询的16比特数。该标志符会被复制到相应的回答报文里,以便匹配请求和回答;
标志字段有若干标志,用来指出报文的类型(请求还是响应)、查询类型(递归还是迭代)、是否是所请求名字的权威DNS服务器、以及4个有关数量的字段,用来指示4类数据区域出现的数量;
问题区域包含了正在进行的查询信息,包括名字字段、查询类型;
回答区域包含了对最初请求的名字的资源记录,回答报文的回答区域可以包含多条RR,因此一个主机名能有多个IP地址;
权威区域包含了其他权威服务器的信息;
附加区域包含了其它有帮助的记录,比如在对于一个MX类型的请求回答报文里,回答区域里指出了邮件服务器的规范主机名,而附加区域里就有可能包含一个类型为A的关于该规范主机名的的IP地址;

向DNS数据库中插入数据
需要在注册登记机构完成这一任务,当你注册一个域名时,需要向该机构提供你的基本和辅助DNS服务器的名字和IP地址;该注册机构将确保一个类型为NS和类型为A的记录输入对应的顶级域名服务器;这样就完成了插入数据

4.域名与域名解析过程

  • com有一个点,就是 根

域与物理网络无关

  • 域遵从组织界限,而不是物理网络
    • 一个域的主机可以不在一个网络
      一个网络的主机不一定在一个域
  • 域的划分是逻辑的,而不是物理的

与主机的所在地无关 , 比如在同一个网络的主机可以属于不同的域

子域的命名划分由上一级决定

域名解析主要有两种方法: ①递归(靠别人)②迭代(靠自己)

2.6 P2P应用

人人为我 , 我为人人

  • 性能更高,

对总是打开的基础设施服务器没有依赖,成对间歇连接的主机之间相互通信。

有两种典型因特网应用十分适合P2P体系结构,一种是文件分发(BitTorrent)

另一种是大型对等方社区中的数据库;我们将探讨分布式散列表 ( Distributed Hash Table )的概念。

P2P体系结构有着良好的自扩展性。这种扩展性的直接成因是:对等方除了比特的消费者之外还是他们的重新分发者

1. P2P文件分发(BitTorrent)

BitTorrent 是一种用于文件分发的流行P2P协议;

用BitTorrent的术语来说,参与一个特定文件分发的所有对等方的集合被称为一个洪流;

在一个洪流中的对等方彼此下载等长度的文件块;

当一个对等方下载文件块的时候,也向其他对等方发送了多个块;

一旦某对等方获得了完整文件,就可以自私地离开洪流或者大公无私地留下来继续向其他对等方发送文件.

P2P文件共享协议,参与一个特定文件分发的所有对等方结合被称为一个洪流(torrent),在一个洪流的对等方彼此下载等长度的文件块,可以随时离开洪流,也可继续向其他对等方上载。每个洪流都有一个追踪器。
Alice加入某洪流时,会在追踪器里进行注册,周期性通知追踪器它仍在洪流中。我们称所有与ALICE成功的创建了一个TCP链接的对等方成为邻近对等方。
洪流随机从参与对等方的结合中选择一个子集,将他们的IP地址发给Alice,Alice维护这张对等方列表,试图与所有对等方建立并行的TCP连接。
Alice周期询问每个邻近对等方(连上的)他们有的文件块列表,她随时知道邻居有哪些文件块
Alice使用最稀缺优先技术,首先请求那些邻居们副本数量最少的块,使该文件块迅速分发,以均衡每个块在洪流中的副本数量
BitTorrent使用一种算法,Alice优先从像她传时速度最快的邻居(4个,每10s修改一次)那里获取文件块。
每过30s,Alice也要随机选择另外一个对等方Bob,向他发送块。若Alice是Bob最快的前四快,Bob也是Alice的前4快,则Bob和Alice互相发送数据。
每过30s换一个新的对象,互相交换数据(一报还一报),为了使对等方能够找到彼此协调的速率上传

2. 分布式散列表(DHT)

分布式、P2P版本的key-value数据库,在大量对等方上存储key-value值(键值对)
分布式数据库用来定位拥有某key-value的对等方,然后向查询方返回该键值对
使用散列函数把每个键映射为[0,-1]之间的一个整数。
把(键,值)对存储在最邻近对等方那里。比如有8个对等方,标识符为1,3,4,5,8,10,12和15。因此将(11,“wangwenxuan")存储在12上。
环形DHT。(就是环形)。为了防止放松的报文太多了,还可以可以增加捷径,使每个对等方不仅仅联系直接前驱和直接后继。
对等方扰动。对等方可能忽然离开或到来。为了处理对等方扰动。我们要求每个对等方联系第一个和第二个后继。周期性的证实他们俩是活着的。