【Linux 网络篇】数据的 “循环系统“:协议认识与网络传输的流程
2026/8/12 16:49:59 网站建设 项目流程

于此止?:个人主页

本文选自专栏《Linux网络》

❄️个人专栏传送门:《Linux篇》 《QT百日筑基篇》 《算法篇》

《C++与STL剖析篇》 《数据结构篇》 《Python基础篇》 《嵌入式砺剑录》

⭐️纵有狂风拔地起,我亦乘风破万里⭐️

Linux网络基础

前言: 我们这里主要是认识一下对应我们初学网络的一些背景知识,我们的网络协议TCP/IP协议, 还有精谈我们对应网络和系统之间的一些了解。


目录/索引

目录

Linux网络基础

目录/索引

一、计算机网络背景

网络的发展

独立模式

网络互联

局域网LAN

广域网WAN

二、初识协议

理解协议

协议分层

软件分层的好处

OSI的七层模型

TCP/IP的五层模型

三、再识协议

为什么要有TCP/IP协议?

本地通信 vs 网络通信

管理我们的主机(软件)

什么是TCP/IP协议

TCP/IP协议与操作系统的关系(宏观上是怎么进行实现的)

所以究竟什么是协议?

四、网络传输的基本流程

局域网网络传输流程图

局域网(以太网为例)通信原理

认识MAC地址

数据传输的规则

信息传输的封装与解包

每层报头的命名

TCP/IP通讯的过程

再次了解我们的封装和解包

五、跨网络传输流程图

网络中的地址管理——认识IP地址

理解IP地址的意义

IP地址 vs Mac地址

提炼IP网络的意义和网络通信的宏观流程


一、计算机网络背景

网络的发展

网络的发展主要可以有以下的几个阶段

独立模式->联网模式->局域网LAN ->广域网WAN。

独立模式

独立模式:计算机相互独立;

我们下图有三个计算机, 每个计算机都有自己独立的终端。我们有三个工作人员, 分别完成下面的一些工作。这也是我们每个角色分配好的工作。我们每台计算机都只是执行一个业务,业务之间也不相互的进行联系。

网络互联

网络互联: 多台计算机链接在一起,完成数据的共享。

我们三个人同时使用一个后台的服务器。然后我们每个人都有一台独立的电脑,我们能在这个电脑每个人都能跑各自的业务。

局域网LAN

局域网LAN:计算机的数量增多,通过交换机和路由器连接在一起;

这样一来就能让我们的计算机更多的进行联网了。主要是从局部到整体。

广域网WAN

广域网WAN:将远隔千里的计算机简介到一起。

他的定义和我们的局域网(LAN)是类似的,都是实现多个计算机之间进行联网的。只是局域网要求我们计算机的间隔要近一些我们的广域网要远一些。实现我们的计算机之间的连接。

我们所谓的广域网也可以认为是一个比较大的局域网。

网络发展的必然性: 计算机是人的工具,人要进行协同工作,注定了网络的产生式必然的。

我们有各式各样的通信标准。以太网,无线LAN,令牌环网......。然而这些网都有一些独自的网络协议, 我们下面就来认识一下这些网络协议。


二、初识协议

减少通信成本协议是一种约定。

理解协议

我们先给出协议的规定。

我们每个人想要更好的去遵循一套标准(制作这一套标准的公司必须是遥遥领先的)这样我们每个人都去使用这一套对应的标准,这样我们每个人都是用一套相同的标准进行网络的使用, 我们将这种我们都要遵循的方法叫做协议, 也是我们使用网络的一种约定。

所以,1.协议是一种约定。

当我们有一些玩的很好的朋友我们之间会有一些约定,比如我们可以打电话为例,当我们在学校中,我们可以和父母之间进行一些约定, 比如我的电话铃声响了一秒就代表我没有生活费了, 我们铃声响了2s就代表我在给家里保平安, 3s代表我想让你接电话。所以,我们在打电话的时候也可以约定一些协议。

