
🎬 个人主页:HABuo
📖 个人专栏:《C++系列》《Linux系列》《数据结构》《C语言系列》《Python系列》《YOLO系列》
⛰️ 如果再也不能见到你,祝你早安,午安,晚安

目录
前言:
本篇博客我们踏入计算机网络板块的学习,这篇博客主要是了解网络的基础知识,目的是在大家的脑海中建立一个整体流程的框架,我将以幽默风趣的例子开始,相对较轻松!
📚一、网络背景
网络其实就是进程间通信的一种,跨网络通信是在不同主机上进行的(比如我在杭州要访问软件QQ,而QQ的服务器进程可能在深圳),所有的网络问题:本质都是传输距离变长了!跨网络通信需要解决一些问题,比如:
- 如何处理在网络中获取的数据?
- 在网络中丢包了应该咋办?
- 怎样定位要访问的主机或要访问的进程?
- 现实生活中有很多路由器可以当网络的跳板,怎样知晓下一跳往哪儿走?
如何让这些不同厂商之间生产的计算机能够相互顺畅的通信?就需要有人站出来,约定一个共同的标准,大家都来遵守,这就是网络协议;协议的本质就是一层软件层而像大家听说过的HTTP ,TCP/IP协议就是在这种场景下诞生的
怎么理解协议呢?我们先举个简单的例子在大家的脑子中建立一个宏观的概念:
假设你要给远方的朋友寄一箱家乡特产。你和快递公司之间其实就遵守了一套 “寄快递协议”。
1. 寻址与标识(类似IP地址 + MAC地址)
你的地址:寄件人姓名、电话、详细地址。→ 就像IP地址,能全球唯一确定你的位置。
朋友的地址:收件人同样的信息。→ 就是目标IP地址。
快递单号:每个包裹有一个唯一编号。→ 相当于数据包的ID,方便追踪和重传。
没有这些地址信息,快递员根本不知道往哪儿送。网络里没有IP地址,数据包也找不到目标机器。
2. 封装与解封装(类似数据包分层)
封装:你把特产装进纸箱,封好,外面贴上快递单(上面有地址、单号)。
→ 就像网络数据:应用层数据(特产)被加上TCP头(快递单)和IP头(地址标签),再套上以太网头(快递公司内部用的中转码)。解封装:朋友收到箱子,撕掉快递单,打开纸箱,拿到特产。
→ 就像接收方一层层剥掉头部,最终得到原始数据。3. 差错控制(类似TCP的重传与校验)
如果箱子破了:快递员会重新打包,或者通知你补寄。→ 类似网络校验和失败后请求重传。
朋友没收到:你凭单号查询,快递公司会查找甚至赔偿。→ 类似TCP的超时重传机制。
4. 流量控制与拥塞控制
你一下子寄了100箱,快递公司的小三轮装不下。他们会告诉你“今天只能收10箱,剩下的明天来”。→ 这就是流量控制:接收方(快递公司)告诉发送方“我忙不过来,慢点发”。
双十一期间,整个物流网络爆满。快递公司会限制每个发货点每天的发货量,避免全网瘫痪。→ 这就是拥塞控制:网络中间节点过载,发送方主动降低速率。
5. 连接建立与释放(类似TCP三次握手和四次挥手)
三次握手:你打电话给快递公司——“能寄吗?” 客服说——“能,您寄什么?” 你说——“寄特产,地址确认。” 然后双方开始正式寄送。→ 就像TCP的SYN, SYN-ACK, ACK。
四次挥手:寄完后,你说——“我要结束。” 客服说——“收到,我这边还有单子要填。” 填完后客服说——“我也结束了。” 你说——“好,拜拜。”→ 就像TCP的FIN和ACK交替,确保双方都没话说了才关闭连接。
相信看了上面的例子也仅是看了,具体的一些术语我们还没了解,不懂问题也不大,但我想强调的就是协议就是寄快递时那一套完整的规定:怎么填单、怎么打包、怎么纠错、怎么控制速度、怎么开始和结束。这是我们约定好的!
在网络世界里,只不过把“快递员”换成了“路由器”,“快递单”换成了“TCP/IP头”,“物流中心”换成了“交换机”。
下面我们逐步的来了解!
📚二、网络分层
📖2.1 为什么需要分层
- 软件设计方面的优势一>低耦合
- 一般我们的分层依据:功能比较集中,耦合度比较高的模块一层,—->高内聚
- 每一层都要解决特定的问题!
网络分层是为了把一个复杂、不可控的端到端通信问题,分解成多个简单、可控的局部问题。每一层解决一个小问题,通过标准接口协作,最终实现了全球范围内的设备互联。每一层都有自己匹配的协议,每一层协议都解决自己的问题。就像快递公司如果没有分拣层、运输层、网点层的分工,你寄一个包裹就会天下大乱。网络分层就是现代互联网能运转的骨架。
📖2.2 网络分层是什么
其实网络模型具体被分为了七层,叫做OSI七层模型,但是其实只用四层模型就能很好的解决问题,所以我们主要学习的也是四层网络模型(又称TCP/IP四层模型),对于其它层大家可以通过下面几篇文章稍作了解:
四层模型以及它们的协议:
- 应用层(HTTP协议)
- 传输层(TCP/UDP协议)
- 网络层(IP协议)
- 数据链路层(ARP协议)

