概述
网络简介
网络由两部分组成:
- Node
- link
网络分类:
- LAN(Local Area Networks):范围小;效率高,连接过个设备;速度快;出错率低。
- WAN(Wide Area Networks):范围大;连接往往使用串行电路、光缆等;速率比较低;出错的可能大。
中继设备:
LAN的中继设备
一对多的广播形式
- Hub 集线器,能把若干pc连接起来,但是本身只做信号转发的工作。
- Bridge 网桥,能识别Mac地址。
- Switch 交换机,能识别Mac地址。
- Router 路由器,能识别pocket,多端口,连接LAN。
WAN的中继设备
点对点的数据传输
- Router 路由器,协助跨网段。
- Modem CSU/DSU TA/NT1 发出时把数字信号解析成模拟信号,收入时把模拟信号解析成数字信号。
Internet
最大的,开放的,相互连接的计算机网络。
TCP/IP是现在所使用的模型。
分层接入:每一级的ISP向上层ISP请求服务,并向下层的用户提供服务,一般有三级:第一层ISP,第二层ISP,本地ISP。这样做的好处是:由于大量的请求在一定的范围内就可以解决了,所以可以降低上层ISP的负担。
ISP(Internet Service Providers)公司负责把终端的网络接入,而ICP公司则专门只负责提供Internet的内容,不负责接入。
Data
数据并不是信息本身,只是01串。数据可以通过不同的解码方案得到不同的信息。
数据包:使用数据包的形式进行数据传输有很多好处:
- 如果将数据整体传输,则一旦出现中断就会导致数据完全失效。如果是分组的形式,中断时只会导致中间一个包的数据失效,可以保证传输的有效性。
- 对于分时操作系统而言,方便操作系统将网络资源分组给不同的应用进程传输数据。可以保证每一个进程都可以正常上网。
- 数据可以通过不同的路径进行传输。
Protocol
协议就相当于网络数据传输的语言规则。
数据带宽
Digital Bandwidth
单位是bps,多少位每秒。
但是数据带宽也只是一个理论上传输的最大速率,实际上很难真正达到这个速率。
throughput 吞吐量,实际测量得到的数据传输速度。吞吐量一定小于理论的带宽。
IP地址和Mac地址
Mac地址是烧在网卡上的硬件地址。不能更改。
IP地址可以变更。
OSI参考模型
OSI: Open System Interconnection
OSI模型中将网络分为7层实现,从高到低分别是:
- Application 应用层
- Presentation 表示层
- Session 会话层
- Transport 传输层
- Network 网络层
- Data Link 数据链路层
- Physical 物理层
其中,最上面三层统称为应用层,重点是和用户交互;而下面四层统称为数据流层,对于用户来说是透明不可见的。
第一层 物理层
两个节点之间的传输具体方案,包括对介质,电压等等条件进行规范。
第二层 数据链路层
物理信号+逻辑控制
基于frame(帧)进行逻辑检查和校验。帧中包含了目的的地址,源地址信息。
可以对共享复用的电路进行管理,避免使用冲突。
但是仅限于一条数据电路,和第三层加以区分。
第三层 网络层
相比于第二层,这一层不局限与一条电路,而是包含所有电路的整个连接网络,覆盖了整个Internet。
可以使用IP地址进行定位。
可以处理决定数据转发时中间的转发路线。
数据的组织形式为数据包packet。
第四层 传输层
Transport: End-to-end connections
操作系统分时分配网络资源。第四层攻克终端进程到终端进程的方案。
第三层为了数据可达传输,数据传输覆盖了许多中间数据设备,由于要进行大量数据转发,中间的设备往往不会做复杂的数据处理,例如数据校验。
第四层使用了段的结构,数据的传输方先把数据分成数据段,发给第三层整合成数据包进行传输。然后接受的终端再对数据包进行重新整理,复原原本的数据。接受方第四层确定数据正确之后再交给上层应用。
第五层 会话
Session Layer: Dialog and Conversations
在应用程序里面有一个管理的机制。应用程序根据自己的逻辑需求,设计应用之间的会话。比如有些应用会在一定时间节点来检查数据是否同步。
会话层是来建立处理和中断会话管理的。会话层也需要基于会话支持上层。
第六层 表示层
Presentation: common format
由于终端本地对于信息的转化编码方式不同,会造成数据理解的歧义。所以表示层负责在应用层之下为应用层提供一致的数据表示的服务。
例如数据压缩的标准,以及加密的标准之类的。
第七层 应用层
最高层。直接给用户提供服务。
在应用层之下,总是存在下层像上层提供服务的关系。也就是上层会向下层请求服务。
协议的对应关系
用于教学的五层划分
将上面三层合并为一层。
首部:指定当前层数据基于的状态,比如使用的协议。
下面一层在处理上层来的请求是,会把上层的数据和上层的首部封装起来作为本层的数据部分,然后再加上自己这一层的首部。以此类推,最终第二层不仅加上自己的首部还加上尾部传给第一层,然后第一层形成比特流通过物理传输媒体,通过一定方式传输给另一个终端,该终端再逐层解析处理。
网络通讯可以理解为相同层之间的交流,不同层之间通过不同的标准进行通讯。比如物理层用bit流通讯,数据连接层通过帧,网络层通过包,传输层通过数据段,上层使用上层的各种不同方式。
TCP/IP 参考模型
TCP/IP只有四层:
- 应用层:解决网络应用软件的请求,和OSI的上三层相对应,相当于上三层的合并。
- 传输层:和OSI的第四层相对应。
- 连接层Internet Layer:把运输层的数据段封装成packet。报文传输。相当于OSI的第三层。
- 网络接入层Network Access。对应于OSI最下面的两层。
协议与分层的对应:
事实上现在都在使用的标准是这种参考模型。现在不再使用OSI模型。但是把下两层合为一层并不是很好理解,所以在讲解下面的两层时课程中会分开两层分别来讲。后面的讲解会分为五层来讲,其实只是由于教学的方便。
OSI和TCP/IP的区别联系
共同点即:
- 都将网络进行分层,都有应用层
- 传输层和网络层相似
- 都是基于包交换而不是电路交换技术,即都把用户数据分组,切分成小的单元进行发送,而不是类似打电话。
网络拓扑
指的是网络连接。主题就是怎么进行Node间用Link连接。
网络怎么组织?有两个层面:
- 物理层面,电路的连接方案。
- 逻辑层面,管理如何访问。通过逻辑控制决定通讯。逻辑控制可以根据需要进行人为设计。即使是总线方式的连接也可以在逻辑上做成环状拓扑。
总线型 Bus
物理上:
所有接入点可以共享总线。可以直接和总线上其他节点通信。成本低。
但是如果总线某处出问题,所有设备都无法通信。
逻辑上:
总线不做控制。但是如果同时有两个设备同时发送信号就会产生冲突,需要复杂的处理方案。
环形拓扑 Ring
物理上:
所有设备首位相连形成环。
理论上环上的设备之间都可以相互通讯,但是会通过人为规定确定到底是顺时针传输还是逆时针传输。
但是如果环断掉,也就无法通讯。
逻辑上:
为了避免数据冲突,需要一个令牌,拿到令牌的设备有发送数据的权利。令牌通过环来传递。
令牌环:第一个节点做完交给第二个,第二个做完给第三个…以此传递下去。
双环 Dual Ring
有内外两个环,正常情况下统一使用外环,内环是备用的。
星形拓扑 Star
物理上:
有一个中心节点,负责联通和转发。所有其他节点的通讯可以通过中心节点的控制转发都可以到达目的节点。
缺点是会给中心节点带来比较大的负担。如果中心节点出现问题,网络就瘫痪了。
逻辑上:
控制主要在于中心节点。所有通讯都要经过中心节点处理
拓展星形 Extended Star
中心节点连接次级中心节点进行转发。
树状 Tree
节点有层次关系。靠近root的中心节点可以向下通讯,具有比较高的权限和优先级。
逻辑上:
上级会对下级的数据做审批才可以转发。
渔网状 Mesh
任意两个节点之间都有线路连接。成本最高,冗余最多。
但是网路的可靠性较好。
从一个节点到另一个节点路径选择很多,需要一个机制来确定最为合理的数据传输路线。
在重要的核心层,往往会使用这样的拓扑方法。
蜂窝状拓扑 Cellular
每个节点通过无线的方式进行连接。节点之间的覆盖区域内重叠到其他节点,所以整体连成一片。每个节点可以和相邻节点进行直接通讯,如果想和远端的节点进行通讯则需要其他节点帮忙转发。
逻辑上的控制也很复杂。
网络设备
可以分为两大类:
- 边缘设备(终端设备),比如主机,网络打印机等。网络终端的设备往往会工作在很多层。终端设备的网卡可以工作在低层,而网络操作系统和应用工作在高层。
- 中间设备,比如路由器。
NICs
网卡,hosts接入网络的设备。是属于模型第二层的设备。每个网卡有一个固定的Mac地址。负责把帧发送到局域网,并且从局域网接受帧。
另外由于计算机CPU发送的数据信号是并行通讯,但是发送到网络上的形式是串行通讯,所以网卡还负责并行和串行的转化。
网卡不仅在终端设备上有,在中间设备上也有,例如路由器。只要是网线的物理接入,一般都需要网卡的指出。
Media
工作在第一层,介质。
Repeaters 中继器
工作在第一层。
介质的数据传输范围有限,因此太远的传输需要中间有一个中继器来协助清理和放大信号。中继器只是做信号的识别和放大。
Hub 集线器
工作在第一层。
所做的也是把信号放大转发,但是可以连接多个端口,就可以完成多条线的连接转发。
和中继器一样,不做信号的过滤,只是负责信号从一个端口进入,从另一个端口转发。
现在已经不太使用了。
看起来是一个中心将很多设备连接在一起,其实逻辑上是总线型的拓扑,不允许有两个设备同时发送信号,否则就会发生信号冲突。
Bridges 网桥
工作在第二层。
通过软件对帧的内容进行识别,所以比较慢。
有两个端口,根据设备的Mac地址,把网段分成两个分段。把大的冲突域分成两个冲突域。根据Mac地址形成一个表格,网桥可以读入数据帧识别目的地址协助转发。
网桥受到信号时,可以读出信号的Mac地址,根据学习得到的MAC地址表判断出目的地址是不是在和源地址同一边的网段上,如果是,就不做数据转发,否则做数据转发。
Switches 交换机
工作在第二层。
原理和网桥差不多。交换机是基于硬件对数据进行转发,速度比网桥更快。
物理上是星形,逻辑上也是星形。
交换机有许多端口。信号来时,交换机可以识别帧中的Mac地址,为来源和目的的冲突域之间建立临时电路,转发信号。
Routers 路由器
工作在第三层。
路由器可以识别数据帧和报文。可以完成网段和网段之间的转发。路由器需要找到目的地址所在的网段,所以需要对报文进行识别,之后进行信号转发。路由器是基于IP地址的转发。
高层的设备可以识别低层的数据逻辑,比如路由器可以识别数据帧。但是低级不识别高级,例如交换机不识别数据报。