计算机网络

计算机网络

计算机网络和因特网

什么是因特网

​ 在计算机网络中有许多网络,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地址以及对应端口以及当前时间
​ 交换机表内的表项可以设定统一的过期时间,在一定时间内该表项便会被删除

posted @ 2025-08-12 22:20  LittleD-  阅读(12)  评论(0)    收藏  举报