计算机网络
如何让计算机之间进行通信、资源共享等这就是计算机网络需要解决的事情
蜂窝网络
在全球,有很多手机用户,以及很多互联网用户,几乎人人都在接触网络,今天的时代是“云”的时代
对于公司来说,它的内部网络可能由下面几个部分组成:
- 通信链路
- 无线路由器
- 交换机
- 路由器
- 边缘路由器
- 本地 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 是一个以连接为导向的协议,设计有连接和断开连接的情况,分别被称为握手和挥手
DNS
DNS 是一个应用层的协议,用于将域名解析为 IP 地址,DNS 服务器是一个分布式的数据库,用于存储域名和 IP 地址的映射关系
DNS 将人类可读的域名转换为计算机可读的 IP 地址。这个转换过程涉及到 DNS 客户端(也称为解析器)向 DNS 服务器发送请求,以及 DNS 服务器返回响应
DNS 查询与响应详解
电脑或手机(通常是操作系统或网络浏览器)问 DNS 服务器:“www.example.com 的 IP 地址是多少?”
这个过程就像查电话号码一样,首先,电脑或手机(作为 DNS 客户端)会向 DNS 服务器发起一个请求,询问:“www.example.com 的 IP 地址是多少?” 这个请求会包含一些信息,例如一个随机生成的“查询 ID”,用于后续匹配响应;还会说明要查询的域名(QNAME,比如www.example.com
)以及要查询的记录类型(QTYPE),例如 A 记录表示要查询 IPv4 地址,AAAA 记录表示要查询 IPv6 地址,CNAME 记录表示要查询别名等等。收到请求后,DNS 服务器会进行查询,然后将结果返回给 DNS 客户端。DNS 服务器返回的响应会包含与请求匹配的“查询 ID”,以及查询的结果。结果中会包含域名(Name)、记录类型(Type,对应于请求中的 QTYPE,例如 A、AAAA 或 CNAME),以及实际的资源数据(RDATA),例如 IP 地址或别名。
QTYPE(查询类型):
A
记录:IPv4 地址AAAA
记录:IPv6 地址CNAME
记录:别名MX
记录:邮件交换服务器TXT
记录:文本信息
QCLASS(查询类别):通常为 IN
(Internet)
DNS 查询类型:
- 递归查询:客户端向 DNS 服务器请求完整解析,如果服务器不知道答案,它会代替客户端向其他服务器查询,直到得到结果
- 迭代查询:客户端只向 DNS 服务器请求,如果服务器不知道答案,它会返回可以查询的其他服务器的地址,客户端再向那些服务器查询。
DNS 缓存:DNS 客户端和服务器通常会缓存 DNS 记录,以减少查询延迟。TTL 值决定了缓存的有效时间。
参考资料
- HTTP 权威指南
- TCP-IP 详解(卷一、二、三)
- 计算机网络:自顶向下方法
- 图解 HTTP
- 图解 TCP/IP
- 网络是怎样连接的