1.计算机网络基础

1.计算机网络基础

1.1、理解计算机网络的定义,掌握计算机网络常见的分类

计算机网络是一些互相连接的、能够共享资源又相互自治的计算机的集合。

【分类】
(1)从网络的作用范围进行分类:
局域网 LAN (Local Area Network) :在某一区域内由多台计算机互联成的计算机组。一般是方圆几千米以内。
城域网 MAN (Metropolitan Area Network):在一个城市范围内所建立的计算机通信网,简称MAN。属宽带局域网。
广域网 WAN (Wide Area Network):又称广域网、外网、公网。是连接不同地区局域网或城域网计算机通信的远程网。

(2)从网络的使用者进行分类:公用网 (public network)、 专用网 (private network)

(3)用来把用户接入到因特网的网络 :本地接入网 、居民接入网

1.2、了解计算机网络发展的三个阶段

1)第一阶段是从单个网络ARPANET向互联网发展的过程。
2)第二阶段的特点是建成三级结构的因特网。
3)第三阶段的特点是逐渐形成了多层次ISP结构的因特网。

1.3、掌握计算机网络的性能指标

  1. 速率 2.带宽 3.吞吐量 4.时延 5.利用率 6带宽线路

(1)比特(bit)是计算机中的数据的最小单元,它也是信息量的度量单位。网络技术中的速率是指在信道上(或一段链路上)能够传送的数字信号的速率,即数据率或比特率。速率的单位就是比特每秒(bit/s)。
(2)“带宽”(bandwidth)本来是指信号具有的频带宽度,单位是赫(或千赫、兆赫、吉赫等)。现在“带宽”是数字信道所能传送的“最高数据率”的同义语,单位是“比特每秒”,或 b/s (bit/s)。
(3)吞吐量:单位时间内通过某个网络的数据量。吞吐量受到网络的带宽或网络额定速率的限制。有时吞吐量还可用每秒传送的字节数或帧数来表示。
(4)数据经历的总时延就是发送时延、传播时延、处理时延和排队时延之和:
在这里插入图片描述
(5)信道利用率:某信道有百分之几的时间是被利用的(即有数据通过)。网络利用率:全网络的信道利用率的加权平均值。
(6)宽带线路:可通过较高数据率的线路。宽带是相对的概念,并没有绝对的标准。在目前,对于用户接入到因特网的用户线来说,每秒传送几个兆比特就可以算是宽带速率。

1.4、了解因特网的组成:边缘部分(资源子网)、核心部分(通信子网)

客户 (client) 和服务器 (server) 都是指通信中所涉及的两个应用进程。客户服务器方式所描述的是进程之间服务和被服务的关系。 客户是服务请求方,服务器是服务提供方。客户向服务器主动发出请求,服务器等待处理请求。

1.5、掌握客户/服务器模式工作原理

计算机网络的体系结构(architecture)是计算机网络的各层及其协议的集合。
TCP/IP 是四层的体系结构:应用层、运输层、网际层和网络接口层。
【分层的好处】
①各层之间是独立的。
②灵活性好。
③结构上可分割开。
④易于实现和维护。
⑤能促进标准化工作

1.6、了解计算机网络体系结构的形成、体会采用分层思想的必要性,了解其层次结构、分层的基本原则

协议是控制两个对等实体进行通信的规则的集合
协议是“水平的”,在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下层所提供的服务。
服务是“垂直的”,即服务是由下层向上层通过层间接口提供的

OSI的体系结构

应用层所有能产生网络流量的程序
表示层在传输之前是否进行加密或压缩处理
会话层查木马 CMD:netstat -n
传输层可靠传输、流量控制、不可靠传输
网络层负责选择最佳路径、规划IP地址
数据链路层帧的开始和结束、透明传输、差错校验
物理层接口标准、电器标准、如何在物理链路上传输更快

应用层
应用层是OSI的最高层,是网络与用户应用软件之间的接口。它直接通过给用户和管理者提供各类信息来为用户终端服务,如虚拟终端、文件传送、远程用户登录和电子数据交换及电子邮件等。

表示层
表示层因它的用途而得名,它为应用层提供数据,并负责数据转换和代码的格式化。一种成功的传输技术意味着在传输之前要将数据转换为标准的格式。表示层在网络内部实现不同语句格式和编码之间的转换和表示,为应用层提供服务。例如,数据的压缩和解压缩、加解密等工作都由表示层负责。表示层要能保证从一个系统的应用层传输过来的数据能够被另外一个系统的应用层识别。

会话层
会话层负责在网络中的两节点之间建立、维持和终止通信。会话层的功能包括:建立通信连接,保持会话过程通信连接的畅通,同步两个节点之间的对话,决定通信是否被中断,以及通信中断时决定从何处重新发送。

