一、计算机网络背景
1.1 网络发展
计算机网络的发展可以追溯到20世纪60年代,那时候最初的计算机网络只是为了让科学家们能够共享计算机资源和数据。但是在20世纪80年代,互联网的出现彻底改变了计算机网络的面貌,使得人们可以随时随地通过互联网进行信息交流和数据共享。
随着计算机技术的不断发展,网络技术也在不断创新和改进。在20世纪90年代,出现了无线网络技术,这让人们可以不受线缆限制地随时随地上网。随后,移动互联网的出现进一步推动了网络技术的发展,现在人们已经可以通过手机、平板电脑和其他移动设备随时随地访问网络。
此外,云计算和大数据技术的出现也为网络技术的发展带来了新的机遇。云计算可以让人们通过网络访问存储在远程服务器上的计算资源,而大数据技术则可以让人们更好地管理、分析和利用海量数据。
在未来,随着物联网、人工智能等新兴技术的不断发展,计算机网络技术将会更加智能化、自动化和普及化,为人们的生活和工作带来更多的便利和创新。
1.2 局域网和广域网
- 独立模式:计算机之间相互独立。
-
网络互联:多台计算机连接在一起,完成数据共享。
局域网(Local Area Network,LAN)和广域网(Wide Area Network,WAN)是两种常见的计算机网络类型。
局域网是一种较小范围内的网络,通常是在办公室、学校、住宅区等局部范围内使用。局域网中的计算机通常是通过同一网络设备(比如路由器或交换机)连接在一起,以便在这些计算机之间共享文件、打印机、应用程序和其他网络资源。在局域网中,通常不需要经过互联网,因为所有计算机都连接在同一网络中。
而广域网则是一种更大范围的网络,可以涵盖更广泛的地域范围。广域网通常由多个局域网和其他网络连接而成,通过广域网的互联,计算机和其他网络设备可以在全球范围内相互通信和交流。广域网通常使用互联网协议(IP)连接各种计算机和网络设备,而且通常需要使用专门的路由器、交换机、光纤和其他网络设备来连接这些不同的局域网和其他网络。
所谓局域网和广域网只是一个相对的概念,比如:我们有 “天朝特色” 的广域网,也可以看做一个比较大的局域网。总的来说,局域网主要用于小规模内部的文件共享和资源访问,而广域网则更适合大规模的远程访问和通信。
二、网络协议初识
2.1 什么是协议
在计算机网络中,协议是计算机网络中各种设备之间通信的规则和标准。它们定义了不同类型的计算机、服务器、路由器、交换机等设备之间如何进行通信、交换数据和控制信息的方式。通俗来说,协议就是一种约定。协议在计算机网络中扮演着重要的角色,使得不同设备之间的通信更加高效、安全和可靠。
计算机之间的传输媒介是光信号和电信号。通过频率和强弱来表示 0 和 1 这样的信息,要想传递各种不同的信息,就需要约定好双方的数据格式。进行通信的两台主机,并不是在软件层面上约定协议就可以了。计算机硬件厂商用不同的方式来表示 0 和 1(不同的硬件标准),两台不同厂商的主机也无法进行通信,即使它们遵守同样的约定。这时候就需要一个统一的标准,这就是网络协议。
2.2 协议分层
那什么是协议分层呢?协议分层是指将一个复杂的通信系统划分为多个层次,每个层次都有不同的功能和责任,协议在不同的层次之间进行交互和通信。协议分层的优势就是在复杂的场景下,它可以使不同层次之间的功能独立(解耦),提高了系统的可维护性、可扩展性和可靠性,同时也为不同厂家的设备之间的通信提供了标准化的接口。所以,网络协议也是被设计成了层状结构。
分层最大的好处在于“封装”,在分层情况下,将某层的协议进行替换后,通信双方之间是不会受到影响的
在打电话这个例子中,我们的协议只有两层:但是实际的网络通信会更加复杂,需要分更多的层次。
两台主机要通信,必须要解决一下的几个问题:
-
把数据包交付给自己直接相连的下一台主机(链路层)
比如:张三北京到云南骑自行车旅游,首先张三得具备到下一站的能力,谁提供这个能力:自行车;同理数据包想要交付到下一台直接相连的主机,首先要具备交付这个能力 -
要有路径选择的能力(网络层)
张三目标是云南,路途中会经过许许多多个站,如何选择下一个站,这是一个问题,只有具备了选择这个能力,张三才能一站站往下跳,张三才会有可能到云南(不考虑导航),数据包也是如此 -
容错纠错能力(传输层)
数据包传输到下一站也有可能走错, 或者数据包丢了,就需要重新发送该数据包,所以需要有一定的容错纠错能力 -
解决应用方面的问题(应用层)
结合1、2、3 点的能力,数据包已经具备到达另一台千里之外的主机的能力。张三去云南是手段,不是目的,玩才是张三的目的;数据包也是如此,从一台主机送到另一台主机是手段,数据表解决自己应用方面的问题才是数据包的目的
这四个问题就是网络要解决的问题,每一个问题都以高内聚低耦合的方式进行分层,每一层都有自己匹配的协议,每一层的协议都是解决自己的问题
2.3 OSI七层模型
OSI七层模型(Open Systems Interconnection reference model,开放式系统互联参考模型)是一个标准的网络体系结构模型,它将网络通信分为七个抽象层,每个层都有自己的功能和特定的协议,它们一起构成了一个完整的网络协议体系结构。它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
下面是每个层的功能和代表的协议:
-
物理层(Physical Layer):负责在物理媒介上传输比特流(0和1)。代表的协议包括 Ethernet、Wi-Fi、USB 等。
-
数据链路层(Data Link Layer):负责在相邻节点间传输数据帧,并保证传输的数据可靠、有序、无差错。代表的协议包括 PPP、HDLC、MAC 等。
-
网络层(Network Layer):负责在多个节点之间建立逻辑连接,并将数据分组传输。代表的协议包括 IP、ICMP、ARP 等。
-
传输层(Transport Layer):负责在端到端的通信中提供可靠的数据传输和错误恢复。代表的协议包括 TCP、UDP 等。
-
会话层(Session Layer):负责建立、管理和终止会话连接。代表的协议包括 SMB、NFS 等。
-
表示层(Presentation Layer):负责对数据进行格式化和转换,确保数据在传输过程中的兼容性。代表的协议包括 JPEG、MPEG 等。
-
应用层(Application Layer):提供面向用户的应用服务,使用户可以访问网络上的各种资源。代表的协议包括 HTTP、FTP、SMTP、SSH 等。
2.4 TCP/IP五层模型
TCP / IP 是一组协议的代名词,它还包括许多协议,组成了 TCP / IP 协议族。TCP / IP 通讯协议采用了 5 层的层级结果,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
- 物理层:负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤,现在的 WIFI 无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层,它通过物理层的广播方式来转发数据包。当一个计算机需要向另一个计算机发送数据时,它会将数据包发送给集线器,集线器会将这个数据包广播到所有连接到它的端口上。这样,所有连接到集线器上的计算机都能够收到这个数据包,并根据目标 MAC 地址来判断是否接收该数据包。
- 数据链路层:负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动发)、数据差错校验等工作,有以太网、令牌环网,无线LAN等标准。交换机(Switch)工作在数据链路层,它能够分析数据包的 MAC 地址,并根据 MAC 地址来确定数据包应该发送到哪个端口。当一个计算机需要向另一个计算机发送数据时,它会将数据包发送给交换机,交换机会根据目标 MAC 地址来确定该数据包应该发送到哪个端口。这样,只有目标计算机会接收到这个数据包,而其他计算机则不会收到。
- 网络层:负责地址管理和路由选择,例如在 IP 协议中,通过 IP 地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由),路由器(Router)工作在网路层,它能够分析数据包的 IP 地址,并根据 IP 地址来确定数据包应该转发到哪个网络中。当一个计算机需要向另一个网络中的计算机发送数据时,它会将数据包发送给路由器,路由器会根据目标IP地址来确定该数据包应该转发到哪个网络中。这样,不同网络之间的计算机就能够相互通信了。
- 传输层:负责两台主机之间的数据传输,如传输控制协议 (TCP)能够确保数据可靠的从源主机发送到目标主机。
- 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等,我们的网络编程主要就是针对应用层。
物理层我们考虑的比较少,因此 TCP / IP 五层模型很多时候也可以称为 TCP / IP 四层模型,之后我们统一使用TCP / IP 四层模型进行学习(应用层,传输层,网络层,链路层)。
一般而言,对于一台主机,它的操作系统内核实现了从传输层到网络层的内容;对于一台路由器,它实现了从网络层到物理层;对于一台交换机,它实现了从数据链路层到物理层;对于集线器,它只实现了物理层。但是并不绝对. 很多交换机也实现了网络层的转发,很多路由器也实现了部分传输层的内容(比如端口转发)。
三、网络传输基本流程
3.1 局域网通信
在同一个局域网中,每个主机都有一个唯一的 MAC 地址(6字节,通常用 16 进制表示),这是通过网卡硬件设备分配的。当一台主机要向另一台主机发送数据时,它会将数据包打上目标 MAC 地址并广播到整个网络中,所有连接在该网络上的主机都会接收到这个数据包,但只有目标 MAC 地址与自己的 MAC 地址相匹配的主机才会处理这个数据包。这样,数据包就能够直接传输到目标主机,从而实现两台主机之间的直接通信。
在局域网中,多个主机共享同一个物理网络,因此当多个主机同时发送数据时,可能会发生数据碰撞(Collision)的情况。这是因为多个主机的信号可能会同时到达同一个物理介质上,导致信号相互干扰,从而导致数据错误和丢失。
数据碰撞问题是由于共享介质的特点所导致的。在以太网中,多个主机连接在同一段电缆上,数据包被广播到整个网络中。如果两个或更多的主机同时发送数据包,它们的信号可能会在电缆上碰撞,从而导致数据包损坏或丢失。
为了解决数据碰撞的问题,以太网采用了 CSMA / CD 协议。CSMA / CD 协议意味着 “带冲突检测的载波侦听多路访问”,它规定了当主机要发送数据时,需要先侦听介质上是否有其他主机正在发送数据。如果介质上有信号,主机就会等待一段随机时间后再发送数据。如果多个主机同时发送数据,会发生碰撞,这时所有的主机都会检测到冲突,并停止发送数据。接着,每个主机会等待一段随机时间后再次尝试发送数据,直到成功为止。
除了 CSMA / CD 协议,局域网还可以采用其他方法来解决数据碰撞问题,如使用交换机或使用全双工通信等技术。
3.2 数据包封装和分用
协议报头
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
应用层数据通过协议栈发到网络上时,每层协议都要加上一个报头(header),称为封装(Encapsulation)。
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的报头,根据首部中的上层协议字段将数据交给对应的上层协议处理。
下图为数据封装的过程:
下图为数据分用的过程:
3.3 跨网络通信
相同的链路层协议
位于两个不同局域网的主机要进行通信,需要经过路由器的转发。当源主机发送数据时,数据会被封装成数据包并在数据包的首部中携带有目标主机的 IP 地址。由于源主机和目标主机不在同一个局域网中,因此数据包必须经过路由器进行转发。
当路由器接收到数据包时,它会检查目标 IP 地址并根据自己的路由表确定下一跳路由器或目标主机所在的网络。如果目标主机所在的网络不是当前路由器直接连接的网络,那么路由器就需要将数据包转发给下一个路由器。这个过程会一直持续,数据包可能会经过多个路由器,每个路由器都会检查目标IP地址并将数据包转发给下一个路由器或目标主机。直到数据包到达目标主机所在的网络。
因此,位于两个不同局域网的主机进行通信的原理是通过路由器进行转发,将数据包从源主机转发到目标主机所在的网络。这个过程需要路由器之间进行协同工作,按照最佳路径进行数据包的传输。
不同的链路层协议
局域网可能采用的是不同的通信标准,比如局域网1采用的是以太网,而局域网2采用的却是令牌环网,如何进行通信??
由于以太网和令牌环网是不同的通信标准,它们给数据添加的报头也是不一样的,因此令牌环网当中的主机无法对以太网当中的数据帧进行解包,反过来也是如此。
这种情况实际是由路由器来处理的,路由器是工作在网络层的一个设备(路由器必须要有两个网络接口,因为路由器至少横跨两个网络)
数据要从局域网1发送到局域网2时,路由器收到局域网1的数据后,会先将以太网对应的报头进行解包,然后解析IP协议得到目标IP地址确定下一跳,路由器将数据包进行再一次封装,交付给链路层给该数据包添加上令牌环网对应的报头信息,最后再将该数据发送到目标主机,此时该数据就能够被目标主机正确解包了。
四、网络中的地址管理
4.1 MAC地址
MAC地址用来识别数据链路层中相连的节点
- 长度为48位,6个字节。一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)
- 在网卡出厂时就确定了,不能修改。mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址,可能会冲突;也有些网卡支持用户配置mac地址)
- MAC地址只在局域网中使用,出局域网后源和目标MAC都会被丢弃,让路由器重新封装。
4.2 IP地址
IP地址是在IP协议中,用来标识网络中不同主机的地址
-
对于IPv4来说,IP地址是一个4字节;32位的整数
-
我们通常也使用 “点分十进制” 的字符串表示IP地址,例如192.168.0.1;用点分割的每一个数字表示一个字节, 范围是0 - 255
-
IP地址尤其是目的IP,在网络通信的过程中一般是不会改变的,协助我们进行路径选择。
-
IP 地址分为 IPv4 和 IPv6 两种格式,IPv4 采用 32 位地址,而 IPv6 采用 128 位地址。IPv6可以标识网络中更多的主机数量
注:后序凡是提到IP协议,没有特殊说明的,默认都是指IPv4
IPv4 地址不足问题
IPv4 地址空间有限,只有约 42 亿个可用的 IP 地址。在当前互联网中,IP 地址已经不足以支撑日益增长的网络设备和用户。为了解决 IP 地址不足的问题,出现了一些技术,包括:
-
子网划分:将一个大的网络划分为多个子网,每个子网可以有自己的 IP 地址空间,可以更加有效地利用有限的 IP 地址。
-
NAT(Network Address Translation,网络地址转换):将内部网络中的私有 IP 地址转换为公共 IP 地址,从而使内部网络中的多个设备共享同一个公共 IP 地址,节约了 IP 地址资源。NAT 技术可以实现内网和外网之间的通信,但是不支持从外网直接访问内网中的设备。
-
IPv6:IPv6 是下一代 IP 协议,提供了更加庞大的地址空间,能够支持更多的设备和用户。IPv6 地址空间为 128位,可以提供约 340 万亿亿亿亿亿个IP地址,远远超过了 IPv4 地址空间。
这些技术在不同的场景下可以结合使用,来解决IP地址不足的问题。例如,企业内部可以使用子网划分来更好地管理内部网络,同时使用 NAT 技术将内部私有 IP 地址转换为公共 IP 地址,从而节约 IP 地址资源。在 IPv4 地址已经耗尽的情况下,也可以使用 IPv6 来为设备分配 IP 地址。
IPv6 为何推广缓慢
IPv6 推行会很缓慢的原因如下:
-
设备和软件的兼容性问题:IPv6 的协议格式和 IPv4 不兼容,需要硬件和软件都支持IPv6协议,但很多设备和软件还没有升级,无法支持IPv6协议。
-
成本问题:升级到 IPv6 需要更换硬件设备和软件,这需要巨大的成本投入。对于许多中小型企业和个人用户来说,这可能是一个巨大的负担。
-
IPv4 仍然可以工作:尽管 IPv4 地址不足,但仍然可以继续使用。目前有一些技术手段,如网络地址转换(NAT),可以在一定程度上缓解 IPv4 地址不足的问题,因此一些组织可能认为 IPv6 升级并不是非常紧急。
-
IPv6 生态系统的不成熟:IPv6 协议的生态系统尚未完全成熟,相比 IPv4,还缺少一些成熟的应用和服务支持。这可能会导致一些组织和用户观望和等待,直到 IPv6 的生态系统更加成熟和稳定。
综上,IPv6 推广的缓慢主要是由于设备和软件的兼容性问题、高成本、IPv4 仍然可以工作以及 IPv6 生态系统的不成熟等原因。
有关 IPv4 和 IPv6,大家可以看一下这个视频:【硬件科普】IP 地址是什么东西?IPV6 和 IPV4 有什么区别?公网 IP 和私有 IP 又是什么?
五、网络设备简单介绍
5.1 交换机和路由器
集线器是早期的网络设备,工作在物理层,用于连接多个设备并将其数据传输到目标设备。集线器工作在物理层,通过广播方式将数据传送给所有连接的设备,无法实现数据的筛选和隔离。
交换机是集线器的进一步演化,工作在数据链路层到物理层,它在网络中建立虚拟连接表(MAC表),能够根据目标MAC地址直接将数据传输到目标设备,提高了网络传输速度和带宽利用率。交换机也能够隔离冲突域,提供更高效的数据传输。
路由器是在网络层到物理层上工作的设备,它能够将数据从源设备传输到目标设备,通过选择最佳路径进行数据的传输。路由器使用路由表来确定数据传输的路径,并能够实现网络分段和子网间通信。路由器也可以实现网络的连接和隔离,提供网络之间的转发功能。
单纯从技术角度来说,路由器与交换机扮演的角色是不同的。交换机属于二层网络设备,而路由器则是三层网络设备。通俗地来说,路由器是一个数据交换枢纽,而交换机是一个网络端口数量扩展器。
众所周知,路由器上都会有3-4个LAN口,所以路由器也可以当一台交换机使用。目前,很多工薪阶层都是3室或4室的房子,一台拥有4个LAN口的无线路由器,完全可以满足家庭组网的需求。从这一角度来说,家庭网络通常是不需要购置交换机的。
5.2 网卡
网卡(Network Interface Card),又称为网络适配器或网络接口卡,是一种用于连接计算机与网络之间的硬件设备。它允许计算机通过网络与其他设备进行通信和数据传输。
网卡通常以插入计算机的扩展插槽或者通过USB接口的形式连接到计算机主机(现在的网卡大都集成在电脑主板上)。它具有一个或多个网络接口连接用于与网络中的其他设备建立物理连接。
网卡的主要功能是实现计算机与网络之间的数据通信。它负责将计算机中的数据转换为符合网络通信协议的数据包,并通过物理连接将数据包发送到网络中。同时,网卡也负责接收来自网络的数据包,并将其转发给计算机的其他组件进行处理。
此外,网卡也可以支持不同的网络协议(数据链路层),如以太网、无线网络(Wi-Fi)等。
5.3 调制解调器
调制解调器(Modem)也叫做“猫”,是一种用于在数字信号和模拟信号之间进行转换的设备,工作在物理层。在数字通信中,数据以二进制形式(0和1)传输。而电话线路或电缆信号是模拟信号,通过调制解调器可以将数字信号转换为模拟信号,以便在模拟传输介质上进行传输。
调制过程是将数字信号转换为模拟信号。调制器将数据信号与载波信号相结合,通过改变载波信号的特征(如频率、振幅或相位)来代表不同的数字信息。常见的调制技术包括调幅(AM)、调频(FM)和调相(PM)。
解调过程是将模拟信号重新转换为数字信号。解调器从接收到的模拟信号中提取出载波信号,并将其转换回原始的数字信号。
调制解调器广泛应用于各种数据通信领域,例如互联网接入、传真传输和电话通信等。它们是数字通信与模拟传输介质之间的桥梁,使得数字设备能够与传统的模拟通信系统兼容并互相通信。