【linux网络(一)】初识网络, 理解四层网络模型

💓博主CSDN主页:杭电码农-NEO💓

⏩专栏分类:Linux从入门到精通

🚚代码仓库:NEO的学习日记🚚

🌹关注我🫵带你学更多操作系统知识

🔝🔝


Linux网络

  • [1. 前言](#1. 前言)
  • [2. 初识网络](#2. 初识网络)
  • [3. 网络为什么需要分层?](#3. 网络为什么需要分层?)
  • [4. 网络传输的基本流程](#4. 网络传输的基本流程)
  • [5. 初识IP地址和MAC地址](#5. 初识IP地址和MAC地址)
  • [6. 总结](#6. 总结)

1. 前言

本篇文章开始,会正式学习网络,网络编程的本质依然是使用系统调用,所以这里就不另外开辟专栏来讲解网络,而是直接将系统和网络放在一起,望大家理解!

本章重点:

本篇文章着重讲解网络的基本概念,和网络中的四层模型以及它们对应的协议,最后会带大家初步了解网络传输的基本流程,并且会给大家讲解IP地址和MAC地址的基本概念和区别,为后续学习打下基础


2. 初识网络

网络其实就是进程间通信的一种,跨网络通信是在不同主机上进行的(比如我在杭州要访问软件QQ,而QQ的服务器进程可能在深圳),而通信的复杂度是和距离成正比的.跨网络通信需要解决一些问题,比如:

  1. 如何处理在网络中获取的数据?
  2. 在网络中丢包了应该咋办?
  3. 怎样定位要访问的主机或要访问的进程?
  4. 现实生活中有很多路由器可以当网络的跳板,怎样知晓下一跳往哪儿走?

为了解决上面的一些问题,要制定协议
协议的本质就是一层软件层

而像大家听说过的HTTP,TCP/IP协议

就是在这种场景下诞生的

其实网络模型具体被分为了七层,叫做OSI七层模型,但是工程师发现,其实只用四层模型就能很好的解决问题,所以我们主要学习的也是四层网络模型(又称TCP/IP四层模型). 如果你对OSI七层模型感兴趣,可以阅读这篇文章: OSI七层模型

四层模型以及它们的协议:

  • 应用层(HTTP协议)
  • 传输层(TCP/UDP协议)
  • 网络层(IP协议)
  • 数据链路层(ARP协议)


物理层偏向硬件,所以后续不会讲解

拓展阅读: 四层模型和七层模型的概念


3. 网络为什么需要分层?

先说结论,进行网络分层的原因:

  • 场景复杂,分层利于拆分复杂场景
  • 功能解耦,便于后续进行各种维护

综上所述,网络进行分层后,不同的层负责不同的功能,互相之间不会干扰,并且每一层都有自己的协议,虽然现在大多数都是使用TCP/IP协议,但是不能保证未来是否会推出更优的协议,所以为了未来的可维护性,进行分层也是很有必要的.除此之外,一旦在网络通信中出现了错误,分层后就能很好的定位错误出现在哪一层,进而改善一些组件

还有一点,网络编程使用的是系统调用.

  • 应用层对应shell,应用软件等
  • 传输层和网络层对应操作系统
  • 数据链路层对应的是驱动板块
  • 而物理层对应的是硬件

4. 网络传输的基本流程

首先我们需要明确下面的观点:

  1. 每一层都有自己的协议定制的方案
  2. 每一层都要有自己的协议报头(字段)
  3. 从上到下交付数据时,要添加报头
  4. 从下到上递交数据时,要去掉报头

有了上面的观念后,再来看看图解:

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

具体的实例来理解传输过程:

上层数据向下传送时,每一层都有自己的协议,要想对方的同一层根据协议解析数据,就要加一个报头。类似于快递要贴上订单号给每一个快递员或驿站传递信息,收到快递后要把订单号去掉,收到的数据中,多出来的部分就是协议报头


5. 初识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地址的区别:

IP地址标识的是从当前主机到目标主机的起点与终点.而MAC地址标识的是从当前主机到目标主机的路程中,下一跳要往哪儿跳?我们用唐僧取经的例子来说明,唐僧从东土大唐去西天取经,那么源IP地址就是东土大唐,目的IP地址就是西天.而去西天可能要经过车迟国,黑风岭,火焰山,女儿国等地方,假设下一站是火焰山,那么目的MAC地址就是火焰山


6. 总结

本篇文章着重讲解网络的基础知识,

意在为后面的网络学习打下基础


🔎 下期预告:套接字编程 🔍

相关推荐
开开心心就好4 分钟前
系统管理工具,多功能隐私清理文件粉碎工具
java·网络·windows·r语言·电脑·excel·symfony
wdfk_prog20 分钟前
[Linux]学习笔记系列 -- 底层CPU与体系结构宏
linux·笔记·学习
逑之25 分钟前
C语言笔记15:动态内存管理
c语言·网络·笔记
行走的bug...27 分钟前
cmake总结
linux·运维·服务器
zfxwasaboy28 分钟前
DRM KMS 子系统(3)CRTC
linux·c语言
hui函数32 分钟前
如何解决 pip install 网络报错 403 Forbidden(访问被阻止)问题
网络·pip
凌波粒33 分钟前
Linux 面试题篇
linux·运维·服务器
Joren的学习记录35 分钟前
【Linux运维疑难杂症】k8s集群创建calico网络失败
linux·运维·kubernetes
乾元39 分钟前
现场运维机器人的工程化落地——移动探针采集 + AI 诊断,在真实网络中的实现路径
运维·网络·人工智能·架构·机器人·自动化
鲨莎分不晴43 分钟前
Docker 网络深度解析:打破容器的“孤岛效应”
网络·docker·容器