计算机网络
计算机网络
计算机网络和因特网
什么是因特网
在计算机网络中有许多网络,Internet是其中用户量最大,受众最广泛的网络
对于Internet的描述,有两个方面的描述
1.具体构成描述
2.服务描述
描述
具体构成描述
主机(也称端系统)节点:
所有的计算设备都为主机,如PC,手机等
数据交换节点:
负责接受主机传来的数据并传出的设备
常见数据交换节点为 路由器 交换机
链路(边):
负责连接各个节点,并传输数据
其传输速率以比特/秒度量(bit/s或bps)
服务描述
服务描述即从 应用程序的角度来描述Internet
在主机中,应用程序使用由端系统提供的套接字接口(socket api) 来与其他端系统上的应用程序进行数据传输
网络边缘
就是各个端主机及与它们连接的数据交换节点
网络核心
位于中心的各个数据交换节点组成
网络的传输方式有2种
1.电路交换(circuit)
2.分组交换(packet)
Internet使用分组交换
电路交换
电话网络使用的即为电路交换
每次进行数据传输时,2个端主机之间会建立起连接,该连接是单一的,需要断开连接才会解除对该连接的占用
一条电路可以被分为多个部分以实现一份多用
频分,波分,时分
分组交换
分组交换即将数据根据对应的协议进行分组,以组的形式进行数据的传输
分组进入交换机时,可以被交换机内的缓存存贮,然后被交换机从缓存内传出
队列:
由此机制,可以实现一路多用,在数据到达交换机时,若缓存内存在其他分组,则进入缓存队列,依次被交换机传出
但此机制会带来交换机内的时延
丢包:
当分组到达交换机内时,若交换机缓存队列已慢(传入速率超过了传出速率队列逐渐加长),则该分组会被交换机丢弃(或丢弃队列内的分组)。此即为丢包
物理媒体
各个节点由各个链路连接,这些链路有不同的物理媒体组成
在网络核心中,一般是光纤传输
在接入网(acess)中,物理媒体有多种
数字用户线(DSL),电缆,光纤,无线电波等
Internet结构
Internet由各个端主机,链路以及交换机构成
而这些构成可以被按关系进行分组
接入网: 各个端主机以及与端主机相连的交换机
ISP: 与众多接入网连接,各个ISP又互相连接,最终形成整个Internet网络
接入网的实现:
为了与Internet连接,有多重方案实现
电话网络:使用已部署的电话网络(DSL),在搭配调制解调器(modem) 与ISP连接
电视网络: 使用已部署的电视网络(电缆),在搭配调制解调器(modem) 与ISP连接
光纤到户: 直接使用光纤与ISP连接 现在大多数接入网都使用光纤到户
ISP的结构:
ISP按范围分为多层ISP
第一层ISP:
是最大的ISP, 整个Internet中有多个第一层ISP,它们之间也互相连接
其余层ISP:
与第一层ISP连接,并且之间也可以互相连接
最底层ISP:
与各个接入网连接
数据中心:
各个互联网大企业为了经济,自行铺设或租用光纤将自己的数据中心连接,实现数据走自己的通道,不必经过第一层ISP
并也可与低层ISP连接,减少费用的结算
分组延时,丢失,吞吐量
延时
数据在网络中传输时,从源到目的主机之间,传出数据时间和收到数据时间之差即为延时
处理延时: 数据在进入交换机时,会对数据进行处理,处理时间即为处理延时
传输延时: 数据在从交换机传出到链路时, 所花费的时间即为传输延时
传播延时: 数据在链路中传播花费的时间即为传播延时
队列延时: 在路由器中存在缓冲区存放未被传出的数据,在该队列内等候的时间即为队列延时
丢失
每个分组记录着一个TTL(time to life 存活时间) 其是一个值,每当通过一个路由器时,该值会减一,当为0时,即被路由器丢弃
然后路由器发送自己的信息返回给源主机,告诉其分组丢失信息
吞吐量
数据在链路内传播数据的大小即为吞吐量
吞吐量与最小链路的吞吐量有关
吞吐量为最小链路的吞吐量(因为数据一定会通过该链路)
服务层次和协议模型
服务
分组:在一套完整的应用中,可以把该应用拆分为多个独立的模块,各个模块之间相互作用任可以达到原来单个应用的效果
服务则是各个模块对其他模块提供自身的功能
在Internet中,网络被以层的形式拆分模块,底层模块为上层模块提供服务,上层模块依靠底层模块提供的服务,并且自身提供更多的功能为更上层提供服务
协议
协议就是一套标准, 在网络中数据的传输依靠协议来实现
协议是针对同层次的,每个层次都有不同的协议,各个层次依靠着对应的协议实现数据的传输
协议是 有 语法,语序,时序的
Internet协议栈
Internet每层也就每个模块所使用的协议的组成即为协议栈
Internet中模块划分
由高到低: 应用层 - 传输层 - 网络层 - 链路层 - 物理层
应用层
应用层原理
网络应用
网络应用有2中,一种使用公开的应用层协议(在RFC上发布),另一种是私有的
公开:
公开的协议只要服务器端和客户端之间都按协议标准实现,即可进行通信
私有:
私有的一般需要下载特定的客户端,该客户端实现了该私有协议
进程通讯
每个应用就是一个进程,在网络中进程间的通讯需要通过端口实现,传输层协议为网络间的通讯指向了进程(通过端口号)
Socket
Socket(套接字) 是传输层为应用层提供的接口,使用该api即可实现进程之间的数据传输
Socket分为TCP和UDP
应用层通过创建Socket,将数据推向Socket,然后通过层层传输,将数据传输到另一端的Socket
应用层协议
应用之间的数据传输通过应用层协议实现,
应用层协议有 http/https(web协议) ftp smtp 等
web浏览器一般使用 http\https协议,http有1.0 1.1 2 以及3 , 现在大多数浏览器都是使用 http1.1协议
而 https 协议是 对http的升级,使传输加密, http的传输是明文传输,有信息泄露的风险
WEB和HTTP
HTTP
HTTP是浏览器上浏览网页的协议,大多浏览器与服务器间的数据传输都使用http1.1
http的数据传输使用报文, 请求报文与响应报文有所不同
但都由 头,行 ,体 3个部分组成
在请求头中,头描述了请求的方式,请求的资源路径,请求的协议
在响应头中华,头描述了 请求的协议,请求的状态
在行中,则以多对键值对的形式作为标识信息传输
在体中存放着该次传输的数据
Cookie
HTTP协议是无状态的,但可以通过浏览器的cookie来维护状态
cookie是请求行的一种键值对,在服务器内维护了该cookie值,该值对应着相应的客户端
web缓存
大量的用户向同一个服务器请求信息,服务器的链路会产生瓶颈
使用web缓存可以大大改善
web缓存是使用代理服务器,用户的请求会先被临近的代理服务器截获,若代理服务器存在客户请求的数据,则由代理服务器进行响应
若不存在则代理服务器由向服务器发起请求,然后把获得的数据保存,下次再次请求相同数据时,直接由代理服务器返回
//注:每次请求代理服务器都会想服务器发起请求,但都是很小的报文,速度非常快,一般是来验证数据的时效性
DNS
描述:
DNS(Domain Name System,域名系统)
在网络中各个节点的定位是以IP来定位的,IP是以数字描述的,不利于记忆使用
DNS建立在应用层之上,使用UDP协议,在使用域名时,DNS解析器可以向DNS服务器发送请求来获得该域名的真实IP地址
DNS的实现:
DNS是有分布在世界上的多个DNS服务器共同实现的, 最顶级有根服务器(13个),在根服务器下有顶级域服务器,再往下为依次降级的权威名字服务器
如 baidu.com , com即为顶级服务器, baidu即为权威名字服务器
域名的解析
每个计算机设置了本地域名服务器,在访问一个域名时,先向计算机的域名解析器发送该域名,再向本地权威名字服务器(一般配置在ISP处)发送请求,
之后发送到根服务器,之后会更具查询类型来进行查询(迭代查询和递归查询)
根服务器记录了每个顶级域服务器地址,每个顶级域服务器由记录了属于自己的权威服务器地址,依次向下
每次查询到信息,每个部分都会对该信息进行缓存,(默认TTL时间为2天),下次查询相同域名时,会直接返回缓存内的地址
DNS的作用:
DNS可以使IP地址的访问可记忆
可进行负载均衡配置(每个域名可以解析到多个IP地址,可以随机解析也可分权重解析)
P2P
描述:
P2P(peer to peer) 点对点模式
模式分为CS(客户端对服务端)和p2p
CS模式为 多个客户端与单个服务端进行连接, 而P2P为两个节点直接连接,两者都是客户端和服务端
结构:
集中式目录:
即一个服务器维护了各个节点的地址,每次连接都向该服务器请求对应节点的位置,在与对应节点进行P2P连接
完全分布式:
没有服务器,都是客户端,整个体系有各个节点组成,每个节点连接时,都是进行泛洪传送信息进行连接
混合体:
由节点和服务器组成,每个服务器维护着一部分节点,各个服务器之间有连接
节点之间连接依服务器
CDN
描述:
CDN(content deliver network) ,内容分发网络
用于代替源服务器将用户需要的静态内容发送给用户,以提高用户体验以及缓解服务器 压力
具体:
一个服务器可以部署在某处,用户可以向他请求资源,其拥有了源服务器内的资源,直接代替源服务器将资源发送给用户
CDN服务器可以部署在ISP内部也可以部署在各个源服务器周边等
传输层
多路复用/分解
多路复用:
各个进程发送的信息集合到传输层中,发送给目标主机传输层
多路分解:
目标主机传输层接收到数据后,将数据分发到各个对应的进程
可靠传输的实现
重传
以序号标记每个分组,接收方收到分组后,返回一个标记该序号的ack确认分组,若分组出错,则返回nck分组
之后为了效率在流式传输时,取消了nck,使用ack隐式的代表nck分组
发送方收到ack分组后,及传输下一个序号的分组,若收到nck分组,则重新传输该分组
超时重传
有的分组可能会在传输中丢失,而没有到达接收方,因此引入了超时计数器,若需要的ack在一定时间没有收到,则重新发送该分组
流式传输
一次发送多个分组,即为流式传输,流式传输分为go-back-n和selective repetition
在流式传输中,发送方和接收方都维护了一个滑动窗口
go-back-n(回滚N组):
发送方窗口大小大于1,接收方窗口大小等于1, 接收方收到数据,返回ack时, 该ack是代表该ack对位的序列包括其前的序列都以收到
超时定时器是记录在最早一位序列,超时后,重传在滑动窗口中的所有序列
selective repetition(选择重传):
发送方窗口大小大于1,接收方窗口大小大于1, 接收方可以乱序的接受数据,每次接受都返回对应的ack,因此该ack仅代表该序号被确认
每个分组都有一个超时定时器
TCP协议
概述:
TCP与UDP时传输层最常用的2大协议
TCP是实现了非常多功能的可靠传输协议,UDP只是保证了多路复用以及差错校验,是不可靠协议
实现:
TCP是流式传输,是回滚N组和选择重传两种方法结合,接发窗口都大于1,接收方接收到乱序的数据,但 其返回的ack是保证前面的序列也都被确认
滑动窗口中的只有一个超时定时器,并且只对最老的一个TCP段生效
可靠传输实现:
TCP有序列号和确认号, 确认号的工作方式是, 从接收方返回一个确认号,
该确认号是一个序号,代表着接收方接收发送方发送的序号之前的分组,并且正在需要该序号分组
如 ack为555, 则发送方收到ack后,即知道接收方已经接收了序号554即554以前的所有分组,并且正在需要555序号分组
快速重传:
当发送方收到3个冗余ack分组(也就是收到4个相同ack)时,直接重启超时计时器,并重传该ack对应序号分组
拥塞控制:
由于在Internet网络核心中,各个节点中交换机的缓存有限,若传输的数据过多过快,会导致网络拥塞,致使丢包
若是不进行控制,会导致网络死锁,无法传出数据
TCP的拥塞控制:
TCP使用端到端的拥塞检测,还有另一种 网络辅助的拥塞控制(由交换机检测拥塞并提示到网络边缘),但对网络核心会产生负载
实现:
通过控制 滑动窗口大小实现,以下mss个数都是代表拥塞窗口大小
分为2种,一种是超时检测,另一种是冗余ack检测,超时检测为严重拥塞,冗余ack(3个重复ack)为轻微拥塞
tcp一开始是在慢启动阶段,每次发送一个mss(一个链路帧大小为1500byte,一般一个mss是1460byte),
然后指数增长,在遇到拥塞时,按遇到拥塞情况进行操作
严重拥塞(超时):将mss直接变为1mss,然后继续慢启动,但到达上次发生拥塞时的mss数量的一半时,进入拥塞避免状态,每次只增加1mss
轻微拥塞(冗余ack,也叫做快速恢复阶段):mss直接变为上次拥塞mss数量的一半再+3,并且直接进入拥塞避免状态
网络层
划分
网络层根据功能被划分为数据平面和控制平面
数据平面:
实现在单个路由器中,负责分组的转发,将从输入端口到来的分组根据路由表向对应的输出端口转发出去
控制平面:
可能由多个路由器共同实现,也可能由一个外部的逻辑控制器实现
控制平面负责计算出路由表
数据平面
IP
在网络层中,乃至整个因特网,都是依靠IP来定位的
最初的IP是IPV4版本,其由32个比特组成,容量为40多亿,由于数量不足,出现了更高级的IPV6,为128比特
路由器根据到达的分组的源和目的IP去查询路由表进行分组的转发
子网
若每个路由器都根据IP进行路由,40多亿的IP数量,无法实现,因此引入的子网
路由表根据子网前缀来路由,最初子网分为a,b,c,d,e类型,在分配时,使用子网分配给各个组织
而每个子网也可以继续向下拓展出子网的子网
但由于不好分配,又出现了 无类别域间路由选择(CIDR)
每个路由器的各个接口都有一个IP地址, 与路由器接口连接的主机可获得一个与该接口IP地址相同子网的IP地址
一般可使用交换机与路由器连接,然后各主机与交换机连接,若路由器接口ip为111.111.1.2
则其形成的子网为 111.111.1.0/24 其名为子网掩码,在该子网中的ip可为子网掩码最后的0随意数字(0-255)
无类别域间路由选择(CIDR):
同子网一样,在使用子网寻址时,将IP分为2个部分,只寻找前一部分,使用一个值来表示第一部分有几个比特
如: 111.111.0.0/16,即代表,只要有发向以111.111开头的IP时,都定位到该子网
并且在子网里还可以有其他的子网,只需要把CIDR的 第一部分的比特值增大即可
ISP虽然能分发IP地址但 还需要一个机构负责所有ISP的地址,其为ICANN(也管理DNS根服务器)
DHCP分配
通过DHCP(动态主机分配协议)可使IP的分配自动化,主机在通过在路由器上或与路由器连接的DHCP服务器交互可被自动的分配一个可用的IP地址
NAT转发
由于ipv4地址数量的限制,出现了NAT(网络地址分发)技术,其在路由器上部署一个nat dhcp服务器,该路由器只需要有一个IP,
与其相连的主机会被NAT服务器自动分配内网IP(在IP范围中有一定范围的IP不被用于公网,而是用于内网IP),在与外部通讯时,主机使用自己的内网IP传输
在通过路由器时,路由器会建立NAT表记录了目的IP以及内网IP,然后将内网主机传输的IP改为路由器的公网IP然后传输
在外部传来通讯时,会通过NAT表匹配目的IP和内网IP,然后将传输的目的IP改为内网IP,依次扩大子网内IP的数量
注:nat时,会将源IP的端口号随机一个在nat服务器上空余的端口号
控制平面
路由算法
通过路由算法算出源地址到目的地址之间路径的最短路径
路由表的计算:
路由表是在控制平面上计算出的,有2种控制方式
1.每路由控制方式,该方式为传统的方式,每个路由器都用一个控制组件,其用于与其他的路由器通讯以计算值对应的路由表
2.逻辑集中式控制,SDN就是该方式,通过将路游控制功能分离到远程的控制器上,通过该控制器为他掌管的路由器分发路由表
2方式的路由表为流表,其可对2,3,4层的首部头进行读取,且修改,而1方式叫转发表,只能读取网络层首部头
路由算法:
RIP协议:矢量(Vector)路由算法,用于小型网络
OSPF协议:使用链路状态(Link State)算法,用于大型网络
SDN
(Software Defined Networking,软件定义网络)
SDN通过将网络层的控制平面和数据平面完全分离,将控制平面移到一个SDN控制器上,SDN控制器通过开放的接口与网络设备进行通信,
下发控制指令,从而实现对网络流量的灵活控制。
SDN控制器在外部看起来是整体的,在有的SDN是由分布式服务器组成的,即各个功能在分开的服务器上执行
SDN一般被有规则的分层,底层(南向接口,与分组交换机连接)为与其控制的交换机通信的协议组成,向上则为状态(如 流表等),最顶则为网络控制应用
这些网络控制应用通过使用下层(北向接口)提供的API来管理受该SDN控制器控制的交换机
OSPF协议
OSPF(Open Shortest Path First)是一个自治区内的路由协议
使用LS(Link State)算法
OSPF通告信息包含每个邻居路由器表项
通告信息会传遍整个AS(泛洪)
层次化OSPF:
2个级别层次: 骨干,本地
骨干路由器:在骨干区域运行OSPF
边界路由器:连接其他的AS
AS
AS(automatic system)
AS一般在一个ISP内, 有的ISP可能仅有一个AS,有的ISP分为很多个AS, 每个AS由各个路由器构成
有了AS使得路由最短路径的计算变得更好,AS内部一般使用OSPF(开放路径最短优先)路由选择算法
BGP
BGP(Border Gateway Protocal):
边界网关协议,是自治区之间的路由协议
AS将每个ISP自治,而BGP使各个ISP(AS)连接起来,所有的AS都使用BGP协议,BGP协议使用TCP协议传输BGP报文
每个AS会通过传播BGP报文向与他相连的其他AS通告其内部的子网的前缀,其他AS收到后,
也会继续通告出去,已达到让所有AS都知道对应子网前缀通向该AS
eBGP(外部BGP):在外部通告各个AS内的子网的可达路径
iBGP(内部BGP):在内部通告各个内部路由可达路径
层次化路由:
通过AS分区域,以及BGP让各个区域沟通,形成了层次化路由,让分散的路由聚合,减少了路由表计算的数量
链路层
差错检测和纠正
在链路层中,不同的链路协议提供的功能不同, 有的链路层可以提供差错检测和纠正服务
差错检测有 单比特奇偶校验,二位奇偶校验等算法。
多点访问协议
在链路层有点对点链路和广播链路,在广播链路中需要使用多点访问协议,
因为在多点访问中,在同一时刻多个发送方发送的分组会发生碰撞,导致2个分组都丢失
多点访问协议可分为3大类:
划分信道:
分为频分和时分
随机访问:
以太网就是使用 随机访问中的CSMA/CA(具有碰撞检测的载波侦听多路访问)协议
每个节点发送分组时先侦听链路中是否有人正在发送,若有则停等,若无则发送,若发送碰撞则随机停等随机时间在侦听,发送分组
轮训访问:
局域网(LANS在因特网中为以太网):
在链路层中每个节点的每个网络接口都有适配器,每个适配器都有独一无二的MAC地址,MAC地址是6字节大小
在以太网(链路层)中使用MAC地址定位发送的设备
ARP协议
在网络层是使用IP协议的,而ARP协议可以根据IP来获取对应的MAC地址
若源设备和目的设备是在同一个子网内,则适配器会发送广播ARP报文,子网内每个节点都会接收到报文,
若是目的IP的节点接收到,则会告知源节点其MAC地址
源设备会在ARP表中记录下 目的IP以及MAC地址,在下次发送时若在ARP表中可查询则直接发送
若在不同子网内,则获取路由器MAC地址,将数据发送给路由器让路由器进行路由,
查询需要发送的下一个节点,然后获取下一个节点MAC地址,将数据发送
注: 交换机没有MAC地址,只是作为一个连接器,其内部有MAC表(交换机表)用于链路各个与其相连的节点
交换机
交换机中维护了一个交换机表,存放着目的MAC地址以及该MAC地址对应的接口的映射
且交换机有着学习能力,当收到一个帧时,其会检查该帧的源MAC地址是否储存在交换机表中,
若存在则跳过,若不存在则记录下MAC地址以及对应端口以及当前时间
交换机表内的表项可以设定统一的过期时间,在一定时间内该表项便会被删除

浙公网安备 33010602011771号