速率是指:单位时间传输的比特数。单位为bit/s。java
在计算机中,带宽是某通道的最高数据传输速率。单位是bit/s。算法
表示单位时间内经过某个网络的实际的数据量。缓存
指数据从网络的一端传输到另外一端须要的时间。分为发送时延(传输时延),传播时延,处理时延和等待时延。服务器
发送时延指:主机或路由器发送数据帧所须要的时间。也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。计算公式为:
\[ 发送时延= \frac{数据帧长度}{发送速率} \]
传播时延:电磁波在信道中传播必定距离须要花费的时间。与信道长度和电磁波在信道上的传播速率有关。网络
处理时延:主机或路由器在收到分组时须要花费必定的时间进行处理。例如分析首部,提取数据,查找路由等。socket
排队时延:分组在进入路由器后,要先在输入队列中排队等待。tcp
总时延 = 发送时延+传播时延+排队时延+处理时延性能
物理层、数据链路层、网络层、传输层、应用层。学习
将应用层分解为会话层、表示层和应用层。测试
应用层:经过进程间的交互来完成特定的网络应用。应用层协议有:HTTP,DNS,SMTP等。
传输层:向两台主机中的进程直接的通讯提供通用的数据传输服务。主要协议有:TCP和UDP。
网络层:为分组交换网上的不一样主机提供通讯服务。在发送数据时,网络层把运输层的报文段或用户数据报封装成分组或包进行传送。简称数据报。网络层的另外一个任务是选择合适的路由,使源主机运输层所传下来的分组,可以经过网络中的路由器找到目的主机。
数据链路层:在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻结点间的链路上传送帧。每一帧包括数据和必要的控制信息(同步信息,差错控制信息)。
只有物理层不加控制信息。
数据链路层使用的信道主要有:
用于解决分组在一个网络中传输到另外一个设备或者路由器的问题(局域网中传输)。
数据链路层的三个基本问题:封装成帧,透明传输和差错控制。
封装成帧:每一个帧的组成包括:帧首部、帧的数据部分(IP数据报)、帧尾部。其中,帧的数据部分的最大长度称为最大传输单元 MTU。帧首部和帧尾部的字符称为控制字符,SOH,EOT。
透明传输:当数据部分存在和控制字符相同的字符时,就不是透明传输了,此时,数据链路层会自动在数据部分的字符前面插入转义字符ESC,对应的值为0X1B。此种方法称为字符填充。若是数据部分出现转义字符,则再插入一个转义字符。
差错控制:在传输过程当中,一些比特的值被改变。数据链路层经过CRC 循环冗余校验码进行检错。
设备要联网时,用ppp协议和ISP进行通讯,获取ip地址,从而上网。
设备经过网卡或适配器与局域网链接。
集线器仅仅上物理上拓展了局域网规模,属于物理层设备。仅仅起到转发的做用,没有碰撞检测。当有两个接口同时接收到信号时,会产生碰撞。
占48位。可看做每台计算机的物理地址。是计算机的惟一标识。其实就是适配器的地址,或网卡地址。
mac帧最小长度为64位。其中 ip 数据报的最小长度为46位。
数据链路层扩展局域网的方法是使用交换机。交换机有一个地址表,里面存放的是MAC地址和端口之间的映射关系。交换机是经过自学习算法来创建地址表的。
网络层向传输层提供简单灵活的,无链接的尽最大努力交付的数据报服务。
网络再发送分组时不须要先创建链接。每个分组独立发送,与先后的分组无关。
与 IP 协议配套使用的还有三个协议:
网络中使用的中间设备有:
当中间设备是转发器或网桥时,这仅仅是把一个网络扩大了,而从网络层的角度看,这仍然是一个网络,通常并不称之为网络互联。网关因为比较复杂,目前使用的较少。
IPv4地址有32位,分为4段,每段8位。IP地址的编址方法共经历过三个历史阶段。
A,B和C类IP地址的主机号可取值不能为全0和全1,全0主机号为本主机,全1主机号位表示本网络号中的全部主机,广播地址。
A类地址的网络号不能为全0和全1。全0为本网络,全1为回环测试。
B类的网络号不能为128.0.0.0;最小的网络号为128.1.0.0。因此网络号要减1。
C类的网络号可取的21位也不能为全0.网络号也要减1。
路由器仅根据目的主机所链接的网络号来转发分组,这样可使路由表中的项目数大幅度减小,从而减少了路由表所占的存储空间和查找路由表的时间。
ip地址是标记一台主机和一条链路的接口。当一台主机同时链接到两个网络上时,该主机必须具有两个相应的ip地址,其网络号必须不一样。因为路由器至少链接到两个网络,所以一个路由器至少应当有两个不一样的ip地址。同时具有两个mac地址。
数据在网络中传输时,数据中的源ip和目的IP不会改变,可是源MAC和目的MAC会一直改变。
由 ip 地址查询 MAC 地址。因为 ip 协议使用 arp 协议,因此,一般将 arp协议划归为网络层。但 ARP 协议的用途是为了从网络层使用的 ip 地址,解析出在数据链路层使用的MAC 地址。
每一台主机有一个 ARP高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。下面是主机如何创建映射表的过程。
当主机A要向本局域网上的主机 B 发送数据时,先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。若有,就在 ARP 高速缓存中查出对应的 MAC 地址,再把这个硬件地址写入 MAC 帧。经过局域网把 MAC 帧发往主机B。
当没法查到 B的 MAC 地址时,主机A自动运行ARP:
请注意,ARP时解决同一个局域网中的主机或路由器的IP地址和MAC地址的映射问题。若是要找的主机和源主机再也不同一个局域网上,就没法解析出另外一个局域网中主机的MAC地址。此时,主机会将第一跳路由的MAC地址做为目的MAC。写入ARP高速缓存
下面概括出ARP的四种典型状况:
互联网使用ip而不是mac地址进行通讯的缘由是mac地址结构不一样,要进行通讯,须要很是负责的转换。
一个IP数据报由首部和数据两部分组成。首部的前一部分是固定长度,共20字节,是全部IP数据报必须具备的。在首部的固定部分之和是一些可选字段,其长度可变。下面介绍首部各字段的含义。
数据链路层的最大传送单元,MTU(mac帧数据部分的最大长度)。以太网中MTU为1500字节。IP协议规定,数据报最大长度不超过576字节。从而IP层接收到的数据最大长度不超过512字节,这是假定IP首部为最大长度60字节,外加4字节冗余。就获得576字节。不然,要进行分片。在进行分片时,数据报首部的总长度字段是指分片后每个分片的首部长度与该分片的数据长度的总和。
分组转发算法以下:
A类网络包含的主机号太多,A类网络中的路由器的路由表太庞大。且不少A、B、C类网络的主机号利用率不高。
给IP地址增长一个子网号字段,使两级IP地址变为三级IP地址。提升IP的利用率。这种作法叫作划分子网。
划分子网的思路以下:
路由器中为了提取出子网的网络地址,须要再路由表中插入一列,对应各自目的IP地址的子网掩码。从而无论是否采用了子网,都能正确的提取出网络地址。
CIDR 消除了传统的A、B、C类地址以及划分子网的概念,于是能更加有效地分配ipv4的地址空间。CIDR把32位的IP地址分为先后两个部分。前面部分是网络前缀,用来指明网络,后面部分用来指明主机。即IP分为网络前缀和主机号。
CIDR不使用子网是指CIDR并无在32位地址中指明若干位做为子网字段。但分配到一个CIDR地址块的单位,仍然能够在本单位内根据须要划分子网。
ICMP 工做于网络层。ICMP的报文是封装在IP数据报中,做为数据报的数据部分发送。
ICMP 报文分为差错报告报文和询问报文(ping)。
路由选择协议分为两大类:内部网关协议IGP 和外部网关协议EGP。分别称为域内路由选择和域间路由选择。内部网关协议具体的有:RIP和OSPF。外部网关协议时BGP。
通讯的真正断电并非主机而是主机中的进程。也就是说,端到端的通讯时应用进程之间的通讯。而网络层只能将数据传输到目的主机,不能交付给目的进程,这须要传输层经过识别端口号来完成。
网络层为主机之间提供逻辑通讯。运输层为应用进程之间提供端到端的逻辑通讯。
传输层的协议有两种:面向链接的传输控制协议 TCP 和无链接的用户数据报协议 UDP。
TCP 提供面向链接的服务。在传送数据以前必须先创建链接,数据传送结束后要释放链接。TCP 不提供广播或多播服务。
常见的应用层协议中:HTTP、FTP、SMTP、TELENT是采用TCP进行传输的,其余采用UDP进行传输。
TCP 中使用 16 位的端口号来标识不一样的进程。端口号只具备本地意义,只是为了标识本计算机应用层中的各个进程。
UDP 的主要特色是:
UDP中也有校验字段。把首部和数据都进行校验。
TCP的特色
TCP 链接的端点是 IP 和端口号构成的套接字 socket。每一条 TCP 链接惟一的被通讯两端的两个端点(即两个套接字)所肯定。
发送方每次发送一个分组,等收到对方的应答后,再发送下一个分组。若是在有限时间内没有收到对方应答,就超时重发。当收到对方的重复应答,就丢掉第二个应答。接收方在收到重复数据时,丢掉重复分组。并返回收到应答信号。这种可靠传输协议称为自动重传请求 ARQ。
中止等待协议的信道利用率不高,为了提升利用率,能够一次连续发送多个分组。等前面的分组收到后,再滑动发送窗口,持续发送。
接收方采用累计确认的方式。接收方没必要对收到的每一个分组逐个发送确认,而是再收到几个分组后,对按序到达的最后一个分组发送确认,这就标识:到这个分组为止的全部分组都已正确收到了。
累计确认的优势是:容易实现,即便确认丢失也没必要重传。但缺点是不能向发送方反映出接收方已经正确收到的全部分组的信息。例如接收方已经收到1,2,4,5分组,缺失分组3,此时,接收方只能返回2,表示前两个分组已经收到,此时发送方须要从新发送后3个分组。称做回退N。
TCP 报文格式包括:
TCP的滑动窗口以字节为单位。发送方根据接收方发过来的响应报文中的确认号和窗口大小,调整本身的发送窗口。发送方还可能根据当时的网络拥塞状况适当减少本身的发送窗口数值。
对于不是按序到达的数据,接收方先临时存放在接收窗口中,等字节流中所缺乏的字节收到后,再按序交付上层的应用进程。
接收方有累计确认的功能,这样能够减少传输开销,接收方能够在合适的时候发送确认,也能够在本身有数据要发送时把确认信息捎带上,但不常常发生。
再强调一次:TCP 的通讯是全双工通讯。通讯中的每一方都在发送和接收报文段。所以,每一方都有本身的发送窗口和接收窗口。
超时时间是依据当前报文的RTT时间动态调整的。
通常来讲,总但愿数据传输的越快越好。可是若是发送方把数据发送的过快,接收方就可能来不及接收,这就会形成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。
利用滑动窗口机制能够很方便地在 TCP 链接上实现对发送方的流量控制。
应用进程把数据传送到 TCP 的发送缓存后,剩下的发送任务就由 TCP 来控制了。能够用不一样的机制来控制 TCP 报文段的发送时机。例如:
TCP 实现中普遍使用的是 Nagle 算法。算法以下:若发送应用进程把要发送的数据逐个字节地送到 TCP 的发送缓存,则发送方就把第一个数据字节先发送出去,把后面到达的数据字节先缓存起来。当发送方收到对第一个数据字符的确认后,再把发送缓存中的全部数据组装成第一个报文段发送出去,同时继续对随后到达的数据进行缓存。只有再收到对前一个报文段的确认后才继续发送下一个报文段。Nagle 算法还规定,当到达的数据已达到发送窗口大小的一半或已达到报文段的最大长度时,就当即发送一个报文段,这样作,能够有效提升网络的吞吐量。
在计算机网络中的链路容量(带宽)、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种状况就叫作拥塞。
拥塞控制是防止过多的数据注入到网络中,这样可使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,设计到全部的主机、路由器以及下降网络传输性能相关的全部因素。
流量控制每每是指点对点通讯量的控制,是个端到端的问题。流量控制所要作的就是抑制发送端发送数据的速率,以便接收端来得及接收。
当网络的实际吞吐量明显地小于理想的吞吐量时,网络进入了轻度拥塞的状态。当提供的负载达到某一数值时,网络的吞吐量反而随提供的负载的增大而降低,这时网络就进入了拥塞状态。当提供的负载继续增大时,网络的吞吐量降低到零,网络没法工做,这就是所谓的死锁。
TCP 进行拥塞控制的算法是;慢开始、拥塞避免、快重传和快恢复。
1.慢开始和拥塞避免
下面讨论的拥塞控制也叫作基于窗口的拥塞控制。为此,发送方维持一个叫作拥塞窗口的状态变量。拥塞窗口的大小取决于网络的拥塞成都,而且动态地变化。发送方让本身的发送窗口等于拥塞窗口。
发送方依据是否存在分组数据超时,来判断网络有没有拥塞。当发送方按时收到分组应答时,就缓慢增大发送窗口。当分组计数器超时时,发送方认为网络存在拥塞,减少发送窗口的大小。
慢开始的思路是:初始时,先发送一个报文段,收到确认后,将窗口加倍。重复此过程,直到网络拥塞,或者达到慢开始门限
慢开始有门限。当窗口大小超过慢开始门限时,就改成拥塞避免算法。
拥塞避免算法:当窗口大小达到慢开始门限后,窗口再也不加倍的扩大窗口大小,而是每次加1。
快重传算法是为了尽早让发送方知道发生了个别报文段的丢失。快重传算法首先要求接收方不要等待本身发送数据时才进行捎带确认,而是当即发送确认,即便收到了时许的报文段,也要当即发送对已收到报文段的重复确认。例如,当接收方收到了第 1和2个报文段后,都分别及时发出了确认。现假设接收方没有收到第3个报文段,却收到了第4个报文段。原本接收方能够什么都不作。可是按照快重传算法,接收方必须当即发送对 第2个报文段的重复确认,以便让发送方及早知道本身没有收到第3个报文段。这样,发送方总共收到了接收方的4个对第 2个报文段的确认,其中后 3个都是重复确认。快重传算法规定,发送方只要一连收到3个重复确认,就知道接收方确实没有收到第 3 个报文段,于是当即进行重传,称为快重传,这样就不会出现超时,发送方就不会误认为网络拥塞。
当某个分组出现超时时,发送方执行快恢复算法,当即将发送窗口减半,减少拥塞窗口大小,并执行拥塞避免算法。
发送窗口的门限值为接收窗口大小和拥塞窗口的较小值。
传输链接分为三个阶段:链接创建、数据传送和链接释放。
TCP 链接的创建采用客户服务器方法。主动发起链接创建的应用进程称为客户,而被动等待链接创建的应用进程叫作服务器。
TCP 创建链接的过程称为握手,握手须要在客户和服务器之间交换三个 TCP 报文。
进行第三次握手的缘由是:可能客户端发送完一个同步请求后,应某种缘由,传送时延很是大,发送端超时,因而又从新发送同步请求,并传输数据。直到传输完成,断开链接后,第一次的同步请求才发送到服务端,此时,服务端会误认为客户端想要创建链接,因而,打开链接等待客户端传输数据。而客户端此时已关闭链接。从而占用了服务端的链接,致使服务端浪费资源。加入第三次握手后,就不会出现这种问题。
数据传输结束后,通讯双方均可释放链接。如今 A 和 B 都处于链接创建阶段。
进程间通讯方式:管道、信号量、消息队列、共享存储、socket。
死锁产生的四个必要条件:
破坏死锁的四个必要条件:
垃圾回收算法:
新生代采用复制算法。老年代采用标记清楚或标记整理算法。
分代回收时间: