【探索Linux】—— 强大的命令行工具 P.24(网络基础)

在这里插入图片描述

阅读导航

  • 引言
  • 一、计算机网络背景
    • 1. 网络发展历史
  • 二、认识 "协议"
    • 1. 网络协议概念
    • 2. 网络协议初识
      • (1)协议分层
      • (2)OSI参考模型(Open Systems Interconnection Reference Model)
      • (3) TCP/IP协议族模型
  • 三、网络传输基本流程
    • 1. 同一个网段内的两台主机进行文件传输
    • 2. 跨网段的主机的文件传输
  • 四、数据包封装和分用
    • 1. 数据包封装(Packet Encapsulation)
    • 2. 数据包分用(Packet Demultiplexing)
  • 五、网络中的地址管理
    • 1. IP地址
    • 2. MAC地址
  • 温馨提示

引言

在当今互联网时代,Linux操作系统在服务器领域占据着举足轻重的地位。作为开源软件的杰出代表,Linux以其稳定性、灵活性和高度可定制性而闻名。在Linux系统中,网络编程一直是一个重要的领域,无论是开发服务器应用程序还是网络服务,对于网络基础的理解都是至关重要的。本文旨在探讨Linux网络基础知识,包括网络的简单发展历史、网络传输的基本逻辑以及网络传输基本流程,帮助读者深入了解Linux下的网络编程原理和实践应用。通过本文的学习,读者将能够更好地掌握Linux系统下网络编程的核心概念,为后续深入学习和实际应用打下坚实的基础。

一、计算机网络背景

1. 网络发展历史

🍪网络发展历史可以从以下几个关键时期展开介绍:

  1. 60年代到70年代初:ARPANET时期

ARPANET是美国国防部高级研究计划局(ARPA)于20世纪60年代初开展的一个计划,旨在建立一种新型的通讯方法,以便对分布在美国各地的研究机构进行互联。ARPANET采用了分组交换的方式,通过将数据分成若干个小的数据包进行传输,从而避免了传统电路交换的局限性。

  1. 70年代中期到80年代末:TCP/IP时期

1974年,美国国防部下属的高级研究计划局(ARPA)开始了一个新的项目,旨在开发一种新的协议套件,即TCP/IP协议套件。TCP/IP协议套件是目前互联网所采用的基本协议,它由两个协议组成:传输控制协议(TCP)和互联网协议(IP)。这两个协议的出现,使得互联网实现了规模化的发展。

  1. 90年代到2000年代初:万维网时期

1991年,蒂姆·伯纳斯-李(Tim Berners-Lee)在CERN(欧洲核子研究组织)创建了第一个Web服务器,开发了第一个Web浏览器,从而使得万维网(World Wide Web)开始应运而生。万维网的出现,极大地促进了互联网信息的传播和共享,成为了互联网发展的一个重要时期。

  1. 2000年代中期至今:移动互联网时期

随着智能手机、平板电脑等移动设备的普及,移动互联网开始成为互联网新的增长点。移动互联网技术的快速发展,使得人们可以随时随地进行信息的交流和共享,网络应用也逐渐从PC端转向移动端,其范围和应用场景不断拓展。

在这里插入图片描述
网络发展历程是不断演化和壮大的过程,它推动了人类社会的信息化进程,也催生了一系列新兴技术和应用。未来,随着物联网、5G等技术的不断发展,网络将进一步融入我们的生活和工作中,为我们带来更多便利。

二、认识 “协议”

1. 网络协议概念

协议是指在计算机网络中,为了实现数据通信和信息交换而制定的一系列规则和约定。这些规则和约定规定了数据传输的格式、顺序、错误检测与纠正、数据的确认方式等,确保不同设备之间能够有效地通信和协作。

计算机之间的传输媒介是光信号和电信号. 通过 “频率” 和 “强弱” 来表示 01 这样的信息. 要想传递各种不同的信息, 就需要约定好双方的数据格式
在这里插入图片描述

2. 网络协议初识

(1)协议分层

