涉及内容来源:《图解TCP/IP》第一章 网络基础知识
计算机网络出现的背景
- 单机(独立)模式 计算机设计之初是解决计算问题,单机模式处理即可。随着以下因素,计算机不断发展
- 性能变强
- 规模(体积)变小
- 价格变低
- 网络互联模式 为了实现信息共享,将多台计算机连接起来
- 不同业务功能使用不同的计算机处理
- 不同人员使用不同的计算机,通过服务器管理共享数据
计算机网络的规模可分为WAN(Wide Area Network,广域网,又称外网/公网)和LAN(Local Area Network,局域网,又称内网)
思考: WAN 和 LAN 的区别是啥?
计算机网络的作用: 世界各地的信息通过网络传递到每个人的计算机中
计算机与网络发展的阶段
如何从无到有,发展到TCP/IP阶段
- 50年代,为了让更多人使用单台计算机,出现了批处理系统
- 计算机价格昂贵、体积巨大的时期
- 用户排队通过准备程序(卡带),放入读卡机,然后经由计算机处理,然后打印出来结果
- 实际上还没有网络的概念
- 批处理时代
- 60年代,为了让多个用户同时使用单台计算机,出现了分时系统
- 计算机价格昂贵,无法做到“一人一机”
- 多个终端连接一台计算机,计算机操作系统将CPU的时间划分成若干个片段(时间片)。操作系统以时间片为单位,轮流为每个终端用户服务
- 终端与服务器连接,网络的概念浮出水面(但还不是计算机之间的互联)
- 分时系统时代
- 70年代,随着计算机体积变小、造价降低,计算机不仅限于用在研究机关,企业也可以使用计算机处理日常事务
- 没有计算机(网络)通信技术时,计算机间的数据转移需要通过磁带、软盘等中间介质
- 通过计算机间的通信,企业可以通过多台计算机分布式处理数据,然后汇总到总部计算机中。计算机通信大大提高了计算机的可用性
- 属于局部的网络
- 计算机间通信时代
- 70年代初,人们开始实验基于分组交换技术的计算机网络,并着手研究不同厂商的计算机之间相互通信的技术
- 80年代,一种能够互连多种计算机的网络诞生,从超级计算机或主机到小型的个人电脑
- 同时窗口系统的诞生使人们可以通过一台计算机尽享网上的各种丰富的资源
- 计算机网络时代
- 90年代,企业和高校逐步形成了“一人一机”的环境
- “瘦身”: 大型主机的业务迁移至个人电脑或UNIX工作站,规模(体积、成本)降低了
- 互联网技术:连接异构型计算机的通信网络技术
- 计算机在诞生之初是单机模式的工具,现在则被更广泛地应用于互联网的访问
- 互联网普及时代
- 以互联网技术为中心的时代
- 电话网络被IP网络所取代,IP协议实现通信统一
- 能够联网的设备不限于计算机,还有手机、家用电器、游戏机等
- 2000年代是以互联网为中心的时代
- 安全建立连接
- 互联网虽然便捷,但负面问题也不可小视:
- 计算机病毒、信息泄露、网络欺诈
- 设备故障导致无法联网,影响业务开展和日常生活
- 2010年代是无论何时何地一切皆TCP/IP的网络时代
协议
TCP/IP是通信协议的统称(网络体系结构),包含的协议有IP, ICMP, TCP, UDP, HTTP, TELNET, SNMP, SMTP...
协议是什么?
计算机之间通过网络实现通信时,事先达成的一种“约定”(或者说是“行为规范”)。这种“约定”使得即使设备、CPU、操作系统等都不一样,只要遵循相同的协议,就能够通信
计算机中的协议
由于计算机不像人类一样“智能”,所以协议必须充分考虑各种情况和异常处理,尽可能详细,并且严格执行
分组交换协议(Packet switching technology)
分组 == 包 == packet ,分组交换 又叫 包交换
分组交换是指将大块的数据(上层的原生数据)分割为一个个叫做包(packet)的较小单位进行传输的方法
形象地理解,可以认为这里“包”相当于“快递包裹”。而具体发送“包裹”时,还需要贴上“标签”,协议中的“标签”被称为“报文首部”(包含源地址、目的地址、分组序号等信息)
报文 = 报文首部 + 分组数据 ?
后面主要会研究报文
通信协议中,通常会规定报文首部应该写入哪些信息、应该如何处理这些信息。相互通信的每一台计算机根据协议构造报文首部、读取首部内容等(双方对于报文的定义和解释是保持一致的)
协议由谁规定
相互通信的基础是协议一致,必须要标准化,且各设备提供相关的实现
- ISO(International Organization for Standardization,国际标准化组织)提出的OSI标准(Open System Interconnection,开放系统互联)
- 七层模型,把网络通信的工作分为7层(物理层,数据链路层,网络层,传输层,会话层,表示层,应用层)
- IETF(The Internet Engineering Task Force,国际互联网工程任务组)标准化的TCP/IP协议(能够在多个不同网络间实现信息传输的协议簇)
- 四层模型,把网络通信的工作分为4层(链路层,网络层,传输层,应用层),实际上的业界标准
协议分层
以OSI七层模型为例,通过这些分层,使得复杂的网络协议简单化(但是七层模型也有些过于理想化,所以业界采用四层模型作为实际标准)。
对于通信双方,同时都有7层。其中,每个分层都接收由它下一层所提供的特定服务,并负责向上一层提供特定服务,上下层交互所遵循的约定叫做“接口”。两端对等的同一层之间的交互所遵循的约定叫做“协议”
- 优点:可扩展性好,职责清晰,松耦合
- 缺点:需要处理的逻辑增加
OSI参考模型
OSI只是个参考模型,只是对各层的作用做了粗略界定,并不定义实际的协议和接口内容。学习计算机网络是通过这个OSI参考模型去学习每一层的协议具体内容(规范)
通信协议一般都会对应到OSI的某一层(xxx协议属于xxx层),通过所属的层,可以大致判断该协议的作用,所以OSI参考模型很重要
七层通信
如下图所示,在7层OSI模型中:
- 发送方从第7层(应用层),由上至下按顺序传输数据。每一层会处理上一层传输过来的数据,并附上当前层对应的协议所必须的“首部信息”,再向下传输
- 接收方从第1层(物理层),由下至上按顺序传输数据,每一层会先对数据进行“首部”和“内容”的分离,处理内容之后传递给上一层
OSI参考模型通信处理举例
以邮件发送为例,假设主机用户A给主机用户B发送一封内容为“早上好”的邮件
应用层
这里默认屏蔽不同层的数据传输,仅讨论对端同层协议的处理(后面的其他层也是如此)
- 主机A点击“发送”按钮之后,开始进入应用层协议的处理。协议会在所要传递的数据前端附加一个首部(标签)信息,首部信息包括 收件人为B、邮件标题 等信息
- 主机B收到来自主机A的数据,分析其数据首部和数据正文,并将邮件保存在硬盘中,以备进行相应的处理
错误处理:如果主机B硬盘容量不够,导致存储失败,会返回一个错误给主机A
表示层
主机特定的数据格式 与 网络通用的标准数据格式 的转换,如:UTF-8等。为了识别编码格式,也会附加首部信息
如果没有这一层的正确处理,收到的邮件就可能是乱码
会话层
假定主机A一次性要发送5封邮件,可以每封邮件建立一次连接,也可以一次连接传递全部邮件,采用何种连接方法是会话层的责任
首部记录着数据传送顺序的信息
传输层
负责相对可靠地传输数据
以下实际上是TCP的特点
- 主要用途:建立连接、断开连接 (逻辑上的连接)
- 确认数据是否到达,重发未到达的数据
首部记录着源端口、目的端口等信息
网络层
在网络相互连接的环境中,根据IP地址将数据从发送端主机发送到接收端主机。网络层不负责可靠性(处理数据丢失、顺序混乱等问题),可靠性是由传输层保证的
首部记录着源IP、目的IP等信息
数据链路层、物理层
网络层和数据链路层都是基于目标地址将数据发给接收端,区别在于:
- 网络层使用IP地址,数据链路层使用MAC(Media Access Control,介质访问控制)地址(也称物理地址、硬件地址、局域网地址)
- 采用MAC地址,目的是为了识别连接到同一个传输介质上的设备(可以理解为局域网内信息传输的地址,在局域网内唯一)
- 相互直连的设备之间使用MAC地址实现传输
物理层中,将二进制数据的0、1转换为电压和脉冲光传输给物理的传输介质
传播方式的分类
面向连接、无连接
- 面向连接:建立连接 -> 发送数据 -> 关闭连接
- 无连接:发送端直接发送数据(即使接收端不存在),接收端需要时常确认是否收到数据
电路交换、分组交换
电路交换主要用于过去的电话网,TCP/IP采用的是分组交换技术
如下图所示,
- 电路交换是独占线路的,当并发数超过线路数时,通信就无法实现了
- 分组交换则是让计算机将需要发送的数据分成多个数据包(分组),按照一定的顺序排列之后分别发送。因为每个分组的首部已经写明了接收端地址,所以线路可以复用
按接收端数量分类(单播、广播、多播、任播)
- 单播(unicast):一对一。比如固定电话
- 广播(broadcast):一对相连的所有主机。比如电视放送
- 广播域:在该范围内的机器会收到广播信息
- 多播(multicast):一对多(限定某一组,不一定是全部)。比如电视会议
- 任播(anycast):一对一,接收端是在特定的多台主机中选一台。比如:DNS根域名解析服务器
- 选择一台最符合网络条件的主机
- 被选中的主机返回一个单播信号
- 随后,发送端只与该台主机通信
地址
现实生活中,电话号码、通信地址+姓名都可以作为“地址”。网络中的地址有:
- MAC地址
- IP地址
- 端口号
- 应用层中的地址(如:邮箱地址等)
地址在同一个通信网络中具有唯一性
不仅是单播地址要唯一,广播、多播、任播也需要有唯一的地址
地址的层次性
现实生活中,通讯地址通常是 xx省xx市xx区xx街...,这是为了在大量地址中快速定位到查询的地址(树形结构,不需要遍历)
MAC地址没有层次性,而IP地址有层次性
- MAC地址无法做到层次性(局域网场景下)也没必要(主机数量不大)
- IP地址通过网络号(网段)分层,通常同一网段的主机属于同一部门,在组织结构、提供商类型、地域分布上都比较集中。层次性为IP寻址带来了极大的便利
地址转发表、路由控制表
网络传输中,主机会根据分组数据的地址信息,来判断报文要从哪个网卡发出
- MAC寻址:使用地址转发表,记录实际的MAC地址本身
- IP寻址:使用路由控制表,记录网络号(网段)
网络的构成要素
设备 | 作用 |
---|---|
网卡(Network Interface Controller,NIC) | 使计算机联网的设备 |
中继器(Repeater) | 从物理层上延长网络的设备 |
网桥(Bridge)/ 2层交换机 | 从数据链路层上延长网络的设备 |
路由器(Router)/ 3层交换机 | 通过网络层转发分组数据的设备 |
4~7层交换机 | 处理传输层以上各层网络传输的设备 |
网关(Gateway) | 转换协议的设备 |
传输速率和吞吐量
- 传输速率(理论上最高的传输速率):两个设备之间数据流动的物理速度,又称带宽(Bandwidth),单位bps(每秒比特数)
- 严格意义上讲,各种传输媒介中信号流动速度是恒定的(因为光、电流的速度恒定)。那么为什么上图同种媒介的传输速率会不一致呢? 因为传输速率高不是指单位数据流动速度有多快,而是指单位时间内传输的数据量(理论上最高)有多少
- 传输速率用于衡量传输能力。例:低速数据链路如同车道较少的道路;高速数据链路相当于更多车道,一次允许更多车辆行驶的道路
- 吞吐量(实际的传输速率):主机之间实际的传输速率,单位bps
- 还可以用来形容CPU处理能力、网络的拥堵程度等信息
网卡
任何一台计算机连接网络时,都需要网卡(NIC,网络接口卡、网络适配器、LAN卡)
- 主板内置网卡、外接网卡
- 有线网卡、无线网卡
- 单网卡、多网卡
中继器
物理层(第1层)面上延长网络的设备
- 作用:放大信号,补偿信号衰减,支持(相对)远距离的通信
- 特点:
- 不负责判断数据是否错误
- 中继器连接的两端媒介(一般是相同的)的传输速度必须一致(中继器没有存储功能,注意对比网桥)
- 中继器不能无限使用
多口中继器(集线器)
网桥 / 2层交换机
数据链路层面上连接两个网络的设备
- 作用:实现多个网络系统之间的数据交换,起到数据接收、地址过滤、数据转发等作用
- 特点:
- 对数据帧进行临时的内存存储(支持不同传输速度的媒介传输、不限制连接网段的个数)
- 重新生成信号作为一个全新的帧转发给相连的另一个网段
- FCS标志位用于校验数据完整,损坏的数据会被丢弃
- 有些网桥有 地址自学机制、过滤功能
- 会记住转发过的数据帧的MAC地址,保存在内存中。下次就知道是在本网络还是在另一个网络
- 如果帧到达的网桥与目的地址在同一网段,则丢弃该帧
路由器 / 3层交换机
网络层面上连接两个网络,并对分组报文进行转发的设备
- 作用:连接不同的数据链路,例如连接两个以太网等(根据IP)
- 特点:
- 连接不同的数据链路
- 分担网络负荷
- 具备一定的网络安全功能
4~7层交换机
以TCP等协议的传输层及其上面的应用层为基础,分析收发数据,并对其进行特定的处理
网关
网关是OSI参考模型中,负责将 从传输层到应用层的数据 进行转换和转发的设备
- 与4~7层交换机一样,网关也是处理传输层到应用层的数据
- 转发并转换数据,在两个不能直接通信的协议之间“翻译”,最终实现两者之间的通信
例子:
- 手机与互联网电子邮件的转换
- 代理服务器
总结
现代网络实态
网络的构成
以交通道路为例描述几个概念:
- 骨干网 / 核心网(计算机网络的中心,传输大量数据) => 高速公路
- 边缘网络 => 高速公路的出入口,连接国道、省道
- 接入层 / 汇聚层 => 国道、省道等,连接出入口的部分
网络拥堵、传输时快时慢 => 由于季节、时间等原因可能导致交通拥堵、限行的事件
解决堵车:
增建新路段 => 增加通信电缆扩大物理层
交警指挥绕行 => 走其他的信道
互联网通信、移动通信
互联网通信:家庭或公司 -> 接入层 -> 边缘网络 -> 骨干网 -> ...
移动通信:手机终端 -> 基站(接入层)-> 边缘网络 -> 声音/数据主干网