【探索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.mzph.cn/news/716909.shtml

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

相关文章

NoSQL--1.虚拟机网络配置

目录 1.初识NoSQL 1.1 NoSQL之虚拟机网络配置 1.1.1 首先,导入预先配置好的NoSQL版本到VMware Workstation中 1.1.2 开启虚拟机操作: 1.1.2.1 点击开启虚拟机: 1.1.2.2 默认选择回车CentOS Linux(3.10.0-1127.e17.x86_64) 7 …

MCU 串口接收环形缓冲区的实现

环形缓冲区 1. 环形缓冲区的特性 1.先进先出 2. 当缓冲区被使用完,且又有新的数据需要存储时,丢掉历史最久的数据,保存最新的数据 现实中的存储介质都是线性的,因此我们需要做一下处理,才能在功能上实现环形缓冲区 …

[计算机网络]--I/O多路转接之poll和epoll

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、poll函…

web漏洞与规避

文章目录 一、XSS 跨站脚本攻击1.1 XSS攻击的主要类型反射型XSS存储型XSSDOM型XSS 1.2 前端开发如何应对XSS 二、CSRF 跨站请求伪造2.1 CSRF例子2.2 前端开发如何应对CSRF 三、SQL 注入3.1 前端如何防御SQL注入 四、前端如何使用CSP 一、XSS 跨站脚本攻击 攻击者通过在受害者的…

stm32学习笔记:IIC通信(未完)

概述 第一块:介绍协议规则,然后用软件模拟的形式来实现协议。 第二块:介绍STM32的iic外设,然后用硬件来实现协议。 程序一现象:通过软件I2C通信,对MPU6050芯片内部的寄存器进行读写,写入到配…

【Synchronized同步原理】

Synchronized同步原理 1. synchronized的使用?2. 如何保证线程安全的?3.可重入原理(加锁次数计数器)4. 原子性和可见性(顺序性) 1. synchronized的使用? 对象锁方法锁类锁 2. 如何保证线程安全的? publi…

关于数据提交上传服务端的数据类型以及项目打包上线的流程

1 请求头的类型: content-type; 01: application/json 数据以json格式请求:{"key":"value"} 02: application/x-www.form-urlencoded from表单的数据格式 name"zs"&age12 03 mutipart/form-data…

重学SpringBoot3-自动配置机制

重学SpringBoot3-自动配置机制 引言Spring Boot 自动配置原理示例:Spring Boot Web 自动配置深入理解总结相关阅读 引言 Spring Boot 的自动配置是其最强大的特性之一,它允许开发者通过最少的配置实现应用程序的快速开发和部署。这一切都得益于 Spring …

OmniPlan Pro mac版:简单、智能,项目管理新选择!

OmniPlan Pro是一款功能强大的项目管理软件,它以其直观的用户界面和丰富的功能,帮助用户轻松管理各种复杂的项目。无论是个人任务还是团队协作,OmniPlan Pro都能提供全面的解决方案,让项目管理变得更加简单高效。 OmniPlan Pro软…

从0开始回顾Mysql --- MySQL初体验

大白话从0开始回顾MySQL,去除了一些繁琐的操作的演示以及内容,如MySQL安装等,本篇文章适合复习MySQL语法,学习MySQL语句,对MySQL不太熟练的同学,希望对大家有一些帮助。 MySQL初体验 首先,我将…

如何在Window系统部署VisualSVN服务并结合cpolar实现无公网ip远程访问

文章目录 前言1. VisualSVN安装与配置2. VisualSVN Server管理界面配置3. 安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4. 固定公网地址访问 前言 SVN 是 subversion 的缩写,是一个开放源代码的版本控制系统…

数字孪生与智慧交通的融合发展:推动交通行业数字化转型,构建智慧城市新生态

随着信息技术的快速发展和城市化进程的深入推进,交通行业正面临着前所未有的机遇与挑战。传统的交通管理模式已难以满足日益增长的交通需求,而数字化转型则成为了推动交通行业创新发展的必由之路。数字孪生技术作为一种前沿的信息技术手段,为…

基于springboot+vue的公寓报修管理系统

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

每天的三哥牌小鸡腿没了

查看印度基金(164824)公告,从2024年2月28日起,暂停印度基金的申购,限额100块的一拖七套利告一段落。这意味着看好印度股市的国内投资者,以后只能通过在场内买入获得份额。 关于暂停申购的原因,官方说是为保护基金持有…

重磅!交通领域顶级会议TRB会议将进行重大改革

美国交通研究委员会年会(Transportation Research Board annual meeting,以下简称TRB会议)是由美国交通研究委员会举办的交通领域的国际顶级会议。该会议每年举办一次,在华盛顿特区召开。TRB会议是交通研究领域知名度最高的学术会议之一&…

安装 node 错误的配置环境变量之后使用 npm 报错

安装 node 错误的配置环境变量之后使用 npm 报错 node:internal/modules/cjs/loader:1147 throw err; ^ Error: Cannot find module ‘F:\ACodeTools\Node\node_modules\npm\bin\node_modules\npm\bin\npm-cli.js’ at Module._resolveFilename (node:internal/modules/cjs/loa…

基于springboot实现企业员工绩效考评系统项目【项目源码+论文说明】

基于springboot实现企业员工绩效考评系统演示 摘要 时代的变化速度实在超出人类的所料,21世纪,计算机已经发展到各行各业,各个地区,它的载体媒介-计算机,大众称之为的电脑,是一种特高速的科学仪器&#xf…

AI-数学-高中-32-统计-样本空间与随机事件

原作者视频:【概率】【一数辞典】1样本空间与随机事件_哔哩哔哩_bilibili 1.随机试验: 2.样本点、样本空间、有限样本空间: 示例1 示例2 3.事件: 示例:

[DEBUG] spring boot-如何处理链接中的空格等特殊字符

问题&#xff1a; get或者post中提交的内容可能有空格、#等特殊字符&#xff0c;不做处理的话可能解析错误。 解决&#xff1a; html中&#xff1a; <a th:href"{/listSgrna(id${item.getGeneId()},geneName${item.getGeneName()},genome${genome},sgrnaNum${sgrnaN…

Qt CMake 国际化相关配置

文章目录 更新ts文件发布ts文件 本来用qmake使用pro文件很简单的一件事&#xff0c;结果用cmake折腾了半天。 何必呢~ 参考&#xff1a;QT6.3 CMake 多语言切换 这是我的 cmake_minimum_required(VERSION 3.16)project(testQml3_6 VERSION 0.1 LANGUAGES CXX)set(CMAKE_AUTO…