计算机网络中的协议通常按照功能和目的分为不同的层次,这种组织结构被称为协议分层。常见的协议分层模型是OSI参考模型和TCP/IP协议族模型。

(2)OSI参考模型(Open Systems Interconnection Reference Model)

OSI(Open Systems Interconnection)参考模型是一个由国际标准化组织(ISO)制定的用于网络通信协议设计的参考框架,将计算机网络通信划分为七个层次,每个层次负责不同的功能。

  1. 应用层(Application Layer):应用层是最靠近用户的一层,提供用户应用程序与网络的接口。它定义了用户与网络服务之间的通信规则,包括数据格式、加密和身份验证等。

  2. 表示层(Presentation Layer):表示层负责处理数据的格式化、编码和加密,确保不同系统之间能够正确解释、显示和交换数据。

  3. 会话层(Session Layer):会话层管理不同设备之间的会话(session),包括建立、维护和终止会话连接,以及处理数据传输中出现的错误和恢复机制。

  4. 传输层(Transport Layer):传输层负责可靠地传输数据,提供端到端的数据传输服务,包括流量控制、错误检测和纠正,以及数据重传。

  5. 网络层(Network Layer):网络层处理数据在网络中的路由和转发,负责确定数据的最佳路径,并实现不同网络之间的互联互通。

  6. 数据链路层(Data Link Layer):数据链路层负责在相邻节点之间传输数据,通过物理地址(MAC地址)进行数据帧的传输和接收。

  7. 物理层(Physical Layer):物理层负责在物理媒介上传输比特流,包括电气信号、光信号等,以及定义传输媒介的接口标准和传输速率。

在这里插入图片描述
这种七层模型的分层设计使得不同层次的协议可以独立开发和实现,同时也提供了灵活性和可扩展性,促进了网络通信协议的发展和应用。

(3) TCP/IP协议族模型

在这里插入图片描述

这些分层模型将网络通信划分为多个层次,每个层次负责特定的功能,且各层之间通过定义好的接口进行交互。通过分层设计,不同层次的协议可以独立地进行开发、实现和维护,提高了系统的可扩展性和灵活性,同时也方便了协议的替换和更新
在这里插入图片描述

在实际的网络通信中,每个层次的协议都有其特定的作用和职责,通过协同工作,实现了复杂的网络通信需求。例如,应用层协议负责定义应用程序间的通信规则,传输层协议负责提供端到端的数据传输服务,网络层协议负责进行数据包的路由和转发,数据链路层协议负责实现数据在物理介质上的传输等。

三、网络传输基本流程

1. 同一个网段内的两台主机进行文件传输

在这里插入图片描述

2. 跨网段的主机的文件传输

🍔数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器
在这里插入图片描述

  1. ARP(地址解析协议)请求:当源主机要发送数据到目标主机时,首先需要确定目标主机的物理地址(MAC地址)。如果目标主机的IP地址不在同一子网内,源主机会向本地路由器发送ARP请求,以获取目标主机所在网段的网关路由器的MAC地址。

  2. 路由器转发:本地路由器接收到数据包后,根据目标主机的IP地址和路由表信息,确定下一跳路由器的IP地址,并将数据包转发给下一跳路由器。

  3. 跨网段传输:数据包经过本地路由器后,进入到连接不同网络的路由器,这些路由器负责在不同网络之间传输数据。每个路由器根据目标主机的IP地址和路由表信息,决定数据包的下一跳路由器或目标主机。

  4. 目标主机接收:最终数据包到达目标主机所在网络的路由器,路由器将数据包转发给目标主机。目标主机接收数据包,并进行相应的处理,将数据包重新组装为文件。

🚩总而言之,在跨网段的主机文件传输过程中,涉及到源主机和目标主机之间的IP地址解析、跨网段传输、路由器的转发等步骤,网络中的路由器起着至关重要的作用,负责在不同网络之间进行数据包的转发和路由选择,确保数据能够准确、高效地传输到目标主机。这些网络变化和数据传输过程都是在网络层(第三层)和数据链路层(第二层)上进行的

