🌠 作者:@阿亮joy.
🎆专栏:《学会Linux》
🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根
目录
👉计算机网络背景👈
网络发展
计算机网络的发展可以追溯到20世纪60年代,那时候最初的计算机网络只是为了让科学家们能够共享计算机资源和数据。但是在20世纪80年代,互联网的出现彻底改变了计算机网络的面貌,使得人们可以随时随地通过互联网进行信息交流和数据共享。
随着计算机技术的不断发展,网络技术也在不断创新和改进。在20世纪90年代,出现了无线网络技术,这让人们可以不受线缆限制地随时随地上网。随后,移动互联网的出现进一步推动了网络技术的发展,现在人们已经可以通过手机、平板电脑和其他移动设备随时随地访问网络。
此外,云计算和大数据技术的出现也为网络技术的发展带来了新的机遇。云计算可以让人们通过网络访问存储在远程服务器上的计算资源,而大数据技术则可以让人们更好地管理、分析和利用海量数据。
在未来,随着物联网、人工智能等新兴技术的不断发展,计算机网络技术将会更加智能化、自动化和普及化,为人们的生活和工作带来更多的便利和创新。
局域网和广域网
- 独立模式:计算机之间相互独立。
- 网络互联:多台计算机连接在一起,完成数据共享。
局域网(Local Area Network,LAN)和广域网(Wide Area Network,WAN)是两种常见的计算机网络类型。
局域网是一种较小范围内的网络,通常是在办公室、学校、住宅区等局部范围内使用。局域网中的计算机通常是通过同一网络设备(比如路由器或交换机)连接在一起,以便在这些计算机之间共享文件、打印机、应用程序和其他网络资源。在局域网中,通常不需要经过互联网,因为所有计算机都连接在同一网络中。
而广域网则是一种更大范围的网络,可以涵盖更广泛的地域范围。广域网通常由多个局域网和其他网络连接而成,通过广域网的互联,计算机和其他网络设备可以在全球范围内相互通信和交流。广域网通常使用互联网协议(IP)连接各种计算机和网络设备,而且通常需要使用专门的路由器、交换机、光纤和其他网络设备来连接这些不同的局域网和其他网络。
所谓局域网和广域网只是一个相对的概念,比如:我们有 “天朝特色” 的广域网,也可以看做一个比较大的局域网。总的来说,局域网主要用于小规模内部的文件共享和资源访问,而广域网则更适合大规模的远程访问和通信。
那么网络是由谁搭建起来的呢?
我们国家的网络是由多个机构和企业共同建设和维护的。中国的互联网基础设施主要由国家电信运营商中国电信、中国移动和中国联通等企业负责建设和维护。这些企业拥有全国性的网络覆盖,包括光纤、卫星、无线等多种传输方式,通过这些传输方式,连接了全国各地的用户和服务提供商。
除了这些运营商外,我们的政府也参与了互联网的建设和管理。我国的互联网管理机构包括了国家互联网信息办公室、工业和信息化部、公安部等,他们负责颁布和执行相关的互联网管理法规和政策,维护互联网安全和稳定,并监管和管理互联网的内容和使用行为。
总的来说,我国的网络是由政府、企业和其他机构共同建设和维护的。这些机构通过各自的专业领域和职责,合作构建了一个覆盖全国的互联网基础设施和服务体系。
👉网络协议初识👈
什么是协议
在计算机网络中,协议是计算机网络中各种设备之间通信的规则和标准。它们定义了不同类型的计算机、服务器、路由器、交换机等设备之间如何进行通信、交换数据和控制信息的方式。通俗来说,协议就是一种约定。协议在计算机网络中扮演着重要的角色,使得不同设备之间的通信更加高效、安全和可靠。
计算机之间的传输媒介是光信号和电信号。通过频率和强弱来表示 0 和 1 这样的信息,要想传递各种不同的信息,就需要约定好双方的数据格式。进行通信的两台主机,并不是在软件层面上约定协议就可以了。计算机硬件厂商用不同的方式来表示 0 和 1(不同的硬件标准),两台不同厂商的主机也无法进行通信,即使它们遵守同样的约定。这时候就需要一个统一的标准,这就是网络协议。
协议分层
操作系统内是存在多种协议的,那么操作系统需要通过先描述再组织的方式来管理这些协议。
协议的本质就是软件,软件是可以进行分层的。比如:Linux 下一切皆文件,将所有的设备、文件、目录以及进程等都被视为文件(struct file 对象),struct file 对象中包含函数指针,指向不同的方法,这就实现了软件分层。
那什么是协议分层呢?协议分层是指将一个复杂的通信系统划分为多个层次,每个层次都有不同的功能和责任,协议在不同的层次之间进行交互和通信。协议分层的优势就是在复杂的场景下,它可以使不同层次之间的功能独立(解耦),提高了系统的可维护性、可扩展性和可靠性,同时也为不同厂家的设备之间的通信提供了标准化的接口。所以,网络协议也是被设计成了层状结构。
在打电话这个例子中,我们的协议只有两层:但是实际的网络通信会更加复杂,需要分更多的层次。
通信场景的复杂性,是和通信的距离成正相关的,那么协议栈就要解决通行过程中的应用范畴和通信范畴中的问题。应用范畴包括应用层,通信范畴包括传输层、网络层、数据链路层和物理层。
- 应用层:应用层是最上层的协议层,负责应用程序之间的通信(如何处理数据)。在这个层次上,各种应用程序可以使用标准协议进行数据交换,如HTTP、SMTP、FTP等。
- 传输层:传输层负责数据传输的可靠性和流量控制(丢包问题)。在这个层次上,TCP和UDP是两个最常见的协议,TCP是一种可靠的面向连接的协议,而UDP则是一种无连接的协议。
- 网络层:网络层负责网络地址的定义和路由选择(定位问题)。在这个层次上,常用的协议有IP和ICMP,IP协议负责将数据包从源地址传输到目的地址,而ICMP协议则用于检测和报告网络错误。
- 数据链路层:它主要负责将物理层提供的原始比特流转换为帧(Frame),并进行传输控制和帧同步等操作。数据链路层的主要作用是将数据包分割成较小的单元进行传输,同时确保这些数据单元在链路中的可靠传输和错误检测。数据链路层的典型协议有以太网(Ethernet)和无线局域网(WiFi)等。
- 物理层是计算机网络中的最底层,它负责传输比特流,并将其转换为物理信号。物理层的主要作用是定义传输介质、传输速率、信号编码方式等,以及实现数据的传输和同步。物理层的典型协议有RS-232、V.35等,以及传输介质如光纤、电缆等。
- 数据链路层和物理层共同构成了计算机网络的物理传输层,负责将数据从一个网络节点传输到另一个节点。
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 等。
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 四层模型。
一般而言,对于一台主机,它的操作系统内核实现了从传输层到网络层的内容;对于一台路由器,它实现了从网络层到物理层;对于一台交换机,它实现了从数据链路层到物理层;对于集线器,它只实现了物理层。但是并不绝对. 很多交换机也实现了网络层的转发,很多路由器也实现了部分传输层的内容(比如端口转发)。
👉网络传输基本流程👈
局域网通信原理
在同一个局域网中,每个主机都有一个唯一的 MAC 地址(48 位的二进制数,通常用 16 进制表示),这是通过网卡硬件设备分配的。当一台主机要向另一台主机发送数据时,它会将数据包打上目标 MAC 地址并广播到整个网络中,所有连接在该网络上的主机都会接收到这个数据包,但只有目标 MAC 地址与自己的 MAC 地址相匹配的主机才会处理这个数据包。这样,数据包就能够直接传输到目标主机,从而实现两台主机之间的直接通信。
在局域网中,多个主机共享同一个物理网络,因此当多个主机同时发送数据时,可能会发生数据碰撞(Collision)的情况。这是因为多个主机的信号可能会同时到达同一个物理介质上,导致信号相互干扰,从而导致数据错误和丢失。
数据碰撞问题是由于共享介质的特点所导致的。在以太网中,多个主机连接在同一段电缆上,数据包被广播到整个网络中。如果两个或更多的主机同时发送数据包,它们的信号可能会在电缆上碰撞,从而导致数据包损坏或丢失。
为了解决数据碰撞的问题,以太网采用了 CSMA / CD 协议。CSMA / CD 协议意味着 “带冲突检测的载波侦听多路访问”,它规定了当主机要发送数据时,需要先侦听介质上是否有其他主机正在发送数据。如果介质上有信号,主机就会等待一段随机时间后再发送数据。如果多个主机同时发送数据,会发生碰撞,这时所有的主机都会检测到冲突,并停止发送数据。接着,每个主机会等待一段随机时间后再次尝试发送数据,直到成功为止。
除了 CSMA / CD 协议,局域网还可以采用其他方法来解决数据碰撞问题,如使用交换机或使用全双工通信等技术。
数据包封装和分用
什么是协议报头?它有什么作用?
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment)在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个报头(header),称为封装(Encapsulation)。
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的报头,根据首部中的上层协议字段将数据交给对应的上层协议处理。
封装和解包:封装可以看做入栈,解包可以看做出栈。
下图为数据封装的过程:
下图为数据分用的过程:
了解了封装和解包的过程,那可以很清楚地知道每个协议都需要考虑如何对数据进行解包和将有效载荷交给上层的哪一个协议的问题。
不同局域网的通信原理
位于两个不同局域网的主机要进行通信,需要经过路由器的转发。当源主机发送数据时,数据会被封装成数据包并在数据包的首部中携带有目标主机的 IP 地址。由于源主机和目标主机不在同一个局域网中,因此数据包必须经过路由器进行转发。
当路由器接收到数据包时,它会检查目标 IP 地址并根据自己的路由表确定下一跳路由器或目标主机所在的网络。如果目标主机所在的网络不是当前路由器直接连接的网络,那么路由器就需要将数据包转发给下一个路由器。这个过程会一直持续,直到数据包到达目标主机所在的网络。
路由器之间的数据包传输可以通过不同的协议实现,例如IP路由协议、OSPF、BGP 等。这些协议会对数据包的转发过程进行控制和管理,确保数据包能够按照最佳路径进行传输。在数据包传输的过程中,数据包可能会经过多个路由器,每个路由器都会检查目标IP地址并将数据包转发给下一个路由器或目标主机。
因此,位于两个不同局域网的主机进行通信的原理是通过路由器进行转发,将数据包从源主机转发到目标主机所在的网络。这个过程需要路由器之间进行协同工作,按照最佳路径进行数据包的传输。
👉网络中的地址管理👈
认识MAC地址和IP地址
MAC 地址和 IP 地址是用于在计算机网络中识别不同设备的两种不同的地址。
MAC 地址是由设备制造商预先设置的全球唯一的地址,通常包含 48 个比特(6个字节)。MAC 地址是用于在局域网中唯一标识一个设备的地址,是以太网技术的基础。MAC地址的格式通常是 6 组十六进制数,以冒号分隔。注:虚拟机中的 MAC 地址不是真实的 MAC 地址,可能会冲突,也有些网卡支持用户配置 MAC 地址。
IP 地址是一个 32 位的数字地址,通常分为四个 8 位组,每个组的值为 0-255。我们通常使用点分十进制的字符串表示 IP 地址, 例如:192.168.0.1,用点分割的每一个数字表示一个字节。IP地址用于在 Internet 上唯一标识一个设备。IP 地址由网络管理员分配给每个设备,以便在Internet 上进行通信。IP 地址分为 IPv4 和 IPv6 两种格式,IPv4 采用 32 位地址,而 IPv6 采用 128 位地址。注:凡是提到 IP 协议,没有特殊说明的,默认都是指 IPv4。
MAC 地址和 IP 地址之间的最大区别在于,MAC 地址是用于在局域网中唯一标识设备的地址,而 IP 地址是用于在 Internet 上唯一标识设备的地址。另外,MAC 地址是由设备制造商预先设置的,而 IP 地址是由网络管理员分配的。在网络通信过程中,计算机使用IP地址来找到其他计算机,并使用 MAC 地址来将数据帧从一个设备传输到另一个设备。
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 又是什么?
👉总结👈
本篇博客主要介绍了什么是局域网和广域网、什么是协议、协议分层、OSI七层模型、TCP/IP五层模型、局域网通信原理、数据包封装和分用、不同局域网的通信原理、什么是MAC地址和IP地址、MAC地址和IP地址的区别以及IPv4地址不足问题和IPv6推广缓慢问题等等。以上就是本篇博客的全部内容了,如果大家觉得有收获的话,可以点个三连支持一下!谢谢大家啦!💖💝❣️
版权归原作者 阿亮joy. 所有, 如有侵权,请联系我们删除。