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

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

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. 总结

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

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


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


相关文章
|
1月前
|
域名解析 网络协议 安全
计算机网络TCP/IP四层模型
本文介绍了TCP/IP模型的四层结构及其与OSI模型的对比。网络接口层负责物理网络接口,处理MAC地址和帧传输;网络层管理IP地址和路由选择,确保数据包准确送达;传输层提供端到端通信,支持可靠(TCP)或不可靠(UDP)传输;应用层直接面向用户,提供如HTTP、FTP等服务。此外,还详细描述了数据封装与解封装过程,以及两模型在层次划分上的差异。
337 13
|
1月前
|
网络协议 中间件 网络安全
计算机网络OSI七层模型
OSI模型分为七层,各层功能明确:物理层传输比特流,数据链路层负责帧传输,网络层处理数据包路由,传输层确保端到端可靠传输,会话层管理会话,表示层负责数据格式转换与加密,应用层提供网络服务。数据在传输中经过封装与解封装过程。OSI模型优点包括标准化、模块化和互操作性,但也存在复杂性高、效率较低及实用性不足的问题,在实际中TCP/IP模型更常用。
238 10
|
4月前
|
机器学习/深度学习 移动开发 测试技术
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV2,含模型详解和完整配置步骤
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV2,含模型详解和完整配置步骤
138 1
RT-DETR改进策略【模型轻量化】| 替换骨干网络为MoblieNetV2,含模型详解和完整配置步骤
|
27天前
|
安全 网络协议 Linux
Linux网络应用层协议展示:HTTP与HTTPS
此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
66 18
|
1月前
|
Linux 数据安全/隐私保护
使用Linux命令行接入无线网络Wi-Fi的示例。
现在,你已经使用命令行成功地连接到 Wi-Fi 网络了。这两个示例涵盖了用 `nmcli` 和 `wpa_supplicant` 连接无线网络的常见场景,让你能够不依赖图形化界面来完成这个任务。在日常使用中熟练掌握这些基本操作能增强你对 Linux 系统的理解,帮助你更有效地处理各种问题。
68 12
|
1月前
|
机器学习/深度学习 搜索推荐 PyTorch
基于昇腾用PyTorch实现CTR模型DIN(Deep interest Netwok)网络
本文详细讲解了如何在昇腾平台上使用PyTorch训练推荐系统中的经典模型DIN(Deep Interest Network)。主要内容包括:DIN网络的创新点与架构剖析、Activation Unit和Attention模块的实现、Amazon-book数据集的介绍与预处理、模型训练过程定义及性能评估。通过实战演示,利用Amazon-book数据集训练DIN模型,最终评估其点击率预测性能。文中还提供了代码示例,帮助读者更好地理解每个步骤的实现细节。
|
1月前
|
安全 Ubuntu Linux
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
77 0
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
|
3月前
|
Ubuntu Linux
Linux系统管理:服务器时间与网络时间同步技巧。
以上就是在Linux服务器上设置时间同步的方式。然而,要正确运用这些知识,需要理解其背后的工作原理:服务器根据网络中的其他机器的时间进行校对,逐步地精确自己的系统时间,就像一只犹豫不决的啮齿动物,通过观察其他啮齿动物的行为,逐渐确定自己的行为逻辑,既简单,又有趣。最后希望这个过程既能给你带来乐趣,也能提高你作为系统管理员的专业素养。
416 20
|
3月前
|
JSON 运维 Ubuntu
Linux下如何使用Curl进行网络请求
希望这篇文章能帮助您在Linux下更好地使用Curl进行网络请求。如有疑问,请随时提问!
175 10
|
4月前
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V3 2024华为的重参数轻量化模型
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V3 2024华为的重参数轻量化模型
128 2
RT-DETR改进策略【模型轻量化】| 替换骨干网络为 GhostNet V3 2024华为的重参数轻量化模型