2.打电话的铃声的秒数就是是一个约定。

而在我们计算机中,计算机传递的媒介主要是光信号和电信号。这两者主要是通过“强弱”和“频率”来表示0和1这样的信息,要想传递各种不同的信息,就要约定好双方的数据格式。

思考: 只要通信的两台主机,约定好协议就可以了吗?

1.定好协议,但是你用的频率表示01,我的强弱表示01。就好比我说中文的你好, 你说英文的你好,虽然遵守的协议是一样的, 但是我们之间的语言是不同的,就定好了基本的协议,也是无法正常的进行通信的。

所以完善的协议需要更多细致的规定,并让参与的人都要遵守。

1、计算机的生产厂商有很多。

2、计算机的操作系统也有很多。

3、计算机的网络硬件也有很多。

4、如何让这些不同厂商之间生产的计算机能够相互顺畅的通信?就需要有人站出来,约定一个共同的标准,大家都来遵守,这就是网络协议。

一般是具有定制协议或者标准的资格和组织或者公司必须是业界公认或者是具有江湖地位的组织或者公司才会定制这些协议,这有这样我们大多数人都会遵循这些协议。

我们简单的看一下有哪些协议是由哪些公司规定的。

这里是由Deepseek生成:

ai关键词:能定制协议标准的组织或者公司

制定网络协议标准的主流组织与机构

一、国际权威标准化组织(核心制定方,非营利中立机构)

1. ISO(国际标准化组织)

  • 定位:全球最大综合标准化机构,制定通用网络体系框架

  • 核心成果:OSI 七层网络参考模型,奠定网络分层设计思想,是所有网络协议的理论框架;还制定物理层、数据链路层诸多硬件通信标准。

2. IEC(国际电工委员会)

常与 ISO 联合制定通信、电气底层硬件通信标准,侧重硬件电气传输规范。

3. ITU-T(国际电信联盟电信标准化部门,隶属于联合国)

  • 主管:电信运营商、广域网、语音通信、传输链路标准

  • 代表作:早期电话通信协议、PPP 协议、宽带接入标准、光纤传输协议,传统电信网络协议主力制定者。

4. IETF(互联网工程任务组,最贴近 TCP/IP 互联网体系)✅互联网最核心

  • 性质:松散开放的国际工程师联盟(非营利),现代互联网协议的绝对主导

  • 核心产出: TCP/IP 协议簇、IPv4/IPv6、HTTP/HTTPS、UDP、DNS、WebSocket、QUIC、BGP 路由协议等几乎所有互联网主流协议

  • 产出形式:RFC 文档(所有网络协议规范均以 RFC 编号公开存档)


二、行业技术联盟 / 论坛(产业协同定制标准)

1. IEEE(电气和电子工程师协会)

  • 聚焦:局域网、无线通信底层链路标准

  • 代表作:802.3 以太网标准、802.11 WiFi 无线局域网协议、蓝牙底层规范,电脑网线、无线网标准均由此制定。

2. W3C(万维网联盟)

  • 专注:网页应用层协议与 Web 规范

  • 成果:HTTP 系列、HTML、CSS、WebSocket、WebRTC、HTTPS 安全相关 Web 应用协议,负责浏览器与网页通信标准。


三、具备协议制定影响力的大型商业公司(无法单独定义通用国际标准,但可推动 / 设计私有协议,最终可提交标准化)

  1. 谷歌自研 QUIC 协议,提交至 IETF 标准化为 HTTP/3;主导 SPDY 演进为 HTTP/2;自研私有通信协议广泛用于安卓、云服务。

  2. 微软早期私有局域网通信协议,参与 IETF 标准化工作,推动 Windows 网络适配规范。

  3. 苹果参与 WiFi、蓝牙、流媒体通信标准制定,自研 AirPlay 私有投屏协议。

  4. 华为、思科路由、传输层协议的重要贡献厂商,向 IETF 提交大量技术草案,主导广域网、运营商网络优化协议;思科早年私有路由协议曾大范围商用。