四、数据包封装和分用

1. 数据包封装(Packet Encapsulation)

数据包封装是将要传输的数据划分为小块,并在每个数据块(称为分组或数据包)中添加必要的标识和控制信息的过程。封装发生在发送方主机上,主要涉及到从应用层到物理层的不同网络协议层。

  1. 应用层封装:应用层负责将要传输的数据划分为较小的数据块,通常称为消息或报文。每个消息或报文都会被添加一个应用层头部,其中包含了源和目标应用程序的端口号等信息。

  2. 传输层封装:传输层接收应用层的数据块,并在每个数据块的前面增加传输层头部。传输层头部包含了源和目标主机的端口号、传输协议(如TCP或UDP)以及用于错误检测的校验和等信息。

  3. 网络层封装:网络层接收传输层的数据块,为每个数据块添加网络层头部。网络层头部包含了源和目标主机的IP地址,以及用于路由选择和数据分片的其他信息。

  4. 数据链路层封装:数据链路层接收网络层的数据块,并在每个数据块的前面增加数据链路层头部。数据链路层头部包含了源和目标主机的MAC地址,以及用于错误检测和流量控制的其他信息。

最终,数据包被封装为一个完整的数据帧,该帧包含了从应用层到物理层的所有头部和数据内容。
在这里插入图片描述

2. 数据包分用(Packet Demultiplexing)

数据包分用是在接收方主机上将接收到的数据包按照协议层次进行解析和处理的过程。数据包分用发生在接收方主机的物理层到应用层之间。

  1. 物理层分用:物理层接收到数据包后,根据物理媒介(如电缆或无线信号)的特性将数据传递给数据链路层。

  2. 数据链路层分用:数据链路层首先解析数据链路层头部,获取目标主机的MAC地址等信息,然后将数据包传递给网络层。

  3. 网络层分用:网络层解析网络层头部,根据目标IP地址确定数据包的下一步处理方式,将数据包传递给传输层。

  4. 传输层分用:传输层解析传输层头部,根据端口号等信息将数据包传递给相应的应用程序。

  5. 应用层分用:最后,应用层解析应用层头部和数据内容,将数据交给目标应用程序进行处理。

通过数据包分用,接收方主机能够正确地将接收到的数据包传递给相应的应用程序进行进一步处理和响应。
在这里插入图片描述

五、网络中的地址管理

1. IP地址

IP地址(Internet Protocol Address)是在互联网上用于识别和定位计算机或网络设备的唯一地址。它是在TCP/IP协议中定义的一种地址,用于在网络中准确定位主机或路由器,并实现数据包的传输和路由。

IP地址通常分为IPv4地址和IPv6地址两种类型:

  1. IPv4地址:IPv4地址是目前广泛采用的IP地址格式,由32位二进制数表示,通常以4组十进制数(0-255)表示,每组之间用点号分隔。例如,192.168.1.1是一个常见的IPv4地址。

  2. IPv6地址:IPv6地址是为了解决IPv4地址空间不足的问题而推出的新一代IP地址格式,采用128位二进制数表示,通常以8组16进制数表示,每组之间用冒号分隔。例如,2001:0db8:85a3:0000:0000:8a2e:0370:7334是一个IPv6地址。

IP地址被分为两部分:网络部分和主机部分。网络部分用来标识网络,主机部分用来标识该网络中的主机或设备。根据不同的IP地址类别,网络部分和主机部分的划分方式不同。

IP地址的作用包括但不限于以下几点:

  • 确定主机或设备在网络中的位置和身份。
  • 实现数据包的路由和转发。
  • 提供网络通信中的端到端连接。
  • 支持互联网上各种应用和服务的正常运作。

在网络通信中,IP地址是一个非常重要的概念,它是整个互联网中数据传输和通信的基础。不同的主机通过其唯一的IP地址可以相互识别和进行通信,从而实现信息的交换和资源共享

2. MAC地址