传输层
传输层通过通信线路,在不同机器之间进行程序和数据的交换。传输层的一个很重要的功能,是数据的分段和重组,这里的分段和重组,与网络层的分段和重组的两个不同的概念。网络层的分段是数据帧大小的减小,而传输层的分段是指把一个上层数据分割成一个个逻辑片或者物理片。

网络层
网络层传送的数据单位是分组。网络层的主要任务,是在通信子网中选择适当的路由。网络层将传输层生成的数据分段封装成分组,每个分组中都有控制信息,称为报头,其中含有源站点和目标站点的网络逻辑地址信息。根据分组的目的网络地址实现网络路由,确保数据及时传送。

数据链路层
数据链路层定义了如何让格式化数据进行传输,以及如何控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。

物理层
物理层是所有网络的基础。主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫作比特。

在OSI模型中,应用层实现用户与计算机的接口,高层负责主机之间应用程序的通信。OSI模型的高三层定义了终端系统中的应用程序将如何彼此进行通信,以及如何与用户通信,另外,高三层并不知道有关互联网或网络地址的任何信息,这是下四层的任务。低四层定义了如何通过物理电缆或通过交换机和路由器进行端到端的数据传输。

TCP/IP的体系结构

应用层(各种应用协议,如TELNET,FTP,SMTP等)
运输层(TCP或UDP)
网际层IP
网络接口层

在这里插入图片描述

五层协议的体系结构

应用层
运输层
网络层
数据链路层
物理层

1.7、掌握协议的概念及其层次、接口的含义

协议是控制两个对等实体进行通信的规则的集合
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。
要实现本层协议,还需要使用下层所提供的服务。
服务是“垂直的”,即服务是由下层向上层通过层间接口提供的

2.1、了解常用的网络传输介质及其特点

常用的网络传输介质:双绞线,同轴电缆,光纤。
10Base-T 10:传输速率 Base-基/宽带 T双绞线(2->200m细缆,5->500m粗缆,f->光纤)
双绞线绞合在一起,可以减少对相邻导线的电磁干扰。一般不超过100m
常用宽带接入技术:
非对称数字用户线ADSL,光纤同轴混合网HFC,FTTx

2.2、了解常用的宽带接入技术原理及特点

DSL(数字用户线)其前面的X表示在数字用户线上实现的不同方案。
ADSL非对称数字用户线(我国使用最广泛)
ADSL 的特点:上行和下行带宽做成不对称的。最大好处是可以利用现有电话网中的用户线,不需要重新布线。
ADSL 采用的技术是离散多音调 DMT (Discrete Multi-Tone)调制技术(FDMA的一种)。这里的“多音调”就是“多载波”或“多子信道”的意思。把 40 kHz 以上一直到 1.1 MHz 的高端频谱划分为许多的子信道,其中 25 个子信道用于上行信道,而 249 个子信道用于下行信道。

3.1、了解链路和数据链路的概念。

链路:一条无源的点到点的物理线路段,中间没有任何其他的交换结点。
数据链路:若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。

3.2、掌握封装成帧、透明传输、差错检测的策略

(点对点信道的数据链路层的协议数据单元——帧,每一种链路层协议都规定了帧的数据部分的长度上限——最大传送单元 MTU。)
(1)封装成帧——就是在一段数据的前后分别添加尾部和首部,这就构成了一个帧。
(2)透明传输——数据链路层协议允许所传送的数据可具有任意形式的比特组合。
数据部分恰好出现SOH(控制字符表开始)与EOT(控制字符表结束)一样的代码的解决办法((前面插入一个ESC),下面为PPP帧的:
1)字节填充 7E –> 7D 5E
例:一个ppp帧的数据部分(用十六进制写出)是7D 5E FE 27 7D 5D 7D 5D 65 7D 5E。试问真正的数据是什么(用十六进制写出)
2)零比特填充 连续5个1,立即填入一个0
例:PPP协议使用同步传输技术传送比特串0110111111111100。试问经过零比特填充后变成怎样的比特串?若接收端收到的PPP帧的数据部分是0001110111110111110110,问删除发送端加入的零比特后变成怎样的比特串?
(3)差错检测
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。
在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术。
仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受(accept)。

3.3、了解点对点PPP协议

现在全世界使用得最多的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。
PPP 协议最主要的特点 :简单;封装成帧 ;透明传输 ;支持多种网络层协议 ;多种类型链路 ;差错检测(不纠正差错)。
PPP 协议不需要的功能:纠错 ;流量控制 ;序号 ;多点线路;半双工或单工链路(只支持全双工);
字节填充(书第73页);零比特填充(书第74页);PPP协议状态图(书第75页)
在这里插入图片描述

3.4、掌握局域网中常见的标准拓扑结构

