计算机网络
如何让计算机之间进行通信、资源共享等这就是计算机网络需要解决的事情
蜂窝网络
在全球,有很多手机用户,以及很多互联网用户,几乎人人都在接触网络,今天的时代是“云”的时代
对于公司来说,它的内部网络可能由下面几个部分组成:
- 通信链路
- 无线路由器
- 交换机
- 路由器
- 边缘路由器
- 本地 ISP
通信链路是一个抽象的概念,同轴线缆、无线信号、蓝牙信道都是具体的实现
通信需要发生数据交换,交换的本质就是让数据切换路径,因为网络中的数据是以分组或封包的形式进行发送的,路由器和交换机都是用来承载封包交换的设备,最外部的路由器被称为边缘路由器,可以将公司内部的网络发送到外部的网络。公司内部的交换机或路由器组成了一定程度上的局域网,设备之间可以互相通信
在移动网络中,无线信号构成了通信链路,通信的核心被称为蜂窝塔,也叫基站,如果要覆盖很大的区域就需要很多的蜂窝或基站,因此就构成了蜂窝网络
家用网络、公司网络、移动网络、区域性 ISP、国家性或全球性 ISP 构成了整个互联网
传递数据时,发送和接收设备被称之为终端、端系统、主机,端到端之间的能力由 TCP/IP 协议群提供,同时还有一些一对多、多对多是对端到端的能力延伸
一条数据在发送到指定设备时,可能经过路由器、交换机、基站,甚至不同的通信链路
网路设施通常不能一次性传输太大的数据量,会采用分段传输,这样重新传输的代价不会很高,并且每段数据有可能走不同的路线最终到达另一端
从整体上来看互联网是立体的、庞大的网络结构,从微观上来看就是一个个设备
因特网概述
网络是由若干个节点和连接这些节点的链路组成、笔记本、台式电脑、打印机都是网络中的一个节点,它们通过链路互相连接,链路可以是有线或无线,这是最简单的网络
多个网络可以通过路由器互连,形成范围更大的网络,即互联网,互联网也称为网络的网络
每天使用的网络叫因特网,是世界上最大的网络,用户以亿计之,互连的网络以百万计之,连接因特网上的计算机称为主机
因特网的推进:
- 从单个网络向互联网发展:第一个分组交换网诞生、开始研究网络之间的互连、TCP/IP协议成为标准
- 逐步构建出三级结构的因特网:NSF 围绕六个大型计算机中心建设 NSFNET,即主干网、地区网和校园网
- 形成多层次的 ISP 结构的因特网:NSFNET 逐渐被商用的因特网主干网替代、让各种因特网服务提供者 ISP 来运营
普通用户实际上是通过 ISP 接入因特网的,ISP 可以从因特网管理机构申请到成块的 IP 地址、同时拥有通信线路以及路由器等联网设备,任何机构和个人只要向 ISP 交纳费用,就可以从 ISP 得到所需要的 IP 地址。IP 地址很重要,因为因特网上的设备必须有 IP 地址才能通信。我国主要的 ISP 服务商主要有中国电信、中国联通、中国移动三大运行商组成
根据提供服务的覆盖面积大小及拥有的 IP 地址数量不同,ISP 也分为不同的层次:
- 第一层:通常被称为因特网主干网,能覆盖国际性区域范围,拥有高速链路和交换设备
- 第二层:是第一层 ISP 的用户,具有区域性或国家性覆盖规模,与第一层相连接
- 第三次:是第二层 ISP 的用户,只拥有本地范围的网络、比如校园网、企业网、以及住宅用户或无线移动用户
相隔较远的主机通信可能需要经过多个 ISP,一个用户一旦接入因特网,本身也可以成为 ISP,只需要购买调制解调器或路由器等设备,让其他用户和它相连
从工作方式来看,计算机网络可分为边缘部分和核心部分。边缘部分由所有连接到因特网上供用户使用的主机,比如手机、电脑等;核心部分由大量的网络和连接网络的路由器组成
从组成部分来看,一个完整的计算机网络由硬件、软件、协议三大部分组成。硬件主要指:主机、通信链路、交换设备和通信设备等;软件主要指:用户使用的各种软件;协议指:网络传输数据时需要遵循的规范
从功能组成来看,计算机网络由通信子网和资源子网组成。通信子网由各种传输介质、通信设备和响应的网络协议组成;资源子网是实现资源共享的设备及其软件的集合,向网络用户提供服务
计算机网络的功能:
- 数据通信 - 最基本最重要的功能,实现信息的传输
- 资源共享 - 分工协作,互通有无
- 分布式处理 - 将一个复杂的任务分配给网络中的其他计算机处理
- 提高可靠性 - 在网络中的每个计算机都可以通过网络称为替代机
- 负载均衡 - 将工作均衡的分配给网络中的各台计算机
交换方式
- 电路交换 - 发送和接收方建立一条专用的通路、数据交换效率低
- 报文交换 - 将数据加上地址等信息,进行转发,每个报文自行选择路线
- 分组交换 - 将数据分成小的数据块,通过报文的方式传输、
电路交换优点有通信时延小、有序传输、没有冲突、适用范围广、实时传播,缺点是建立连接时间长、线路独占,通信效率低、灵活性差、难以规模化
报文交换优点有无需建立连接、动态分配线路、提高线路可靠性,提高线路利用率、提供多目标服务、缺点是时延高、需要较大的存储空间,需要传输额外的信息量
分组交换优点有无需建立连接、线路利用率高、简化存储管理、加速传输、减少出错概率和重发数据量,缺点是时延高、需要传输额外的信息量、对于数据报服务、存在失序、丢失或重复分组的问题;对于虚电路服务存在呼叫建立、数据传输和虚电路释放三个过程
分类
按传输介质分类:
- 有线网络
- 无线网络
按照分布范围,计算机网络可分为:
- 广域网(WAN) - 几十公里到几千公里
- 城域网(MAN) - 几个街区或整个城市
- 局域网(LAN) - 一个房子,一个教室
- 个人区域网(PAN) - 几十米
按传输技术分类:
- 广播式网络 - 共享一个公共通信信道
- 点对点网络 - 每条物理线路连接一对计算机
按拓扑分类:
- 总线型 - 单根传输线,优点是便宜,节省线路,缺点是效率不高,一处故障,全网瘫痪
- 星型 - 每个计算机与中央设备单独连接,交换机或路由器就是这样的设备,便于网络的集中控制和管理,缺点是成本高,中央设备对故障敏感
- 环型 - 将所有计算机的网络结构连接成一个环
- 网状型 - 每个节点至少有两条路径与其他节点相连,多用在广域网,优点是可靠性高,缺点是控制复杂,线路成本高
性能
可以从不同方面的性能指标来衡量一个网络的性能,常用的性能指标有 8 个:
- 速率 - 连接到网络上的主机在数字信道上传输比特的速率,也叫比特率或数据率
- 带宽 - 通常将最高数据率称之为带宽
- 吞吐量 - 时间单位内通过某个网络的数据量
- 时延
- 时延带宽积 - 发送端第一个比特到达终点,发送端已经发送了多少个比特,也称为以比特为单位的链路长度。时延带宽积 = 传播时延 * 信道带宽
- 往返时延:从发送端发送数据开始,到发送端收到来自接收端的确认所花费的总共时间叫往返时间(RTT)
- 利用率:网络的信道利用效率
- 丢包率:时间单位内,传输过程中丢失的分组数量和总分组数量的比率
速率的单位:
- bit/s(b/s,bps)
- kb/s = 103b/s
- Mb/s = k * kb/s = 106b/s
- Gb/s = k * Mb/s = 109b/s
- Tb/s = G * Gb/s = 1012b/s
提示
速率单位并不是计算机中的比特位单位
时延:
- 发送时延 - 从发送分组的第一个比特算起,到该分组的最后一个比特发送完毕所需要的时间
- 传播时延 - 一个比特从链路一端到另一端所需要的时间
- 处理时延 - 分析地址部分、进行差错校验等花费的时间
- 排队时延 - 在进入路由器后等待处理的时间
传播时延主要与传输介质有关:
- 自由空间(光速):3*108m/s
- 铜线:2.3*108m/s
- 光纤:2.0*108m/s
计算机网络体系结构
为了使不同体系结构的计算机互连,国际标准化组织提出了一个框架,”开放系统互连参考模型“,简称 OSI,该模型是一个七层协议的体系架构
OSI 模型:
- 应用层 - 是用户与网络的层面
- 表示层 - 处理两个通信系统中交换信息的表示方式、数据压缩。加密和解密也是表示出提供的数据表示变换功能
- 会话层 - 允许不同主机上的各个进程之间进行会话,利用传输层提供端对端的服务,为表示层或用户进程建立连接并在连接上有序的传输数据,也称建立同步
- 传输层 - 传输单位是报文段(TCP)或用户数据报(UDP),负责主机中两个进程之间的通信
- 网络层 - 传输单位是数据报,任务是把网络层的分组从源端传到目的端,为分组交换网上的不同主机提供通信服务
- 数据链路层 - 传输单位是帧,任务是将网络层传来的 IP 数据报组装成帧,功能是成帧、差错控制、流量控制和传输管理等
- 物理层 - 传输单位是比特,任务是透明的传输比特流,功能是在物理媒介上为数据端传输透明的传输原始比特流
每层都实现一种相对独立的功能,降低大系统的复杂度,各层之间界面清晰,易于理解,相互交流尽可能少。各层功能的精确定义独立于具体的实现方法,可以采用最合适的技术实现。保持下层对上层的独立性、上层单向使用下层提供的服务,整个分层结构应该能够促进标准化工作
A 公司的老板想要和 B 公司的老板商量一些事情,A 公司的老板先把事情整理好交给秘书,秘书再往下传递,最后交给一个具体的人去 B 公司地址,然后找到 B 公司的相关人员,该人员向 B 公司秘书报告,最后再由 B 公司的秘书告诉老板
虽然国际标准已经出来了,但因特网已经抢先在全世界覆盖了相当大的范围,因特网开始使用 TCP/IP 协议族,并逐步演变成 TCP/IP 参考模型,该模型是一个四层协议的体系结构
TCP/IP 模型:
- 应用层
- 传输层
- 网际层 - 由于 TCP/IP 在网络层使用的协议是 IP,中文是网际协议,因此网络层又叫网际层
- 网络接口层 - ISO/OSI 中的“数据链路层,物理层”
OSI 和 TCP/IP 的不同:
- OSI 模型定义了三个主要的概念:服务、协议和接口。TCP/IP 在这三个概念上没有区分
- OSI 模型在网络层支持无连接和面向连接的通信,但在传输层仅有面向连接的通信。TCP/IP 在网际层仅有一种无连接的通信模式,但在传输层支持无连接和面向连接两种模式
在教学中采用折中的办法体现出体系结构:
- 应用层
- 运输层
- 网络层
- 数据链路层
- 物理层
分层的必要性
分层可以将庞大的复杂问题,转换为较小的局部问题,局部问题更容易研究和处理
物理层解决了:
- 什么样的传输介质
- 什么样的物理接口
- 什么样的信号表示数据
数据链路层解决了:
- 如何标记网络中的主机(主机编址问题,比如 MAC)
- 如何从比特流中区分地址和数据
网络层解决了:
- 如何标记各网络以及网络中的各主机(网络和主机共同编址,比如 IP 地址)
- 如何转发分组,进行路由选择
运输层解决了:
- 如何解决应用进程之间基于网络的通信问题(比如端口号)
- 接触出现误码,丢包的传输错误问题
应用层解决了:
- 应用进程间的交互来完成特定的网络应用(按照协议编写程序,比如 HTTP,SMTP)
简而言之:
- 应用层 - 解决通过应用程序的交互来实现特定网络应用的问题
- 运输层 - 解决进程之间基于网络的通信问题
- 网络层 - 解决分组在多个网络上传输的问题
- 数据链路层 - 解决分组在一个网络上传输的问题
- 物理层 = 解决使用何种信号来传输比特的问题
专用术语
适用各种体系结构术语:实体、协议、服务
实体是指可发送或接受信息的硬件或软件进程 对等实体是指收发双方相同层次中的实体
协议控制两个对等实体进行逻辑通信的规则的集合,协议的三要素:语法、语义、同步
- 语法规定了传输数据的格式
- 语义规定了所要完成的功能
- 同步规定了执行各种操作的时序关系
在协议的基础下,两个队等实体间的逻辑通信使得本层能够向上一层提供服务。实体看得见相邻下层提供的服务,但不知道该服务的具体协议,下面的协议对上面的实体是“透明”的
提示
协议和服务在概念上是不一样的,只有在本层协议的实现才能保证向上层提供服务,协议是“水平的”,服务是“垂直的”
接口是相邻两层的实体交换信息的连接点,用于区分不同的服务类型:
- 数据链路层的访问点为帧的“类型”字段
- 网络层的服务访问点为 IP 数据报首部中的“协议字段”
- 运输层的服务访问点为“端口号”
服务原语 - 上层使用下层所提供的服务必须通过与下层交换一些命令
服务数据单元 SDU - 同一系统内,层与层之间交换的数据包 协议数据单元 PDU - 对等层次之间传送的数据包,比如:
- 物理层:比特流
- 物理层:帧
- 网络层:IP 数据报或分组
- 运输层:TCP 报文段或 UDP 用户数据报
- 应用层:报文
多个 SDU 可以合并一个 PDU,一个 SDU 也可划分几个 PDU
计算机网络的服务可分为:
- 面向连接服务 - 通信双方必须先建立连接,分配资源,再进行数据传输,结束后释放连接
- 无连接服务 - 通信双方不需要建立连接,需要发送数据时可直接发送,通常被称为“最大努力交付”
- 可靠服务 - 网络具有纠错、检查的机制,保证数据传输的正确性和可靠性
- 不可靠服务 - 网络不具备纠错、检查的机制,正确性和可靠性由应用或用户来保障
- 有应答服务 - 接收方在收到数据后向发送方给出相应的应答
- 无应答服务 - 接收方在收到数据后不向发送方给出相应的应答
物理层
在物理层中,用来连接网络的传输媒体非常多,传输媒体不属于网络体系中的任何一层、大致分为两类:
- 导引型 - 双绞线、同轴电缆、光纤
- 非导引型 - 无线电波、微波、红外线、可见光
物理层协议的主要任务:
- 机械特性 - 指明接口所用的接线器的形状和尺寸、引脚数目和排列、固定和锁定装置
- 电器特性 - 指明在接口电缆上的各条线上出现的电压范围
- 功能特性 - 指明某条线上出现的某一电平的电压表示何种意义
- 过程特性 - 指明对于不同功能的各种可能事件的出现顺序
传输方式主要有:
- 串行传输 - 比特依次发送,只需要一条线,成本低,网络传输中采用的主要方式
- 并行传输 - 比特通过多条线路发送,成本高
- 同步传输 - 数据块以稳定的比特流传输
- 异步传输 - 数据块以字节为单位,字节之间的间隔是不固定的
- 单工通信 - 数据只能单向发送,这就是单工,因此只需要一条线路即可满足
- 半双工通信 - 可以互相传输数据,但不能同时传输,至少需要一条线路满足
- 全双工通信 - 在任何时刻都可以双向传输,就是全双工,必须大于一条线路才能满足
TCP 就是一个双工协议
TCP
在 TCP 中设备是平等的,不区分客户端、服务端,它们都被称为主机
TCP 是一个传输层的协议,提供了端到端数据的可靠传输,支持全双工,是一个以链接为导向的协议,一个设备通过 TCP 协议发送数据到另一个设备
TCP 协议往上是应用到应用的协议,也叫应用层,需要告知 TCP 是哪一个应用,通过端口号进行区分
TCP 在传输时必须要知道网络地址,但是 TCP 不会处理网络地址上的东西,而是会交给下一层的网络层,用来确定地址到地址的通信
网络层不会负责信号在两个设备之间的具体传递,而是交给下一层的数据链路层
因此主机到主机之间的传输具有五层:
- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理层
TCP 具有以下特性:
- 可靠性 - 数据传输时是无损的
- 多播 - 可以发送给多个接收方,由于可靠性,如果一个接收方收到了数据,那么所有的接收方都必须接收到该消息
连接和会话
连接是通信双方之间的约定,在传输数据之前,双方都会在内存中建立一个用于维护数据传输状态的对象,比如 IP 和端口是多少、发送了多少数据、传输速度如何,因此连接是网络行为状态的记录
会话是应用的行为,会话会维护连接的状态,因为连接是可以随时断开的
TCP 的握手和挥手
TCP 是一个以连接为导向的协议,设计有连接和断开连接的情况,分别被称为握手和挥手
参考资料
- HTTP 权威指南
- TCP-IP 详解(卷一、二、三)
- 计算机网络:自顶向下方法
- 图解 HTTP
- 图解 TCP/IP
- 网络是怎样连接的