MAC地址(Media Access Control Address)是网络设备(如计算机、路由器、网络打印机等)网卡上的硬件地址,用于在局域网中唯一标识网络设备。每个网络设备的网卡都有一个唯一的MAC地址,由厂商在生产过程中分配,并以十六进制数表示。

MAC地址通常由6组16进制数表示,用冒号或连字符分隔,例如:00:1A:2B:3C:4D:5E。其中,前3组数字代表了厂商识别码(Organizationally Unique Identifier,OUI),由IEEE注册管理,用来识别设备的厂商,后面3组数字是由厂商分配给设备的唯一标识。

MAC地址的作用包括但不限于以下几点:

  • 在局域网中唯一标识网络设备,用于进行数据帧的寻址和传输。
  • 作为数据链路层的一个重要参数,用于实现局域网中设备之间的数据通信。

在局域网中,当一个设备需要向另一个设备发送数据时,它会将数据帧封装,并在数据帧中附加目标设备的MAC地址。网络设备会根据目标MAC地址来判断是否接收该数据帧。因此,MAC地址在局域网中扮演着非常重要的角色,它是实现局域网内设备通信的关键。

🚨🚨注意:MAC地址是数据链路层的概念,它只在局域网范围内具有唯一性,而不同的局域网中可能存在相同的MAC地址。在跨网段通信时,会使用IP地址来确定目标设备的位置和身份,而不直接使用MAC地址。

温馨提示

感谢您对博主文章的关注与支持!如果您喜欢这篇文章,可以点赞、评论和分享给您的同学,这将对我提供巨大的鼓励和支持。另外,我计划在未来的更新中持续探讨与本文相关的内容。我会为您带来更多关于Linux以及C++编程技术问题的深入解析、应用案例和趣味玩法等。如果感兴趣的话可以关注博主的更新,不要错过任何精彩内容!

再次感谢您的支持和关注。我们期待与您建立更紧密的互动,共同探索Linux、C++、算法和编程的奥秘。祝您生活愉快,排便顺畅!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/268044.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

差分题练习(区间更新)

一、差分的特点和原理 对于一个数组a[],差分数组diff[]的定义是: 对差分数组做前缀和可以还原为原数组: 利用差分数组可以实现快速的区间修改,下面是将区间[l, r]都加上x的方法: diff[l] x; diff[r 1] - x;在修改完成后,需要做前缀和恢复…

智慧应急:构建全方位、立体化的安全保障网络

一、引言 在信息化、智能化快速发展的今天,传统的应急管理模式已难以满足现代社会对安全保障的需求。智慧应急作为一种全新的安全管理模式,旨在通过集成物联网、大数据、云计算、人工智能等先进技术,实现对应急事件的快速响应、精准决策和高…

【IDEA+通义灵码插件】实现属于你的大模型编程助手

目录 1.前言 2.下载安装 3.解释代码 4.生成单元测试 5.生成注释 6.智能补全 1.前言 大模型到底该以一种什么方式落地,从而嵌入我们的工作当中,助力我们工作效率的提升,其实最好的方式也许就是虚拟助手的方式,就像钢铁侠的&…

最新发布!2D激光雷达与相机数据融合的新方法

作者:小柠檬 | 编辑:3DCV 在公众号「3DCV」后台,回复「原论文」获取论文 添加微信:dddvision,备注:3D高斯,拉你入群。文末附行业细分群 原文:最新发布!2D激光雷达与相…

【飞桨EasyDL】飞桨EasyDL发布的模型转换onnx(附工程代码)

一个愿意伫立在巨人肩膀上的农民...... 一、paddle转onnx转rknn环境搭建 paddle转onnx和onnx转rknn两个环境可以分开搭建,也可以搭建在一起。这里选择分开搭建,先搭建paddle转onnx。 1.1、创建环境 选择python3.8.13包进行创建环境 conda create --nam…

SQL 练习题目(入门级)

今天发现了一个练习SQL的网站--牛客网。里面题目挺多的,按照入门、简单、中等、困难进行了分类,可以直接在线输入SQL语句验证是否正确,并且提供了测试表的创建语句,也可以方便自己拓展练习,感觉还是很不错的一个网站&a…