局域网的拓扑:星形网;总线网(主要使用);环形网;树形网
以太网是局域网的代名词。

3.5、理解并掌握局域网的体系结构IEEE802参考模型。掌握以太网V2的帧格式,了解其与802.3帧格式的区别

在这里插入图片描述
在这里插入图片描述

3.6、重点掌握载波监听多点接入/碰撞检测 CSMA/CD技术的实现原理。CSMA/Cd协议——是载波侦听多路访问/冲突检测 “多点接入”表示许多计算机以多点接入的方式连接在一根总线上。

“载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。
“碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
CSMA/CD发送流程可以概括为:“先听后发,边听边发,冲突停止、延迟重发”
步骤:(1)监听信道上是否有信号在传输,如果有的话,信道处于忙状态,继续监听,直到信号空闲
(2)若没有监听到任何信号,就传输数据
(3)传输的时候继续监听,如发现冲突,则执行退避算法,随机等待一段时间后,重复步骤1
(4)若未发送冲突则发送成功,所有计算机在试图再次发送数据之前,必须在最后一次发送后等待9.6微秒

4.1、了解网络层的功能及其服务

因特网网络层的功能:在通信主机之间传输分组,网络层协议必须在每一台主机和路由器上实现两项重要功能:(1)路径决策(2)交换: 在路由器的输入、输出端口传递分组
网络层提供的两种服务:虚电路服务(面向连接)与数据报服务(非面向连接)

4.2、理解路由选择的概念和分类;静态路由、动态路由

路由选择协议目标: 在收发双方的通信过程中为分组(所经由的一系列路由器中)确定一条“好” 的路径。
(1)动态路由:动态路由器上的路由表项是通过相互连接的路由器之间交换彼此信息,然后按照一定的算法优化出来的,而这些路由信息是在一定时间间隙里不断更新,以适应不断变化的网络,以随时获得最优的寻路效果。
(2)静态路由:静态路由是指由网络管理员手工配置的路由信息。当网络的拓扑结构或链路的状态发生变化时,网络管理员需要手工去修改路由表中相关的静态路由信息。

4.3、几种路由选择协议的基本原理

在这里插入图片描述

4.4、掌握IP地址的划分方法

在这里插入图片描述
在这里插入图片描述

4.5、划分子网、CIDR的原理

(1)RIP
RIP(路由信息协议)是应用较早、使用较普遍的内部网关协议(IGP),适用于小型同类网络的一个自治系统(AS)内的路由信息的传递。
RIP协议是基于距离矢量算法(Distance Vector Algorithms,DVA)的。它使用“跳数”,即metric来衡量到达目标地址的路由距离。
基本思想:路由器周期性地向其相邻路由器广播自己知道的路由信息,用于通知相邻路由器自己可以到达的网络以及到达该网络的距离,相邻路由器可以根据收到的路由信息修改和刷新自己的路由表,具体如下:
1)路由器启动时初始化自己的路由表,初始路由表中各路径的距离均为0
2)各路由器周期性地向其相邻的路由器广播自己的路由表信息
3)路由器收到其他路由器广播的路由信息后,刷新自己的路由表
(2)OSPF路由选择协议
1)OSPF路由选择协议以链路状态算法为基础
2)主要优势
收敛速度快
支持服务类型选路
提供负载均衡和身份认证
3)适用环境
规模庞大、环境复杂的互联网

4.6、熟悉IP、ARP、ICMP等网络层协议和应用的实现原理

(1)差错报告报文:目的不可达、源站抑制、超时、参数问题、改变路由
(2)查询报文:回送请求和应答、时间戳请求和应答、地址掩码请求和应答、路由器询问和通告
ICMP报文是在IP数据包内部被传输的。

5.1、理解传输层的基本功能

(1)运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。
(2)运输层还要对收到的报文进行差错检测。
(3)运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。

5.2、理解差错控制和流量控制技术,重点掌握流量控制与滑动窗口协议

