旧游无处不堪寻
无寻处,惟有少年心
计算机网络

对于纯应用层开发工程师,除了应用层协议经常用到,下层协议我们用到的机会并不多,但这不是我们不能全盘了解网络知识的一个借口,当出现一些网络方面的问题时,不能一无所知。这一篇,打算对计算机网络做一个系统而全面的介绍。


网络的概念


计算机网络(computer network),是利用通信设备和线路将地理位置不同的、功能独立的多个计算机系统连接起来,以功能完善的网络软件实现网络的硬件、软件及资源共享信息传递的系统。
网络可以分为网络边缘(资源子网)和网络核心(即通讯子网)。
注意: 我们日常说的网络一般情况就是指最大的互联网,即 Internet。

计算机网络学习的核心内容就是网络协议的学习。
网络协议是为计算机网络中进行数据交换而建立的规则、标准或者说是约定的集合。

参考模型


为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在 1978 年提出了”开放系统互联参考模型”,即著名的 OSI 参考模型(Open System Interconnection)。它将计算机网络体系结构的通信协议划分为七层。
自下而上依次为:

  1. 物理层(Physics Layer)
  2. 数据链路层(Data Link Layer)
  3. 网络层(Network Layer)
  4. 传输层(Transport Layer)
  5. 会话层(Session Layer)
  6. 表示层(Presentation Layer)
  7. 应用层(Application Layer)

但是这个协议过于复杂,目前应用最广泛的协议为 TCP/IP 协议簇,对 OSI 参考模型做了一些简化处理,它将计算机网络体系结构的通信协议划分为五层。
自下而上依次为:

  1. 物理层(Physics Layer)
  2. 数据链路层(Data Link Layer)
  3. 网络层(Network Layer)
  4. 传输层(Transport Layer)
  5. 应用层(Application Layer)

注意: 分层模型中,上层为下层提供接口,下层为上层提供服务。

OSI 参考模型分析


物理层(Physical Layer)

激活、维持、关闭通信端点之间的机械特性电气特性功能特性以及过程特性。该层为上层协议提供了一个传输数据的可靠的物理媒体
简单的说,物理层确保原始的数据可在各种物理媒体上传输。
物理媒介包括同轴电缆、双绞线、光线等。
在物理层上的传输单位是比特流 bit
物理层的两个重要的设备名称:

  1. 中继器(Repeater,也叫放大器,作用是放大由于距离产生的信号衰减)
  2. 集线器(Hub,可以视作多埠的中继器)

注意: 常见双绞线线序 568B 标准: 橙绿蓝棕,46 交换。
使用双绞线的作用是为了降低信号干扰的程度。
双绞线按照电气性能分为: 五类,超五类,六类等类型,原则上,数字越大,版本越新,技术越先进,价格更贵。
5 类线(CAT-5)最高传输速率为 100Mbps。
超 5 类线(CAT-5e)具有衰减小,串扰少,并且具有更高的衰减与串扰的比值(ACR)和信噪比(Structural Return Loss)、更小的时延误差,性能得到很大提高。
6 类线(CAT-6)传输速度为 10Gbps。
其中,6 类与 5 类最直观的区别是,中间多了十字骨架。

数据链路层在物理层提供的服务的基础上向网络层提供服务,主要功能有:

  • 如何将数据组合成数据块,在数据链路层中称这种数据块为帧 frame,帧是数据链路层的传送单位
  • 如何控制帧在物理信道上的传输,包括如何处理传输差错,如何调节发送速率以使与接收方相匹配
  • 在两个网络实体之间提供数据链路通路的建立、维持和释放的管理。数据链路层在不可靠的物理介质上提供可靠的传输

该层的作用包括: 物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。
数据链路层的重要设备名称:

  1. 网桥
  2. 交换机(换机内部的 CPU 会在每个端口成功连接时,通过将 MAC 地址和端口对应,形成一张 MAC 表。在今后的通讯中,发往该 MAC 地址的数据包将仅送往其对应的端口,而不是所有的端口。因此交换机可用于划分数据链路层广播,即冲突域;但它不能划分网络层广播,即广播域。)
  3. 网卡(NIC)标识设备的物理地址(Mac 地址)由 12 个 16 进制组成(如: 00:0A:02:0B:03:0C),前 6 个 16 进制标识厂商,后 6 个 16 进制标识设备流水线上的号码

网络层(Network Layer)