四、补充关键常识

  1. 不存在某一家公司可以独自垄断通用互联网协议:全网互通要求标准中立开放,商用私有协议仅局限于自家产品内部使用;

  2. TCP/IP 体系早已取代 OSI 模型成为现实互联网标准,IETF 是当下互联网协议最核心的制定主体

  3. 硬件传输(网线、WiFi)看 IEEE,电信广域网看 ITU-T,网页应用看 W3C,整体框架由 ISO 定义。

协议分层

协议本质也是软件,在设计上为了更好的进行模块化,解耦合,也是被设计成层状结构的。

软件分层的好处

举个例子:我们的在打电话的过程中,我们属于语言层我们和接电话的人负责语言之间的交流, 而我们之间的交流不是面对面而是使用电话来进行交流的, 我们通过调用下层对应的接口输出信息,而后通过电话之间的协议,将我们说的话进行加密传输,而后经过接收人的电话,进行解密输出给用户,甚至我们除啦A和C之间的交流,我们还可以A和B之间进行交流,我们每一层都有每一层要做的事,能更好的进行解耦合。

总结:1.在这个例子中,我们的协议只有两层:语言层、通信设备层。

2.但是实际的网络通信协议中设计会更加的复杂,需要更多的层。

3.但是通过上面的简单例子,我们是能理解,分层可以实现解耦合,让软件维护的成本更低。


在这我们可以看到我们对应的网络的协议主要是OSI我们现在就来深度的了解一下OSI。

OSI的七层模型

  • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;

  • 把网络从逻辑上分为了 7 层。每一层都有相关、相对应的物理设备,比如路由器,交换机;

  • OSI 七层模型是一种框架性的设计方法,其最主要的功能就是帮助不同类型的主机实现数据传输;

  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;

  • 但是,它既复杂又不实用;所以我们按照 TCP/IP 四层模型来讲解.

分层名称功能每层功能概览
7 应用层针对特定应用的协议。电子邮件 → 电子邮件协议
远程登录 → 远程登录协议
文件传输 → 文件传输协议
6 表示层设备固有数据格式和网络标准数据格式的转换。网络标准格式
接收不同表现形式的信息,如文字流、图像、声音等
5 会话层通信管理。负责建立和断开通信连接(数据流动的逻辑通路)。管理传输层以下的分层。何时建立连接,何时断开连接以及保持多久的连接?
4 传输层管理两个节点之间的数据传输。负责可靠传输(确保数据可靠地传送到目标地址)。是否有数据丢失?
3 网络层地址管理与路由选择。经过哪个路由传递到目标地址?
2 数据链路层互连设备之间传送和识别数据帧。0101
数据帧与比特流之间的转换
分段转发
1 物理层以“0”、“1”代表电压的高低、灯光的闪灭。界定连接器和网线的规格。0101
比特流与电子信号之间的切换
连接器与网线的规格
  • 其实在网络角度,OSI 定的协议 7 层模型其实非常完善,但是在实际操作的过程中,会话层、表示层是不可能接入到操作系统中的,所以在工程实践中,最终落地的是 5 层协议。
  • 但是要理解上面的话,需要我们学习完网络才可以理解,这里就知道就可以。

TCP/IP的五层模型