【可靠传输的工作原理】
1、停等协议是一种最简单的差错控制和流量控制协议。其规定在发送一分组数据后便停止发送,等待收端的响应。根据接收端的不同响应,发送端进行不同的处理:
(1)接收端发回ACK确认分组,说明接收正常,发送端继续发下一分组;
(2)接收端发回NAK否认分组,说明发送端发送的数据有错,不予接收,发送端要重发数据分组。若多次有错,就要多次重发,直至接收正确
(3)发送的数据分组丢失,收端未接到信息,因此无任何响应发回。发送端根据超时设置确定超时后,再重发数据分组;
(4)接收端正确接收了数据分组后,发回响应分组,但响应分组丢失中途丢失。发送端也要根据定时设置,在超时时,重发数据分组。
可见,发送端的发送速度完全受控于接收端的响应分组。
接收端可以根据情况放慢接收速度或停止继续接收数据,就可达到流量控制的目的。
【流量控制】——调整发送信息的速率,接收结点能够及时处理它们的一个过程。
(1)TCP使用窗口机制进行流量控制
(2)什么是窗口?
连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端。接收方发送的确认信息中包含了自己剩余的缓冲区尺寸。剩余缓冲区空间的数量叫做窗口。
1)发送窗口。发送窗口是指发送方允许连续发送分组的序号表。发送方在不等待应答而连续发送的最大分组数称为发送窗口的尺寸。
2)接收窗口。接收窗口是指接收方允许接收分组的序号表。凡是发送到接收窗口内的分组,才能被接收方所接收,在窗口外的其它分组将被丢弃。
(TCP流量控制)窗口滑动。发送方每发送一分组,窗口便向前滑动一个格,直到发送分组数等于最大窗口数目时便停止发送。也就是说,窗口中能容纳的逻辑数据单元数,就是该窗口的大小。

5.3、掌握连续ARQ协议。

连续ARQ协议工作原理:
发送方发完一分组后,不必停下来等待对方的应答,可以连续发送若干分组;如果在发送过程中收到接收方的肯定应答,可以继续发送;若收到对其中某一分组的否认分组,则使用某种ARQ方式重发数据
优点:连续发送提高了信道利用率

5.4、熟悉TCP、UDP等运输层协议和应用的实现原理

TCP数据报
在这里插入图片描述
数据偏移:指的是数据部分离tcp报文段起始处的距离,即首部长度
序号:数据部分第一个字节的序号
确认号:接收端期望下次收到的数据中的第一个数字字节的序号。
URG:紧急位:表明此报文数据中有紧急数据,优先级较高,即使窗口为0也可以发送
ACK:确认位,只有ACK为1时,确认好ack才有效
PSH:推送位,收到就尽快向上层交付信息,不用等整个缓存填满。
RST:连接中出现错误,释放重新连接。
SYN:同步位;FIN:终止位
窗口:用来让对方设置发送窗口的依据(也就是自己的最大接受量)
在这里插入图片描述

5.5、重点掌握TCP三次握手四次挥手的基本过程。

怎样生动描述 TCP 的「三次握手」?
A:喂喂喂,能听到我吗?
B:没问题。能听到我说一声。
A:听到了
A:「 。。。」---------------------第一次握手
B:「你瞅啥?」----------------------第二次握手
A:「瞅你咋地?」 --------------------第三次握手
A:发起请求连接
B:确认,也发起连接
A:确认