网络层的目的是实现两个端系统之间的数据透明传送。
具体功能包括寻址和路由选择、连接的建立、保持和终止等。
网络层传输的基本单位是数据包 packet
包含的主要协议:

  • IP 协议(Internet Protocol,因特网互联协议)
  • ARP 协议(Address Resolution Protocol,地址解析协议)
  • RARP 协议(Reverse Address Resolution Protocol,逆地址解析协议)
  • ICMP 协议(Internet Control Message Protocol,网络控制报文协议)

网络层重要的物理设备:

  1. 路由器(Router)提供路由与转送两种重要机制,可以决定封包从来源端到目的端所经过的路由路径(host 到 host 之间的传输路径),这个过程称为路由;将路由器输入端的封包移送至适当的路由器输出端(在路由器内部进行),这称为转送

传输层(Transport Layer)

第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。
包含的主要协议:

  • TCP 协议(Transmission Control Protocol,传输控制协议)
  • UDP 协议(User Datagram Protocol,用户数据报协议)

注意: 在传输层出现端口号的概念。IP 标识出主机,端口标识出进程。
传输层的基本单位是 TCP-段 segmentUDP-数据报 datagram

会话层

会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。

表示层

表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。

应用层

为操作系统或网络应用程序提供访问网络服务的接口。

对于会话层、表示层和应用层来说,数据传输基本单位为报文 message
应用层包含的主要协议:

  • FTP(文件传送协议)
  • Telnet(远程登录协议)
  • DNS(域名解析协议)
  • SMTP(邮件传送协议)
  • POP3 协议(邮局协议)
  • HTTP 协议(Hyper Text Transfer Protocol)

常见默认端口号


  • FTP: 21
  • SSH: 22
  • Telnet: 23
  • DNS: 53
  • HTTP: 80
  • HTTPS: 443
  • SqlServer: 1433
  • Oracle: 1521
  • MySql: 3306
  • Redis: 6379

IP 地址


IP 地址由 32 位二进制数组成,为便于使用,常以 XXX.XXX.XXX.XXX 形式表现,每组 XXX 代表小于或等于 255 的 10 进制数。
IP 地址是唯一的。目前 IP 技术可能使用的IP地址最多可有 4,294,967,296 个(即 232),随著互联网的快速成长,IPv4 的 42 亿个地址的分配最终于 2011 年 2 月 3 日用尽。相应的科研组织已研究出 128 位的 IPv6,其 IP 位址数量最高可达 3.402823669 × 1038 个,届时每个人家居中的每件电器,每件物件,甚至地球上每一粒沙子都可以拥有自己的 IP 位址。

  1. 网络地址: IP 地址由网络号(包括子网号)和主机号组成,网络地址的主机号为全 0,网络地址代表着整个网络
  2. 广播地址: 广播地址通常称为直接广播地址,是为了区分受限广播地址。广播地址与网络地址的主机号正好相反,广播地址中,主机号为全 1。当向某个网络的广播地址发送消息时,该网络内的所有主机都能收到该广播消息
  3. 组播地址: D 类地址就是组播地址

先回忆下 A,B,C,D 类地址:

  • A 类地址以 0 开头,第一个字节作为网络号,地址范围为: 0.0.0.0~127.255.255.255
  • B 类地址以 10 开头,前两个字节作为网络号,地址范围是: 128.0.0.0~191.255.255.255
  • C 类地址以 110 开头,前三个字节作为网络号,地址范围是: 192.0.0.0~223.255.255.255
  • D 类地址以 1110 开头,地址范围是 224.0.0.0~239.255.255.255,D 类地址作为组播地址(一对多的通信)
  • E 类地址以 1111 开头,地址范围是 240.0.0.0~255.255.255.255,E 类地址为保留地址,供以后使用

注意: 只有 A,B,C 有网络号和主机号之分,D 类地址和 E 类地址没有划分网络号和主机号。
4. 回环地址: 127.0.0.0/8 被用作回环地址,回环地址表示本机的地址,常用于对本机的测试,用的最多的是 127.0.0.1

A、B、C 类私有地址

私有地址(private address)也叫专用地址,它们不会在全球使用,只具有本地意义。

  • A 类私有地址: 10.0.0.0/8,范围是: 10.0.0.0~10.255.255.255
  • B 类私有地址: 172.16.0.0/12,范围是: 172.16.0.0~172.31.255.255
  • C 类私有地址: 192.168.0.0/16,范围是: 192.168.0.0~192.168.255.255