项目实战:Qt监测操作系统物理网卡通断v1.1.0(支持windows、linux、国产麒麟系统)

若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/136276999 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

Logic Pro:专业音乐制作软件,为你的音乐插上翅膀

Logic Pro是一款功能强大的音乐制作软件,专为专业音乐人和音乐爱好者设计。它提供了全面的音乐创作工具,包括音频录音、编辑、混音、合成以及自动化等功能,让你能够轻松实现音乐梦想。 Logic Pro软件获取 首先,Logic Pro拥有卓越…

使用 Azure 部署静态网页

Author:AXYZdong 硕士在读 工科男 有一点思考,有一点想法,有一点理性! 定个小小目标,努力成为习惯!在最美的年华遇见更好的自己! CSDNAXYZdong,CSDN首发,AXYZdong原创 唯…

【airtest】自动化入门教程(一)AirtestIDE

目录 一、下载与安装 1、下载 2、安装 3、打开软件 二、web自动化配置 1、配置chrome浏览器 2、窗口勾选selenium window 三、新建项目(web) 1、新建一个Airtest项目 2、初始化代码 3、打开一个网页 四、恢复默认布局 五、新建项目&#xf…

[业务系统]人物坐骑系统介绍I

1.问题描述 旧版本的坐骑系统依赖于人物装备了【法宝】(一种装备类型),装备了法宝的人物变拥有了【幻化】坐骑的能力,即在人物装备栏中的【外观】中会有已经幻化和未幻化(解锁)的坐骑。如果玩家至少幻化一…

基于R语言的分位数回归技术应用

回归是科研中最常见的统计学研究方法之一,在研究变量间关系方面有着极其广泛的应用。由于其基本假设的限制,包括线性回归及广义线性回归在内的各种常见的回归方法都有三个重大缺陷:(1)对于异常值非常敏感,极少量的异常值可能导致结…

(全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF

研究生英语读写教程基础级教师用书PDF 研究生英语读写教程提高级教师用书PDF pdf下载(完整版下载) (1)研究生英语读写教程基础级教师用书PDF (2)研究生英语读写教程基提高级教师用书PDF

【C++那些事儿】深入理解C++类与对象:从概念到实践(中)| 默认构造函数 | 拷贝构造函数 | 析构函数 | 运算符重载 | const成员函数

📷 江池俊: 个人主页 🔥个人专栏: ✅数据结构冒险记 ✅C那些事儿 🌅 有航道的人,再渺小也不会迷途。 文章目录 1. 类的6个默认成员函数2. 构造函数2.1 概念2.2 特性 3. 析构函数3.1 概念3.2 特性 4. 拷贝…

GO-接口

1. 接口 在Go语言中接口(interface)是一种类型,一种抽象的类型。 interface是一组method的集合,接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它…

基于springboot+vue的工厂车间管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

初阶数据结构之---栈和队列(C语言)

引言 在顺序表和链表那篇博客中提到过,栈和队列也属于线性表 线性表: 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构。线性表在逻辑上是线性结构,也就是说是连…

【操作系统(Operator System)】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、概念 二、结构示意图 三、尝试理解操作系统 系统调用和库函数概念 承上启下 总结 前言 世上有两种耀眼的光芒,一种是正在升起的太阳&#xff…

【Go语言】Go语言中的字典

Go语言中的字典 字典就是存储键值对映射关系的集合,在Go语言中,需要在声明时指定键和值的类型,此外Go语言中的字典是个无序集合,底层不会按照元素添加顺序维护元素的存储顺序。 如下所示,Go语言中字典的简单示例&…

FRM模型十三:互换定价(二)

定义一个互换,本金为1e7,7年后到期 固定端:利率2.5%,每年付息一次 浮动端:Libor6M,每半年付息一次 import QuantLib as ql from prettytable import PrettyTable# 定义全局时间:当前日期,下一个结算日&…