四次挥手(连接终止协议)
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
(1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。
(2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
(3) 服务器关闭客户端的连接,发送一个FIN给客户端。
(4) 客户端发回ACK报文确认,并将确认序号设置为收到序号加1。
怎样生动描述 TCP 的「四次挥手」?
A:B 啊,我不想玩了
B:哦,你不想玩了啊,我知道了
这个时候,只是 A 不想玩了,即不再发送数据,但是 B 可能还有未发送完的数据,所以需要等待 B 也主动关闭。B的数据发送完后继续向A发送指令。
B:A 啊,好吧,我也不玩了,拜拜
A:好的,拜拜

在这里插入图片描述
断开的时候,当 A 说不玩了,就进入 FIN_WAIT_1 的状态,B 收到 A 不玩了的消息后,进入 CLOSE_WAIT 的状态。
A 收到 B 说知道了,就进入 FIN_WAIT_2 的状态,如果 B 直接跑路,则 A 永远处与这个状态。TCP 协议里面并没有对这个状态的处理,但 Linux 有,可以调整 tcp_fin_timeout 这个参数,设置一个超时时间。
如果 B 没有跑路,A 接收到 B 的不玩了请求之后,从 FIN_WAIT_2 状态结束,按说 A 可以跑路了,但是如果 B 没有接收到 A 跑路的 ACK 呢,就再也接收不到了,所以这时候 A 需要等待一段时间,因为如果 B 没接收到 A 的 ACK 的话会重新发送给 A,所以 A 的等待时间需要足够长。

5.6、重点掌握TCP拥塞控制算法

(TCP拥塞控制)解决拥塞的方法:
发送方保持两个窗口
接收窗口rwnd
拥塞窗口cwnd
取两者的最小值为发送的字节数

【如何确定拥塞窗口的大小】
慢速启动算法
在主机刚刚开始发送报文段时可先将拥塞窗口 cwnd 设置为一个最大报文段 MSS 的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个 MSS 的数值。用这样的方法逐步增大发送端的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。

◎慢开始和拥塞避免
在这里插入图片描述
指数增加,拥塞避免,超时回1(ssthresh门限值设置为超时窗口的一半)
在这里插入图片描述

6.1、了解应用层的服务和功能

应用层的许多协议都是基于客户服务器方式。客户是服务请求方,服务器是服务提供方。

6.2、熟悉WWW、FTP、TFTP、DNS、SMTP、POP、IMAP等主要应用层协议和应用的实现原理

◎WWW(world wide web)万维网,并不是什么特殊的计算机网络,只是一个信息储存的地方,是一个基于超文本协议的信息检索工具。
DNS(Domain Name System):域名系统 共有13套不同的IP地址根域名服务器
根域名服务器,顶级域名服务器,权限域名服务器,本地域名服务器
域名是用来标识网络上的主机,它与主机的IP地址相对应,一台主机可以有多个域名。
域名系统是分级的分布式数据库系统,用来查找域名与IP地址的对应关系。
查询域名的应用程序叫解析器(resolver),存储域名与IP地址对应关系的服务器叫名字服务器。
格式: 三级域名 . 二级域名 . 顶级域名
◎简单邮件传送协议 SMTP
SMTP 所规定的就是在两个相互通信的 SMTP 进程之间应如何交换信息。
由于 SMTP 使用客户服务器方式,因此负责发送邮件的 SMTP 进程就是 SMTP 客户,而负责接收邮件的 SMTP 进程就是 SMTP 服务器。------------>但是我们真正查看邮件采用的是POP3协议,这里只是服务器收到而已。
◎SMTP 通信的三个阶段:

  1. 连接建立:连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP不使用中间的邮件服务器。
  2. 邮件传送
  3. 连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接。

6.3、掌握DNS域名解析过程

网络通讯大部分是基于TCP/IP的,而TCP/IP是基于IP地址的,所以计算机在网络上进行通讯时只能识别如“202.96.134.133”之类的IP地址,而不能认识域名。我们无法记住10个以上IP地址的网站,所以我们访问网站时,更多的是在浏览器地址栏中输入域名,就能看到所需要的页面,这是因为有一个叫“DNS服务器”的计算机自动把我们的域名“翻译”成了相应的IP地址,然后调出IP地址所对应的网页。

DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示。
在这里插入图片描述
DNS是应用层协议,事实上他是为其他应用层协议工作的,包括不限于HTTP和SMTP以及FTP,用于将用户提供的主机名解析为ip地址。
具体过程如下:
①用户主机上运行着DNS的客户端,就是我们的PC机或者手机客户端运行着DNS客户端了
②浏览器将接收到的url中抽取出域名字段,即访问的主机名,比如http://.baidu.com/, 并将这个主机名传送给DNS应用的客户端
③DNS客户机端向DNS服务器端发送一份查询报文,报文中包含着要访问的主机名字段(中间包括一些列缓存查询以及分布式DNS集群的工作)
④该DNS客户机最终会收到一份回答报文,其中包含有该主机名对应的IP地址
⑤一旦该浏览器收到来自DNS的IP地址,就可以向该IP地址定位的HTTP服务器发起TCP连接

DNS服务的体系架构
DNS domain name system 主要作用就是将主机域名转换为ip地址
假设运行在用户主机上的某些应用程序(如Webl浏览器或者邮件阅读器)需要将主机名转换为IP地址。这些应用程序将调用DNS的客户机端,并指明需要被转换的主机名。(在很多基于UNIX的机器上,应用程序为了执行这种转换需要调用函数gethostbyname())。用户主机的DNS客户端接收到后,向网络中发送一个DNS查询报文。所有DNS请求和回答报文使用的UDP数据报经过端口53发送经过若干ms到若干s的延时后,用户主机上的DNS客户端接收到一个提供所希望映射的DNS回答报文。这个查询结果则被传递到调用DNS的应用程序。因此,从用户主机上调用应用程序的角度看,DNS是一个提供简单、直接的转换服务的黑盒子。但事实上,实现这个服务的黑盒子非常复杂,它由分布于全球的大量DNS服务器以及定义了DNS服务器与查询主机通信方式的应用层协议组成。
DNS的一种简单的设计模式就是在因特网上只使用一个DNS服务器,该服务器包含所有的映射,在这种集中式的设计中,客户机直接将所有查询请求发往单一的DNS服务器,同时该DNS服务器直接对所有查询客户机做出响应,尽管这种设计方式非常诱人,但他不适用当前的互联网,因为当今的因特网有着数量巨大并且在持续增长的主机,这种集中式设计会有单点故障,通信容量(上亿台主机发送的查询DNS报文请求,包括但不限于所有的HTTP请求,电子邮件报文服务器,TCP长连接服务),远距离的时间延迟(澳大利亚到纽约的举例),维护开销大(因为所有的主机名-ip映射都要在一个服务站点更新)等问题
DNS服务器一般分三种,根DNS服务器,顶级DNS服务器,权威DNS服务器。
在这里插入图片描述
使用分布式的层次数据库模式以及缓存方法来解决单点集中式的问题。
DNS 域的名称层次结构
在这里插入图片描述
DNS域名称空间的组织方式
在这里插入图片描述
DNS 和 Internet 域
互联网域名系统由名称注册机构负责维护分配由组织和国家/地区的顶级域在 Internet 上进行管理。 这些域名按照国际标准 3166。
在这里插入图片描述
资源记录
DNS 数据库中包含的资源记录 (RR)。 每个 RR 标识数据库中的特定资源。我们在建立DNS服务器时,经常会用到SOA,NS,A之类的记录,在维护DNS服务器时,会用到MX,CNAME记录。
在这里插入图片描述
解析顺序
1) 浏览器缓存
当用户通过浏览器访问某域名时,浏览器首先会在自己的缓存中查找是否有该域名对应的IP地址(若曾经访问过该域名且没有清空缓存便存在);
2) 系统缓存
当浏览器缓存中无域名对应IP则会自动检查用户计算机系统Hosts文件DNS缓存是否有该域名对应IP;
3) 路由器缓存
当浏览器及系统缓存中均无域名对应IP则进入路由器缓存中检查,以上三步均为客服端的DNS缓存;
4) ISP(互联网服务提供商)DNS缓存
当在用户客服端查找不到域名对应IP地址,则将进入ISP DNS缓存中进行查询。比如你用的是电信的网络,则会进入电信的DNS缓存服务器中进行查找;
5) 根域名服务器
当以上均未完成,则进入根服务器进行查询。全球仅有13台根域名服务器,1个主根域名服务器,其余12为辅根域名服务器。根域名收到请求后会查看区域文件记录,若无则将其管辖范围内顶级域名(如.com)服务器IP告诉本地DNS服务器;
6) 顶级域名服务器
顶级域名服务器收到请求后查看区域文件记录,若无则将其管辖范围内主域名服务器的IP地址告诉本地DNS服务器;
7) 主域名服务器
主域名服务器接受到请求后查询自己的缓存,如果没有则进入下一级域名服务器进行查找,并重复该步骤直至找到正确纪录;
8)保存结果至缓存
本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时将该结果反馈给客户端,客户端通过这个IP地址与web服务器建立链接。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
《Android开发艺术探索》是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。《Android开发艺术探索》从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层开发过程,融会贯通,介绍一些比较深入的知识点;第三,介绍一些核心技术和Android的性能优化思想。 《Android开发艺术探索》侧重于Android知识的体系化和系统工作机制的分析,通过《Android开发艺术探索》的学习可以极大地提高开发者的Android技术水平,从而更加高效地成为高级开发者。而对于高级开发者来说,仍然可以从《Android开发艺术探索》的知识体系中获益。 《Android开发艺术探索》是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。《Android开发艺术探索》从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层开发过程,融会贯通,介绍一些比较深入的知识点;第三,介绍一些核心技术和Android的性能优化思想。, 《 Android开发艺术探索》侧重于Android知识的体系化和系统工作机制的分析,通过《Android开发艺术探索》的学习可以极大地提高开发者的Android技术水平,从而更加高效地成为高级开发者。而对于高级开发者来说,仍然可以从《Android开发艺术探索》的知识体系中获益。
本书是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。本书从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层开发过程,融会贯通,介绍一些比较深入的知识点;第三,介绍一些核心技术和Android的性能优化思想。 第1章 Activity的生命周期和启动模式 1 1.1 Activity的生命周期全面分析 1 1.1.1 典型情况下的生命周期分析 2 1.1.2 异常情况下的生命周期分析 8 1.2 Activity的启动模式 16 1.2.1 Activity的LaunchMode 16 1.2.2 Activity的Flags 27 1.3 IntentFilter的匹配规则 28 第2章 IPC机制 35 2.1 Android IPC简介 35 2.2 Android中的多进程模式 36 2.2.1 开启多进程模式 36 2.2.2 多进程模式的运行机制 39 2.3 IPC基础概念介绍 42 2.3.1 Serializable接口 42 2.3.2 Parcelable接口 45 2.3.3 Binder 47 2.4 Android中的IPC方式 61 2.4.1 使用Bundle 61 2.4.2 使用文件共享 62 2.4.3 使用Messenger 65 2.4.4 使用AIDL 71 2.4.5 使用ContentProvider 91 2.4.6 使用Socket 103 2.5 Binder连接池 112 2.6 选用合适的IPC方式 121 第3章 View的事件体系 122 3.1 View基础知识 122 3.1.1 什么是View 123 3.1.2 View的位置参数 123 3.1.3 MotionEvent和TouchSlop 125 3.1.4 VelocityTracker、GestureDetector和Scroller 126 3.2 View的滑动 129 3.2.1 使用scrollTo/scrollBy 129 3.2.2 使用动画 131 3.2.3 改变布局参数 133 3.2.4 各种滑动方式的对比 133 3.3 弹性滑动 135 3.3.1 使用Scroller 136 3.3.2 通过动画 138 3.3.3 使用延时策略 139 3.4 View的事件分发机制 140 3.4.1 点击事件的传递规则 140 3.4.2 事件分发的源码解析 144 3.5 View的滑动冲突 154 3.5.1 常见的滑动冲突场景 155 3.5.2 滑动冲突的处理规则 156 3.5.3 滑动冲突的解决方式 157 第4章 View的工作原理 174 4.1 初识ViewRoot和DecorView 174 4.2 理解MeasureSpec 177 4.2.1 MeasureSpec 177 4.2.2 MeasureSpec和LayoutParams的对应关系 178 4.3 View的工作流程 183 4.3.1 measure过程 183 4.3.2 layout过程 193 4.3.3 draw过程 197 4.4 自定义View 199 4.4.1 自定义View的分类 200 4.4.2 自定义View须知 201 4.4.3 自定义View示例 202 4.4.4 自定义View的思想 217 第5章 理解RemoteViews 218 5.1 RemoteViews的应用 218 5.1.1 RemoteViews在通知栏上的应用 219 5.1.2 RemoteViews在桌面小部件上的应用 221 5.1.3 PendingIntent概述 228 5.2 RemoteViews的内部机制 230 5.3 RemoteViews的意义 239 第6章 Android的Drawable 243 6.1 Drawable简介 243 6.2 Drawable的分类 244 6.2.1 BitmapDrawable 244 6.2.2 ShapeDrawable 247 6.2.3 LayerDrawable 251 6.2.4 StateListDrawable 253 6.2.5 LevelListDrawable 255 6.2.6 TransitionDrawable 256 6.2.7 Ins
目录 第1章 Activity的生命周期和启动模式 / 1 1.1 Activity的生命周期全面分析 / 1 1.1.1 典型情况下的生命周期分析 / 2 1.1.2 异常情况下的生命周期分析 / 8 1.2 Activity的启动模式 / 16 1.2.1 Activity的Launch Mode / 16 1.2.2 Activity的Flags / 27 1.3 Intent Filter的匹配规则 / 28 第2章 IPC机制 / 35 2.1 Android IPC简介 / 35 2.2 Android中的多进程模式 / 36 2.2.1 开启多进程模式 / 36 2.2.2 多进程模式的运行机制 / 39 2.3 IPC基础概念介绍 / 42 2.3.1 Serializable接口 / 42 2.3.2 Parcelable接口 / 45 2.3.3 Binder / 47 2.4 Android中的IPC方式 / 61 2.4.1 使用Bundle / 61 2.4.2 使用文件共享 / 62 2.4.3 使用Messenger / 65 2.4.4 使用AIDL / 71 2.4.5 使用 Content Provider / 91 2.4.6 使用Socket / 103 2.5 Binder连接池 / 112 2.6 选用合适的IPC方式 / 121 第3章 View的事件体系 / 122 3.1 View基础知识 / 122 3.1.1 什么是View / 123 3.1.2 View的位置参数 / 123 3.1.3 Motion Event和Touch Slop / 125 3.1.4 VelocityT racker、Gesture Detector和Scroller / 126 3.2 View的滑动 / 129 3.2.1 使用scroll To/scroll By / 129 3.2.2 使用动画 / 131 3.2.3 改变布局参数 / 133 3.2.4 各种滑动方式的对比 / 133 3.3 弹性滑动 / 135 3.3.1 使用Scroller / 136 3.3.2 通过动画 / 138 3.3.3 使用延时策略 / 139 3.4 View的事件分发机制 / 140 3.4.1 点击事件的传递规则 / 140 3.4.2 事件分发的源码解析 / 144 3.5 View的滑动冲突 / 154 3.5.1 常见的滑动冲突场景 / 155 3.5.2 滑动冲突的处理规则 / 156 3.5.3 滑动冲突的解决方式 / 157 第4章 View的工作原理 / 174 4.1 初识View Root和Decor View / 174 4.2 理解Measure Spec / 177 4.2.1 Measure Spec / 177 4.2.2 Measure Spec和Layout Params的对应关系 / 178 4.3 View的工作流程 / 183 4.3.1 measure过程 / 183 4.3.2 layout过程 / 193 4.3.3 draw过程 / 197 4.4 自定义View / 199 4.4.1 自定义View的分类 / 200 4.4.2 自定义View须知 / 201 4.4.3 自定义View示例 / 202 4.4.4 自定义View的思想 / 217 第5章 理解Remote Views / 218 5.1 Remote Views的应用 / 218 5.1.1 Remote Views在通知栏上的应用 / 219 5.1.2 Remote Views在桌面小部件上的应用 / 221 5.1.3 Pending Intent概述 / 228 5.2 Remote Views的内部机制 / 230 5.3 Remote Views的意义 / 239 第6章 Android的Drawable / 243 6.1 Drawable简介 / 243 6.2 Drawable的分类 / 244 6.2.1 Bitmap Drawable / 244 6.2.2 Shape Drawable / 247 6.2.3 Layer Drawable / 251 6.2.4 State List Drawable / 253 6.2.5 Level List Drawable / 255 6.2.6 Transition Drawable / 256 6.2.7 Inset Drawable / 257 6.2.8 Scale Drawable / 258 6.2.9 Clip Drawable / 260 6.3 自定义Drawable / 262 第7章 Android动画深入分析 / 265 7.1 View动画 / 265 7.1.1 View动画的种类 / 265 7.1.2 自定义View动画 / 270 7.1.3 动画 / 272 7.2 View动画的特殊使用场景 / 273 7.2.1 LayoutAnimation / 273 7.2.2 Activity的切换效果 / 275 7.3 属性动画 / 276 7.3.1 使用属性动画 / 276 7.3.2 理解插值器和估值器 / 280 7.3.3 属性动画的监听器 / 282 7.3.4 对任意属性做动画 / 282 7.3.5 属性动画的工作原理 / 288 7.4 使用动画的注意事项 / 292 第8章 理解Window和Window Manager / 294 8.1 Window和Window Manager / 294 8.2 Window的内部机制 / 297 8.2.1 Window的添加过程 / 298 8.2.2 Window的删除过程 / 301 8.2.3 Window的更新过程 / 303 8.3 Window的创建过程 / 304 8.3.1 Activity的Window创建过程 / 304 8.3.2 Dialog的Window创建过程 / 308 8.3.3 Toast的Window创建过程 / 311 第9章 四大组件的工作过程 / 316 9.1 四大组件的运行状态 / 316 9.2 Activity的工作过程 / 318 9.3 Service的工作过程 / 336 9.3.1 Service的启动过程 / 336 9.3.2 Service的绑定过程 / 344 9.4 Broadcast Receiver的工作过程 / 352 9.4.1 广播的注册过程 / 353 9.4.2 广播的发送和接收过程 / 356 9.5 Content Provider的工作过程 / 362 第10章 Android的消息机制 / 372 10.1 Android的消息机制概述 / 373 10.2 Android的消息机制分析 / 375 10.2.1 Thread Local的工作原理 / 375 10.2.2 消息队列的工作原理 / 380 10.2.3 Looper的工作原理 / 383 10.2.4 Handler的工作原理 / 385 10.3 主线程的消息循环 / 389 第11章 Android的线程和线程池 / 391 11.1 主线程和子线程 / 392 11.2 Android中的线程形态 / 392 11.2.1 Async Task / 392 11.2.2 Async Task的工作原理 / 395 11.2.3 Handler Thread / 402 11.2.4 Intent Service / 403 11.3 Android中的线程池 / 406 11.3.1 Thread Pool Executor / 407 11.3.2 线程池的分类 / 410 第12章 Bitmap的加载和Cache / 413 12.1 Bitmap的高效加载 / 414 12.2 Android中的缓存策略 / 417 12.2.1 Lru Cache / 418 12.2.2 Disk Lru Cache / 419 12.2.3 Image Loader的实现 / 424 12.3 Image Loader的使用 / 441 12.3.1 照片墙效果 / 441 12.3.2 优化列表的卡顿现象 / 446 第13章 综合技术 / 448 13.1 使用Crash Handler来获取应用的crash信息 / 449 13.2 使用multidex来解决方法数越界 / 455 13.3 Android的动态加载技术 / 463 13.4 反编译初步 / 469 13.4.1 使用dex2jar和jd—gui反编译apk / 470 13.4.2 使用apktool对apk进行二次打包 / 470 第14章 JNI和NDK编程 / 473 14.1 JNI的开发流程 / 474 14.2 NDK的开发流程 / 478 14.3 JNI的数据类型和类型签名 / 484 14.4 JNI调用Java方法的流程 / 486 第15章 Android性能优化 / 489 15.1 Android的性能优化方法 / 490 15.1.1 布局优化 / 490 15.1.2 绘制优化 / 493 15.1.3 内存泄露优化 / 493 15.1.4 响应速度优化和ANR日志分析 / 496 15.1.5 List View和Bitmap优化 / 501 15.1.6 线程优化 / 501 15.1.7 一些性能优化建议 / 501 15.2 内存泄露分析之MAT工具 / 502 15.3 提高程序的可维护性 / 506

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值