📚三、网络传输的基本流程
首先我们需要明确下面的观点:
- 每一层都有自己的协议定制的方案
- 每一层都要有自己的协议报头(字段)
- 从上到下交付数据时,要添加报头
- 从下到上递交数据时,要去掉报头
对于报头,就是本篇开始例子中的快递单(地址姓名电话等),它是快递员和收货人获得快递的标识!而报头也就是在网络传输中在各层之间能够沿着唯一的路线传输的标识!

这个图比较抽象,但是可以看出一点,客户端和服务器的每一层使用的协议都是一样的,也就是说,在客户端的X层添加了协议报头的数据,在服务器的X层会使用同样的协议来拆解报头,具体如下图所示。除此之外,数据在经过数据链路层后,可能会经过多个路由器才能到达对方服务器。


含有路由器的数据传输流程:

数据要跨网络,我们在家中通常有个路由器,那么这个路由器的作用是什么呢?
在网络层的IP协议中,路由器的网络协议栈及其同层的IP协议上看到的都是同一个报头为IP地址的一个报文,所以IP协议靠着工作在网络层IP协议的路由器完美的屏蔽了底层网络的差异化,因此无论你底层用的是的以太网,亦或者是令牌环网还是无线LAN,当报文递达到网络层IP协议后,拿到的永远是IP报文,所以IP协议实现了全局主机的软件虚拟层,一切都是IP报文,因此路由器的存在屏蔽底层网络的差异,由此我们也清楚路由器必然有两个网络接口
整体的传输流程如下图:

📚四、IP地址 和MAC地址
认识IP地址:
IP协议 有两个版本, IPv4和IPv6。我们只讲IPv4,也是最常用的
- IP地址是在IP协议中, 用来标识网络中不同主机的地址;
- 对于IPv4来说, IP地址是一个4字节, 32位的整数;
- 我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;
认识MAC地址:
- MAC地址用来识别数据链路层中相连的节点;
- 长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
- 在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)
IP地址和MAC地址的区别:我们依然用熟悉的“寄快递/寄信”来类比
MAC地址(Media Access Control Address)
全称:介质访问控制地址。
长度:48位,通常写成12个十六进制数,如
00:1A:2B:3C:4D:5E。特点:
出厂时烧录在网卡(网络接口卡)上,理论上全球唯一。
不会改变,即使你带着笔记本电脑从北京飞到纽约,MAC地址还是那个。
只在同一个局域网内部有效,路由器不会转发MAC地址到外网。
通俗理解:身份证号
你出生时就有一个身份证号(假设终身不变)。
无论你搬家到哪个城市、住哪条街,身份证号永远跟着你。
邮递员在同一个小区内送信时,可以根据身份证号找到具体的人(但寄件人不需要知道你的身份证号,只需要知道你的住址)。
MAC地址的作用:同一个网络内找设备
在局域网(比如你家Wi-Fi、公司交换机)里,数据包通过 MAC地址 找到具体是哪台电脑、手机或打印机。
命令查看:Linux下用
ip link或ifconfig,Windows下用ipconfig /all。
IP地址(Internet Protocol Address)
全称:互联网协议地址。
常见版本:IPv4(如
192.168.1.1)或 IPv6(如2001:db8::1)。特点:
逻辑地址,可以手动配置或由DHCP服务器自动分配。
可以改变:你换一个Wi-Fi,IP地址就会变。
具有层级结构:包含网络号和主机号,用来路由数据包从源到目标(跨越不同网络)。
通俗理解:你的家庭住址
你搬家后,身份证号没变,但住址变了。
寄快递时,快递公司只看住址(IP地址),不需要看你的身份证号。
快递公司根据“省/市/区/街道/门牌号”(IP地址的层级结构)一步步把包裹送到你家。
IP地址的作用:全球范围定位设备
互联网上的路由器根据 IP地址 决定数据包下一跳去哪,最终到达目标网络。
命令查看:Linux下
ip addr或hostname -I。
它们如何协同工作?以发信息为例:
你要给朋友发一个微信消息:
-
你知道朋友的IP地址(相当于知道他家的“省市区街道门牌号”)。
你的电脑把消息封装成数据包,目标IP = 朋友的IP。 -
数据包先交给网关路由器(通常是家里的WiFi路由器)。
路由器看目标IP,决定发往互联网下一站。这个过程中,路由器只关心IP,不关心MAC。 -
当数据包最终到达朋友所在的局域网(比如他公司的交换机)时,IP地址已经帮我们定位到了正确的“小区”。
但交换机不知道哪个端口连着朋友的电脑,怎么办?
→ 用 ARP协议(地址解析协议):交换机问“谁有这个IP地址?请告诉我你的MAC地址。”
朋友的电脑回答:“是我,我的MAC是00:1A:2B:3C:4D:5E。” -
交换机根据MAC地址,把数据包从正确的端口发出去,最终送到朋友的电脑。
总结协同过程:
-
IP地址负责从源到目标跨网络的“长途导航”。
-
MAC地址负责在同一个局域网内部的“最后一公里”投递。
📚五、总结
本篇博客我们主要学习了计算机网络的基础知识,主要目的是建立一个宏观的框架!小结一下:
什么是协议:协议就是寄快递时那一套完整的规定:怎么填单、怎么打包、怎么纠错、怎么控制速度、怎么开始和结束。这是我们约定好的!
四层网络分层:应用层、传输层、网络层、数据链路层
数据在网络中的传输流程:整体就是一个数据包逐步封装和分用的一个过程
MAC地址和IP地址的区别:
-
IP地址负责从源到目标跨网络的“长途导航”。
-
MAC地址负责在同一个局域网内部的“最后一公里”投递。

1724

被折叠的 条评论
为什么被折叠?



