文章目录
- 1. 网络发展历史
- 2. 认识协议
- OSI七层协议
- 3. TCP/IP协议
- 网络与操作系统
- 4. 数据传输流程
- 4.1 数据包的封装和分用
- 4.2 同一局域网两台主机的通信
- 4.3 跨一个路由器的两个局域网的通信
- 5. 网络中的地址管理
- IP地址
- MAC地址
1. 网络发展历史
💨计算机网络的发展历史可以分为几个关键阶段,其中包括从单机模式到局域网(LAN),以及从局域网到广域网(WAN)的过程。
-
单机模式
早期的计算机系统通常是孤立的单机,没有互联互通的能力。数据处理主要依赖于单台计算机,没有数据共享和协作的机制。
-
局域网
单机模式使用计算机无法满足日渐提高的对计算机的使用需求,计算机是人在使用的,有人的地方就要有通信。在1970年代晚期和1980年代初期,局域网(LAN)的概念开始发展。Xerox PARC的研究人员首次开发了以太网(Ethernet)技术,它允许多台计算机在短距离内连接并共享资源。 LAN的兴起使得计算机可以在小范围内互相通信和共享资源,如打印机和文件。
局域网是一个小范围内的计算机和设备网络,通常是在家庭、办公室、学校等地建立的,用于本地通信和资源共享。局域网的规模相对较小,通常包含一组相互连接的设备,如计算机、打印机、服务器等。在局域网中,设备通常通过交换机(Switch)或集线器(Hub)等设备相互连接,以便彼此之间进行通信和资源共享。
-
广域网
随着计算机网络的发展,人们开始需要更大范围的互联互通,这促使了广域网(WAN)的兴起。WAN允许远距离的计算机互相连接,最著名的例子是互联网。
路由器充当了局域网和广域网之间的边界设备,它负责将局域网内的数据流量与外部网络连接进行路由和转发。路由器还可以执行网络地址转换(NAT)等功能,允许多个设备共享单个公共IP地址。
2. 认识协议
- “协议”
人与人之间沟通需要达成某种共识,如:一个法国人和一个印度人,他们互相都听不懂各自的语言,但是都会说英语,因此可以用英语来交流。共识是通信双方在通信之前就达成的某种协议,发出双方都能懂的信号,人与人之间交流需要这种协议,计算机进行网络通信也需要协议。
- 分层设计
目前的网络协议以分层的形式设计。网络协议分层是为了提高网络的可维护性、可扩展性和互操作性,同时简化网络设计和开发过程。将网络协议划分为不同的层级,每个层级负责特定的功能。通信双方,从逻辑上来说,只是同层协议在进行通信,上层协议复用下层协议的功能实现,下层协议支持上层协议的通信,运用“封装”的思想。
OSI七层协议
- OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。把网络从逻辑上分为了7层,每一层都有相关、相对应的物理设备,比如路由器,交换机;
- OSI七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
- OSI的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通信。
⭕OSI七层模型的各个分层及对应功能如下:
但是, 它既复杂又不实用,所以我们一般学习的是TCP/IP协议。
3. TCP/IP协议
💭TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
物理层:负责光/电信号的传递方式。比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。
数据链路层:负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作,有以太网、令牌环网、无线LAN等标准。交换机(Switch)工作在数据链路层。
网络层:负责地址管理和路由选择。 例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(途径的路由)。路由器(Router)工作在网络层。
传输层: 负责两台主机之间的数据传输。如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机。
应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。
网络与操作系统
-
网络本质是操作系统中一个重要组成模块。Linux的网络协议栈支持多种协议,其中最重要的是TCP/IP协议。TCP/IP协议五层协议中,真正属于OS内核的是传输层和网络层,OS提供了一组访问传输层和网络层的接口,供应用层使用。Linux中一切皆文件,网络协议栈也不例外,传输层和网络层的接口必然会涉及文件的访问。
-
全世界有巨大数量的计算机,每台计算机的OS可以不同,但OS中的网络协议必须相同,这样才能保证不同主机之间的网络通信,目前互联网遵循的协议就是TCP/IP协议族。而数据链路层控制网络层与物理层之间的通信,在计算机中一般以驱动程序的形式工作。不同主机的数据链路层标准可以不同,有以太网、令牌环网、无线LAN等标准。
4. 数据传输流程
4.1 数据包的封装和分用
-
数据包由用户数据传入TCP/IP协议,从上层往下层传。不同的协议层对数据包有不同的称谓,在传输层称为段(Segment),在网络层称为数据报(Datagram),在数据链路层称为数据帧(Frame)。
-
每一协议层往下层传输数据包时,会在有效载荷(由上层传入的数据包)首部添加一个报头(header),这就是数据包的封装。不同协议层添加的报头不同,报头存储对应层的相关信息,例如:有效载荷的长度、目标主机的IP、源主机的IP。
⭕下面是数据封装的过程:
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理。这就是数据包的分用。
⭕下面是数据分用的过程:
4.2 同一局域网两台主机的通信
局域网中,任何时刻只允许一个主机发送数据。携带数据链路层协议(内含目标主机mac地址)的报头 ,传输给每一个主机,其它主机接收到数据,检查报头,不是给自己的就丢弃了,目标主机检测到是发送给自己的数据,就接收了,并往上层协议传递。
4.3 跨一个路由器的两个局域网的通信
5. 网络中的地址管理
IP地址
IP地址是应用于网络层IP协议的地址,用于标定网络中的唯一一台主机。 IP协议有两个版本:IPv4和IPv6,目前主流的是IPv4。
IPv4以一个4字节、32比特位的整数存储IP地址,可以组成232(约42亿)个ip地址。(IPv6地址由128比特位整数表示)
为了方便使用,通常使用"点分十进制"的字符串来表示IP地址。如“192.168.0.1”,用点分的每一段数字表示1字节,这种表示方法的IP地址范围是:0.0.0.0~255.255.255.255。
MAC地址
MAC地址是应用于数据链路层的地址,每一台主机的MAC地址都是唯一的,在网卡出厂时就确定了,不能修改。
MAC地址的长度6字节,既48比特位,一般用十六进制数字加上冒号的形式来表示(例如: 08:23:00:03:fb:15)
⭕IP地址和MAC地址的区别
在网络通信过程中,IP地址用于标识源主机和目标主机,在整个过程中是不变的,相当于限定了起点和终点。而MAC地址用于在路径选择完成后,选择并标识下一跳主机,因此它在整个通信过程中是动态变化的,相当于到达每一站,当前的上站和下站都与上一次不同。
Ending…