一、计算机网络背景
计算机网络的发展背景可以追溯到20世纪初。以下是计算机网络发展的一些重要背景因素和阶段:
总的来说,计算机网络的发展背景涵盖了技术、政治、商业和社会因素,互联网已经成为全球通信和信息交流的基础设施,并持续演化以满足不断变化的需求和挑战。
二、认识“协议”
协议在我们日常生活中随处可见!!!
我们人与人能正常的沟通,实际上就是“协议”作用!比如语言的“协议”、动作的“协议”,随着社会的发展、语言的发展…已经形成了很多约定俗成的“协议”
所以“协议”从根本作用上看,就是为了能够更高效的沟通!
三、从协议到分层
在上图的例子中,A和C都是中国人,他们都讲汉语,也就是他们共同遵守了“汉语协议”所以他们才能高效地沟通
而他们通过电话这种通信设备进行通信,那A的电话机是怎样与C的电话机进行通信呢? —— 因为遵守了“电话机协议”
我们再思考和发现,好像协议也能分类、分层!
为何需要分层
从上图例子中,汉语交流遵循了“汉语协议”我们可以统一为在“语言协议层”遵循协议;通过电话机远程通信可以统一为在“通信设备层”遵循协议
如此分层之后,我们就不用强耦合地去设置:只能遵循于“汉语协议”和“电话机协议”的通信过程;而是将通信过程的协议分为“语言层”和“通信设备层”。如此一来,我们通信的过程中就可以灵活地适应和变化,也就是 —— 低耦合
网络通信的过程是十分复杂的,需要经过很多环节。如果不分层,当有其他情况或者变动就无法灵活适应。
所以我们分层的依据是:功能比较集中,耦合度比较高的模块就分为一层;每一层都要解决特定的问题!
因此,通过上图的例子,我们便能深刻地认识到“协议”和“分层”带来的通信效率
四、OSI七层模型
- OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
- OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
- 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯
⭕OSI七层模型的各个分层:
五、TCP/IP协议
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。
- 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层
- 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层
- 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层
- 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机
- 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层
一般而言
- 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容
- 对于一台路由器, 它实现了从网络层到物理层
- 对于一台交换机, 它实现了从数据链路层到物理层
- 对于集线器, 它只实现了物理层
六、网络传输流程
1- 数据包封装和分用
由上文我们知道,网络通信的过程中分出了好几层,每一层都有其对应的协议。协议其实就是一种约定,可以理解为就像签订了某种说明书;所以通信数据通过网络传输必定经过一个层层封装到层层解封的过程。
在上面这个例子中:
- “洗面奶”就相当于网络通信中的数据,添加的“说明书”“寄快递信息”就相当于经过每层协议时,添加了对应协议的“协议报头”,用于说明此层协议的信息。
- 在到我手里之前,对“洗面奶”添加的每一层,就是网络数据对报文进行封装的过程;我拿到手之后要一层层拆开,就是同理于对网络报文进行解包
⭕通过上面例子的理解,现在我们可以更加深刻的体会知识
- 协议每一层都有,而每一个协议的最终表现就是都要有报头
- 协议通常都是通过协议报头来进行表达的
- 每一份数据最终在发送时,和接收时,都会经过一层层“报头封装”和“报头解包”的过程
数据包封装和分用
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)
- 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息,称为报头
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理
🚩下图为数据封装的过程(解包则相反)
🚩下图为数据包分用的过程
2- 网络传输流程
同一个网段内的两台主机进行文件传输
跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器
⭕综上所述,网络通信的过程,就是数据包从发送端开始,经过一层层网络协议栈的协议报头封装,一层层发送到接收端的底层,再经过一层层网络协议栈的解包,最终到用户端拿到数据。而要时刻记得,通信是一个双向的过程。
⭕TCP/IP的五层层级结构,每一层都有什么内容、做了什么事、如何具体解包分用、协议的内容… … 就是我们计算机网络所要学习的主要内容及核心。等到一连贯的知识学习后,我们便能深刻了解一个数据包,是如何从我们的主机发送到别人的主机。
七、网络中的地址管理
1- 认识IP地址
IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4
- IP地址是在IP协议中, 用来标识网络中不同主机的地址;
- 对于IPv4来说, IP地址是一个4字节, 32位的整数;
- 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;
2- 认识MAC地址
- MAC地址用来识别数据链路层中相连的节点;
- 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
- 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)
🌰
举个例子:现在我们去旅游,会有一个目的地,但是往往都不是能够瞬间从起点咻的一下到达终点,中间会途径各种地点,而中间途径各种地点的时候如何选择下一个地点,就是因为我们知道了我们终点是哪,终点在哪个方向