TCP/IP 是一组协议的代名词,它还包括许多协议,组成了 TCP/IP 协议簇. TCP/IP 通讯协议采用了 5 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.

  • 物理层: 负责光 / 电信号的传递方式。比如现在以太网通用的网线 (双绞线)、早期以太网采用的同轴电缆 (现在主要用于有线电视)、光纤,现在的 wifi 无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器 (Hub) 工作在物理层.
  • 数据链路层: 负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步 (就是说从网线上检测到什么信号算作新帧的开始)、冲突检测 (如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网,无线 LAN 等标准。交换机 (Switch) 工作在数据链路层.
  • 网络层: 负责地址管理和路由选择。例如在 IP 协议中,通过 IP 地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路 (路由). 路由器 (Router) 工作在网络层.
  • 传输层: 负责两台主机之间的数据传输。如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
  • 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层.

物理层对我们来说考虑的比较少,因为贴近底层,因此我们主要考虑TCP/IP的四层模型。

一般而言:

1.对于一台主机,它的操作系统内核实现了从传输到物理层的内容。

2.对于一台路由器,它的实现从网络层到物理层。

3.对于一台交换机,他的实现是从数据链路层到我们的物理层。

4.对于集线器,他只实现我们的物理层。

但并不是绝对,很多的交换机也实现了网络层的转发;也有很多的路由器也实现了部分传输层的内容(比如端口转发)。


三、再识协议

上面的内容只是说明了一些协议的基本内容, 下面我们再次的深度的理解我们的协议。

为什么要有TCP/IP协议?

  • 首先,即便是单机,你的计算机内部,其实都是存在协议的,比如:其他设备和内存通信,会有内存协议。其他设备和磁盘通信,会有磁盘相关的协议,比如:SATA,IDE,SCSI 等。只不过我们感知不到罢了。而且这些协议都在本地主机各自的硬件中,通信的成本、问题比较少。
  • 其次,网络通信最大的特点就是主机之间变远了。任何通信特征的变化,一定会带来新的问题,有问题就得解决问题,所以需要新的协议咯。

我们下面使用主机A给下面的BCD发送消息。我们会出现很多的问题。

当然我们有了对应的协议, 我有很多的问题,这时候我们不能只有一个协议, 我们要在一个大的协议中再次分成一些小的协议, 这样我们能解决更多的问题, 并降低耦合。

所以,为什么要有TCP/IP协议?本质就是通信主机距离变远了。

当然有这么多的主机联网发送消息, 我们要怎么进行我们对应机器的管理呢?

本地通信 vs 网络通信

本地通信:是所有设备是被线给链接起来的! 所以计算机内部,我们之前说的冯诺依曼体系本身也是一个网络结构。

网络通信:多台主机,通过网络进行通信, 本质也是设备到设备, 其中唯一的区别: 单纯的是线被拉长了。

我们的本地通信还好, 但是我们的网络通信会出现一些新的问题:

1.如何让处理数据。2.数据丢失怎么半? 3.怎么定位目标主机?

当然有这些新的问题,也就有新的就解决方案。


管理我们的主机(软件)

答: 先描述,在组织。

我们在内部会存在一些结构体,让我们发消息的时候能进行对应的描述我们发送消息的结构体。

struct XXX{ //当前的主机IP //收到信息的主机IP //要进行发送的消息 //struct XXX* next }

什么是TCP/IP协议

• TCP/IP协议的本质是⼀种解决方案

• TCP/IP协议能分层,前提是因为问题们本身能分层

TCP/IP协议与操作系统的关系(宏观上是怎么进行实现的)

我们知道我们的TCP/IP主要是由5层进行的。
我们发送一个信息的时候我们依次会经历上面的四层。

我们发送消息(用户层)——> 我们的消息的传输(传输层)——> 管理我们当前发送的地址,和选择合适的路由,路由器进行对应的工作(网络层)——> 负责驱动我们物理层的硬件进行工作(数据链路层)——> 我们的网卡工作将对应的消息发给另一台机器的网卡(物理层)。——>逆着向上走交给我们用户B。

总结:主机间的通信:我们必须认识到,本质就是我们的两个协议在进行对应的工作。也就是说是我们的两个协议在进行通信。数据发送的原始动力是人(90%的情况)。
我们这其中的同层之家是可以直接的进行通信的。(比如我的应用层和你的应用层可以之间通信)。

当然上面的图还能在细化一下。

我们注意到我们之前在系统时候的图片:

我们的网络的这5层也是不是可以有这种的效果呢?

这里我们呢注意我们的用户层可以理解为上面图片的用户这一层。(用户层)

那我们的物理层肯定就是我们的底层的硬件层了。(物理层)

我们之前的系统中是有对应的驱动来控制我们对应的底层硬件, 那么我们上面说的数据链路层也是控制我们的物理层的。 所以我们的数据链路层肯定就是我们的驱动程序层。(数据链路层)

我们的网络层和传输层可以理解为我们的操作系统层,因为这两层对上可以接受我们用户的信息, 对下可以告知我们的下面的两层进行对应的工作。(网络层和传输层)

所以我们这样就有了下图的对应关系:

结论:

1.所有主机上面安装操作系统可以不同, 事实也就不同,但是所有的主机上面的协议必须按照标准进行相同的协议栈进行实现,这就是为什么不同的主机之间可以进行通信的秘密。我们的os是不一样的时候但是我们的遵循对应的协议是一样的。

2.我们可以看出来整个协议栈, 既涉及到硬件, 又涉及到驱动,还涉及到用户和OS,这个协议一定是需要IT各行各业都要进行支持和配合的。

3.传输层最著名的协议就是TCP, 网络层是IP,这两层必须实现在内核中,无论OS在怎么不同, 这部分大家都是要进行遵守的。


所以究竟什么是协议?

1.截止到目前,我们还没有接触到任何的协议, 但是如何让朴素的理解协议, 我们已经可以试试了。

2.就像我们上面说的管理注意一样,我们的协议应该在语言层也是先描述在组织。也是一个结构体。

📌问题:主机 B 能识别 data,并且准确提取 a=10,b=20,c=30 吗? 回答:答案是肯定的!因为双方都有同样的结构体类型 struct protocol。也就是说,用同样的代码实现协议,用同样的自定义数据类型,天然就具有” 共识 “,能够识别对方发来的数据,这不就是约定吗?

关于协议的朴素理解:所谓协议,就是通信双方都认识的结构化的数据类型因为协议栈是分层的,所以,每层都有双方都有协议,“同层之间,互相可以认识对方的协议”。

举个例子:

我们在买快递的时候我们的快递单子, 这个快递上会进行填写我们的相关的信息, 我们的快递小哥回经过这个快递上的信息,将快递给我们, 这也快递之间也有快递的协议。


四、网络传输的基本流程

局域网网络传输流程图

局域网(以太网为例)通信原理

1.首先回答,两台主机在同一个局域网,是否能够进行通信?

2.每台主句在局域网上, 要有唯一的标识来保证主机的唯一性:mac地址。

认识MAC地址

MAC地址是用来标识数据链路层中相连的节点

我们在我们的Linux中查询对应的Mac地址:

命令ifconfig

ifconfig

我们这里的ether就是我们的以太, 我们的后面的值就是我们的 MAC地址,这个地址具有唯一性。

MAC地址长度为48个比特位,即6个字节,一般用16进制数字加上冒号进行表示,例如我这里的(52:54:00:a9:c2:07)。

一个数字代表16进制, 那么一个16进制代表4个比特位一共12 x 4 = 48个比特位,也就是6个字节。

网卡出厂时就确定了,不能进行修改, mac地址通常时唯一的(虚拟机中的mac地址不是真实的mac地址, 可能回冲突;也有些网卡支持用户配置mac地址。我们的mac地址是存在网卡中的除非换网卡要不mac地址将一直不会进行改变。

我们在windows也能查看我们对应的mac地址

ipconfig /all

不同的是我们Linux是冒号进行分割的,我们的windows是用-进行分割的。

我们的数据链路层会谈到一个mac帧协议。


数据传输的规则

我们想要将我们的主机A发送消息“你好”发送给主机E。

我们这里对应的网卡内部会有我们的mac地址, 我们在数据链路层的时候我们会有一个结构体的报头(后面说), 他会在该层封装一下, 如何让封装呢? 当然使用一个结构体进行封装,下面提供一串伪代码:

struct XXX { //src //dst //data }

他们的内部会进行取出我们这对应的结构体信息。找到dst。下图我们将内容发给我们的MacE我们的BCD识别dst发现不是发给我的将这个报文将直接的进行丢弃。然后发给我们的E适配dst发现是给我的那我就向上进行解包,最用主机E的用户层拿到“你好”。

当我们有一个消息进行了一些的封装只有我们的目标dst才能拿到那么这就叫做加锁。

总结:

1.在以太网中,任何时刻, 只允许一台机器想网络中发送数据。

2.以太网的本质就是一个共享资源,只要在这个居于网中我们都能进行使用这个以太网。(临界资源码)当然这样会出现一些问题。

3.如果有多台同时发送,会发生数据干扰, 我们称之为数据碰撞。

4.在没有交换机的情况下,一个以太网就是一个碰撞域。

5.所有发送数据的主句要进行碰撞检测和碰撞避免。(当然在这里有相对应碰撞避免算法)。

6.局域网通信过程中,主机对收到的报文确认是否是发给自己的, 是通过Mac地址判定的。

7.可以从系统的角度理解我们的局域网通信原理。


信息传输的封装与解包

我们先简单的看一下我们对应的数据发送的过程, 是在发送方通过应用层——>传输层——>网络层——>数据链路层——>物理层(网卡) ——>用户B的物理层(网卡)——>数据链路层——>网络层——>传输层——>应用层——>用户B。

当然不是只有这些简单的操作,他会讲过我们的封装和解包的过程。我们下面就来细细的看一下吧。


封装与解包

每层都有对应的协议,所以每当我们进行传输的时候,我们都要进行封装和解包。

我们通过下图来详细的解释我们对应的封装:

用户A发送 "你好" ——> 应用层接收发送到传输层——>传输层接收,在你好的前面添加一个我们约定的协议(这里我们称作传输层报头)我们在上层获得的信息称之为(有效载荷)(这里只有你好)。我们向我们的网络层进行发送——>网络层也会在前面添加我们对应的报头(我们称之为网络报头), 我们在上层获得的有效载荷(传输层报头+ “你好”,上面获取的信息),发送到数据链路层——>添加链路报头, 发送到我们对应的网卡——>网卡收到发给另一个网卡——>另一个网卡接受通过发送上层数据链路层——>(struct)的强制类型转换,取出对应的报头, 查询我们的Mac地址查看消息是否是发给我的,是则继续向上进行解包, 不是则丢弃, 如果是——> 通过网络层传输层依次进行解包——>到了用户层我们就能拿到对应的消息了。

  • 报头部分,就是对应协议层的结构体字段,我们一般叫做报头
  • 除了报头,剩下的叫做有效载荷
  • 故,报文 = 报头 + 有效载荷

问题:为什么我们要自顶向下进行封装啊?

因为我们必须贯穿操作系统,贯穿协议栈,OS是硬件网卡的管理者。

对端同层要先解包,报头和有效载荷的分离(这里一般同过报头类型的强制类型转换)。

细节:不考虑应用层的协议, 任何协议

1.报头必须能做到和有效载荷分离的能力。

2.报头中必须有如何将自己的有效载荷交付给上层的具体协议。

3.我们底层收到的报文不是给我们的我们将进行直接的丢弃。

每层报头的命名

然后,我们在明确一下不同层的完整报文的叫法

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段 (segment), 在网络层叫做数据报 (datagram), 在链路层叫做帧 (frame).
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部 (header), 称为封装 (Encapsulation).
  • 首部信息中包含了一些类似于首部有多长(len),载荷 (payload) 有多长,上层协议是什么等信息.
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理.

最后我们复盘一下我们每一层的协议/工作

TCP/IP通讯的过程

两台计算机通过TCP/IP协议通讯的过程如下图所示:

我们上层是我们用户的处理, 然后会传送到我们内核之间的操作。

在网络传输的过程中,数据不是直接发送给对方主机的,而是先要自定向下将数据交付给下层协议,最后由底层发送,然后由对方主机的底层来进行接受,在自底向上进行向上交付,下面是一张示意图。

再次了解我们的封装和解包

下图是我们的一个封装和包的图片,我们可以换一种风格进行理解,我们的封装的过程可以理解为我们的压栈的过程,而我们的解包的过程可以理解我们的出战的过程。


五、跨网络传输流程图

网络中的地址管理——认识IP地址

我们的IP地址主要是由两个版本的,一个是IPv4, 另一个是IPv6。

IP地址是在IP协议中的,用来标识网络中的不同的主机地址。

对于IPv4来说IP地址是一个4个字节的数字,32位的整数。

我们通常使用“点分十进制”的字符串来表示我们的IP地址,用点分割每一个数字,每一节数字是从0-255。

我们下面就来简单的看一下不同系统的IP地址。

我们对应的inet是我们的内网IP。

ifconfig

那我们的公网IP是什么呢?

答: 是我们初始登录的IP

Windows查看我们的IP地址

ipconfig

跨网段的主机数据的传输,数据是从一台计算机到另一台计算机传输的过程中要经历一个/多个路由器。

理解IP地址的意义

1.为什么要去目标主机, 要先走路由器。

2.目的IP的意义。

我们这里网络层有自己的struct它主要有我们的src:发送信息的主机IP,dst:发送到主机的IP。

data:发送的数据。
这里主机A不知道172在哪, 但是主机一定能确定这个文件不是发给本地的。

我们观察下面的图会更加的明白

我们用户A发送了一个信息经过我们的网络层他会封装我们的数据报也就是一个struct(封装了当前的主机IP和要发送给谁的主机IP)然后经过数据链路层封装对应的 Mac地址, (封装了当期的Mac地址和路由器的Mac地址, 我们想要跨网络进行访问要经过路由器)通过网卡进行交互, 然后将在我们的数据链路层进行解包找到我们对应目标机器的IP地址, 在经过我们路由器的数据链路层进行封装我们的数据帧(封装路由器的Mac地址和我们的目标IP地址的Mac地址)。然后经过网卡进行解包, 一直向上解包。最后拿到我们对应的信息。

这一段段的过程我们称之为路由, 这个过程主要的区别是IP地址不变,我们的Mac地址是一直变化的(从发出到路由器, 再从路由器到目标地址)。

网络层+IP协议的本质意义:给网络提供了一层虚拟化层,让世界所有的网络,都叫做IP网络。


IP地址 vs Mac地址

到了现在我们学到了两种地址,这两种地址都有什么用呢???我相信我们在学习的时候我们也会有疑问和记混吧。这里我们说一下:

我们Mac地址是存在我们数据链路层的我们这个地址具有绝对的唯一性, 这个地址是我们在网卡确定的时候我们就已经确定了的。除非我们更换网卡,或者我们的虚拟机也可以进行对应的更改。

他一般在一个局域网中。

我们的IP地址在我们的网络层,这个地址不是一直不变的,但我们现在在山东到北京,我们的IP地址是会发生对应的改变的。Ip地址是我们全球都在使用的地址。我们有事还能捏造我们的IP地址。

他们俩在不同局域网传输消息:我们的IP地址不发生变化, 我们的Mac地址一直在发生变化

目的IP是一种长远目标, Mac是下一阶段目标,目的IP是路径选择的重要依据,mac地址是局域网转发的重要依据。


提炼IP网络的意义和网络通信的宏观流程

当然我们上面主要是经过我们对应的1个路由器,那么我们也可以有多个路由器进行信息的传输,传输的轨迹如下。

-IP网络层存在的意义:提供网络虚拟层,让时间的所有网络都是IP网络,屏蔽底层网络的差异。


本篇完,下篇预告网路socket

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询