子网掩码及网络划分


什么是子网掩码?
子网掩码是标志两个 IP 地址是否同属于一个子网的,也是 32 位二进制地址,其每一个为 1 代表该位是网络位,为 0 代表主机位。它和 IP 地址一样也是使用点式十进制来表示的。如果两个 IP 地址在子网掩码的按位与的计算下所得结果相同,即表明它们共属于同一子网中。
注意: 在计算子网掩码时,我们要注意 IP 地址中的保留地址,即 “0” 地址和广播地址,它们是指主机地址或网络地址全为 “0” 或 “1” 时的 IP 地址,它们代表着本网络地址和广播地址,一般是不能被计算在内的。

下面总结一下有关子网掩码和网络划分常见的问题:

  • 利用子网数来计算
    在求子网掩码之前必须先搞清楚要划分的子网数目,以及每个子网内的所需主机数目。
  1. 将子网数目转化为二进制来表示
    如: 欲将 B 类 IP 地址 168.195.0.0 划分成 27 个子网: 27=11011;
  2. 取得该二进制的位数,为 N
    该二进制为五位数,N = 5
  3. 取得该 IP 地址的类子网掩码,将其主机地址部分的的前 N 位置为 1 即得出该 IP 地址划分子网的子网掩码。
    将 B 类地址的子网掩码 255.255.0.0 的主机地址前 5 位置为 1,得到 255.255.248.0
  • 利用主机数来计算
  1. 将主机数目转化为二进制来表示
    如欲将 B 类 IP 地址 168.195.0.0 划分成若干子网,每个子网内有主机 700 台: 700=1010111100
  2. 如果主机数小于或等于 254(注意去掉保留的两个 IP 地址),则取得该主机的二进制位数,为 N,这里肯定 N<8。如果大于 254,则 N>8,这就是说主机地址将占据不止 8 位
    该二进制为十位数,N=10
  3. 使用 255.255.255.255 来将该类 IP 地址的主机地址位数全部置 1,然后从后向前的将 N 位全部置为 0,即为子网掩码值。
    将该 B 类地址的子网掩码 255.255.0.0 的主机地址全部置 1,得到 255.255.255.255,然后再从后向前将后 10 位置 0,即为: 11111111.11111111.11111100.00000000,即 255.255.252.0。这就是该欲划分成主机为 700 台的 B 类 IP 地址 168.195.0.0 的子网掩码
  • 还有一种题型,要你根据每个网络的主机数量进行子网地址的规划和计算子网掩码。这也可按上述原则进行计算。
    比如一个子网有 10 台主机,那么对于这个子网需要的 IP 地址是: 10+1+1+1=13
    注意: 加的第一个 1 是指这个网络连接时所需的网关地址,接着的两个 1 分别是指网络地址和广播地址。
    因为 13 小于 16(16 等于 2 的 4 次方),所以主机位为 4 位。而 256-16=240,所以该子网掩码为 255.255.255.240。
    如果一个子网有 14 台主机,不少人常犯的错误是: 依然分配具有 16 个地址空间的子网,而忘记了给网关分配地址。这样就错误了,因为 14+1+1+1=17,17 大于 16,所以我们只能分配具有 32 个地址(32 等于 2 的 5 次方)空间的子网,这时子网掩码为: 255.255.255.224。

其他概念


  • 调制解调器(Modem): 作用是将信号进行数模转换使其可以在线路上传输
  • 光纤到楼和光纤到户: 主要的区别在于运营商的成本,简单的说就是光纤到楼需要敷设的光缆更少,使用的局端设备(olt)更少,使用的终端设备(onu/ont)更少
  • 从一般的概念讲,讲网络互联起来要使用一些中间设备,物理层使用的中间设备叫做中继器(repeater),数据链路层使用的中间设备叫做网桥或桥接器(bridge),网络层使用的中间设备叫做路由器(router),网络层以上使用的中间设备叫做网关(gateway)
  • 在电信与数据存储中,曼彻斯特编码(Manchester coding),又称自同步码、相位编码(phase encoding,PE),能够用信号的变化来保持发送设备和接收设备之间的同步。它用电压的变化来分辨 0 和 1,从高电平到低电平的跳变代表 0,而从低电平到高电平的跳变代表 1。信号的保持不会超过一个比特位的时间间隔。即使是 0 或 1 的序列,信号也将在每个时间间隔的中间发生跳变。这种跳变将允许接收设备的时钟与发送设备的时钟保持一致