Linux——网络基础概论

2023-11-01

网络基本概念

概念
网络是由若干结点和连接这些结点的链路组成,网络中的结点可以是计算机,交换机、路由器等设备(即将不同的终端设备连接起来)

  1. 网络设备:路由器(网络层)、集线器(物理层)、交换机(数据链路层)
  2. 网络线路:网线(双绞线100m)、同轴电缆、光纤(光信号,不能折)

互联网

把多个网络连接起来就构成了互联网,目前最大的互联网就是我们常说的因特网。

网络上通信的主角

网络上通信的主角是运行在不同主机上的两个进程。

标识网络中的进程:IP地址+端口号

计算机网络体系结构

在这里插入图片描述
实际使用中我们更倾向于使用TCP/IP的四层网络模型,七层模型主要是为了方便我们分析问题
作用——下层为上层提供服务

  1. 应用层:负责处理应用程序的业务逻辑,为用户提供服务。
  2. 传输层:控制传输的数据,在传输层实现对于传输的数据的安全、完整性等的控制。
  3. 网络层:数据在网络中的传递,实现A主机发送的数据如何传递给B主机。
  4. 数据链路层:在两个相邻接点之间的数据传递。

数据报在网络中的转发过程
在这里插入图片描述

在这里插入图片描述

IP地址

在这里插入图片描述

IP 地址就是给因特网上的每一个主机(或路由器)的每一个接口分配的一个在全世界范围内唯一的标识符。IP 地址因其特殊的结构使我们可以在因特网上很方便地进行寻址。
IP 地址有分 IPV4 和 IPV6 两种类别格式,

  • IPV4 是类似”A.B.C.D”的格式,它是 32 位的,用“.”分成四个段,每个段是 8 个位(值为 0-255),用 10
    进制表示。
  • IPV6 地址是 128位,格式类似”XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX”,用“:“分成 8个段,每个段 16 个位,用 4个 16 进制数表示。

◼ IPV4 地址示例: “192.168.31.1”
◼ IPV6 地址示例: “2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b“
接下来描述的 IP 地址默认都指的是 IPV4 的地址。为了便于寻址,了解目标主机的位置,每个 IP 地址由网络号和主机号两个部分构成。同一个物理网络上所有的主机都使用同
一个网络号,只是主机号不同
在这里插入图片描述
在这里插入图片描述

MAC地址

在局域网中,硬件地址又称为物理地址或MAC地址,长度48位,是固化在计算机适配器的ROM(只读存储器)(网卡)中的地址。

  • 因此假定在连接在局域网上的一台计算机的适配器坏了而我们更换了一个新的适配器,那么这台计算机的局域网的“地址”也就改变了,虽然这台计算机的地理位置没有发生变化,
  • 其次,当我们把一个笔记本从一个城市带到另一个城市时,虽然地理位置改变了。但是电脑在局域网中的“地址”仍然不变
  • 由此可见,局域网上某个主机的“地址”根本不能告诉我们这台主机位于什么地方,在网络上方便地寻找某个主句,还得依靠ip地址进行
    -

网络协议

网络协议就是一组网络规则的集合,是我们共同遵守的约定或标准,明确规定了所交换的数据的格式以及相关的同步(时序)问题,这些为了进行网络中数据交换而建立的规则、标准、约定称之为网络协议。
常见协议

应用层协议

  1. HTTP:超文本传输协议,web所使用的协议HTML(超文本标记语言)
  2. FTP:文本传输协议 网盘、FTP站点
  3. TELNET:远程登录协议

传输层协议

  1. TCP:传输层的控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议
  2. UDP:用户数据报协议

网络层协议

  1. ICMP:网络控制协议
  2. IP:互联网协议、数据报在网络之间转发的

数据链路层协议

  1. ARP:地址解析协议,IP地址转化为MAC地址
  2. RARP:逆地址解析协议,被DHCP协议替代

各层的简单介绍

数据链路层

  • 数据链路层的主要功能是:通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路。
  • 在计算机网络中由于各种干扰的存在,物理链路是不可靠的。因此,这一层的主要功能是在物理层提供的比特流的基础上,通过差错控制,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。

该层通常又被分为介质访问控制(MAC)和逻辑链路控制(LLC)两个子层。
◼ MAC 子层的主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质访问控制;
◼ LLC 子层的主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。

  • TCP/IP协议体系结构中,数据链路层的功能描述为实现网卡接口的网络驱动程序,以处理数据在物理媒介上的传输,不同的物理网络具有不同的电气特性,网络驱动程序隐藏了这些细节,为上层协议提供了一个统一的接口。这一层主要关注的三个基本问题是:封装成帧,透明传输和差错检测

网络层

网络层实现数据包的选路和转发。广域网或者说互联网通常使用众多分级的路由器来连接分散的主机或者局域网,因此,通信的两台主机一般不是直接相连的,而是通过多个中间结点(路由器)连接的。网络层的任务就是选择这些中间结点,以确定两台主机之间的通信路径。同时,网络层对上层协议隐藏了网络拓扑连接的细节,使得在传输层和网络应用程序
看来,通信的双方是直接相连的。

网络层最核心的协议是 IP 协议(Internet Protocol,因特网协议)。IP 协议根据数据包的目的 IP 地址来决定何如投递它。如果数据包不能直接发送给目标主机,那么 IP 协议就是为它寻找一个合适的吓一跳路由器,并将数据包交付给该路由器来转发。多次重复这一过程,数据包最终到达目标主机,或者由于发送失败而被丢弃。可见,IP 协议使用逐跳的方式确定通
信路径。

网络层另外一个重要的协议是 ICMP 协议(因特网控制报文协议)。它是 IP 协议的重要补充,主要用于检测网络连接。 IP 协议为上层协议提供无状态、无连接、不可靠的服务。

无状态是指通信双方不同步传输数据的状态信息,因此所有 IP 数据报的发送、传输和接收都是相互独立、没有上下文关系的。这种服务最大的缺点是无法处理乱序和重复的 IP数据报。虽然 IP 数据报头部提供了一个标识字段用以唯一标识一个 IP 数据报,但它是被用来处理 IP 分片和重组的,而不是用来指示接收顺序的。无状态的优点是简单、高效。无须为保持通信状态而分配一些内核资源,也无须再每次通信时携带状态信息。

无连接是指 IP 通信双方都不长久地维持对方的任何信息。这样,上层协议每次发送数的时候,都必须明确指定对方的 IP 地址。

不可靠是指 IP 协议不能保证 IP 数据报准确地到达接收端,它只是承诺尽最大努力。

  • IPV4头部结构如下:*
    在这里插入图片描述

传输层

传输层为两台主机上的应用程序提供端到端的通信。与网络层使用的逐跳通信的方式不同,传输层只关心通信的起始端和目的端,而不在乎数据包的中转过程。
传输层协议主要有三个:tcp 协议、UDP 协议和 SCTP 协议

TCP 协议(传输控制协议)为应用层提供可靠的、面向连接的和基于流的服务。TCP 协议使用超时重传、确认应答等方式来确保数据包被正确的发送至目的端,因此 TCP 服务是可靠的。使用 TCP 协议通信的双方必须先建立 TCP 连接,并在内核中为该连接维持一些必要的数据结构,比如连接状态,读写缓冲区等。当通信结束时,双方必须关闭连接以释放这
些内核数据。TCP 服务是基于流的,基于流的数据没有边界(长度)限制,它源源不断地从通信地一端流入另一端。发送端可以逐个字节地向数据流中写入数据,接收端可以逐个字节
地将它们读出。

  • TCP协议报头:*
    在这里插入图片描述
    UDP 协议(用户数据报协议)则与 TCP 协议完全相反,它为应用层提供不可靠、无连接、基于数据报地服务。“不可靠”意味着 UDP 协议无法保证数据从发送端正确地传送到目的端。如果数据在中途丢失,或者目的端通过数据校验发现数据错误而将其丢弃,则 UDP协议只是简单地通知应用程序发送失败。因此,如果要使 UDP 协议可靠,那么应用程序通常要自己处理数据确认、超时重传等逻辑。UDP 是无连接的,即通信双发不保持一个长久的联系,因此应用程序每次发送数据都要明确指定 接收端的地址。基于数据报的服务,是相对基于流的服务而言的。每次 UDP 数据报都有一个长度,接收端必须以该长度为最小单位
    将其所有内容一次性读出,否则数据将被截断。

SCTP 协议(流控制传输协议)是一种相对较新的传输层协议,它是为了再因特网上传 输电话信号而设计的。这里暂时不讨论 SCTP 协议。

应用层

负责处理应用程序的逻辑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux——网络基础概论 的相关文章

  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • 何时使用 pthread 条件变量?

    线程问题 看来 只有在其他线程调用 pthread cond notify 之前调用 pthread cond wait 时 条件变量才起作用 如果在等待之前发生通知 那么等待将被卡住 我的问题是 什么时候应该使用条件变量 调度程序可以抢占
  • Unix 命令列出包含字符串但*不*包含另一个字符串的文件

    如何递归查看包含一个字符串且不包含另一个字符串的文件列表 另外 我的意思是评估文件的文本 而不是文件名 结论 根据评论 我最终使用了 find name html exec grep lR base maps xargs grep L ba
  • 如何检测并找出程序是否陷入死锁?

    这是一道面试题 如何检测并确定程序是否陷入死锁 是否有一些工具可用于在 Linux Unix 系统上执行此操作 我的想法 如果程序没有任何进展并且其状态为运行 则为死锁 但是 其他原因也可能导致此问题 开源工具有valgrind halgr
  • 通过特定分隔符删除字符串

    我的文件中有几列 其中第二列有 分隔符 我想删除第二列中的第一个 第三个和第四个字符串 并将第二个字符串留在该列中 但我有正常的分隔符空间 所以我不知道 input 22 16050075 A G 16050075 A G 22 16050
  • GLIBCXX_3.4.26 未找到在 BeagleBone 上运行交叉编译的程序

    我有以下程序 include
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 无法从 jenkins 作为后台进程运行 nohup 命令

    更新 根据下面的讨论 我编辑了我的答案以获得更准确的描述 我正在尝试从詹金斯运行 nohup 命令 完整的命令是 nohup java jar home jar server process 0 35 jar prod gt gt var
  • Linux中的定时器类

    我需要一个计时器来以相对较低的分辨率执行回调 在 Linux 中实现此类 C 计时器类的最佳方法是什么 有我可以使用的库吗 如果您在框架 Glib Qt Wx 内编写 那么您已经拥有一个具有定时回调功能的事件循环 我认为情况并非如此 如果您
  • chown:不允许操作

    我有问题 我需要通过 php 脚本为系统中的不同用户设置文件所有者权限 所以我通过以下命令执行此操作 其中 1002 是系统的用户 ID file put contents filename content system chown 100
  • Android 时钟滴答数 [赫兹]

    关于 proc pid stat 中应用程序的总 CPU 使用率 https stackoverflow com questions 16726779 total cpu usage of an application from proc
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • CentOS:无法安装 Chromium 浏览器

    我正在尝试在 centOS 6 i 中安装 chromium 以 root 用户身份运行以下命令 cd etc yum repos d wget http repos fedorapeople org repos spot chromium
  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • Linux:在文件保存时触发 Shell 命令

    我想在修改文件时自动触发 shell 命令 我认为这可以通过注册 inotify 挂钩并调用来在代码中完成system 但是是否有更高级别的 bash 命令可以完成此任务 尝试 inotify 工具 我在复制链接时遇到问题 抱歉 但 Git
  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • 如何在shell中输出返回码?

    我正在尝试通过调用自定义 shell 脚本sh bin sh c myscript sh gt log txt 2 gt 1 echo 该命令的输出是创建的后台进程的 PID 我想指导 bin sh保存返回码myscript sh到某个文件
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少

随机推荐

  • 数组的转置和轴对称(python)

    文章目录 TOC 文章目录 1 什么叫轴 2 什么叫转置 3 转置 3 1简单转置 像二位数组 只有两个轴 再怎么转置也只是两个轴进行位置交换 所以 直接使用T就可以了 例如 3 2transpose 方法进行转置 3 3swapaxes
  • Android SQLite 数据库 存取 BLOB 二进制 文件

    Android开发时用到二进制数据 也可以理解为BYTE数组 的SQLite存取 可能会有人对存取如mp3 图片类文件困惑 其实p3 图片类文件读到内存就可理解为BYTE数组 只要在 下面的基础上增加将文件读到BYTE数组就可以了 其他操作
  • python设置下载源

    我们一般直接用pip下载三方包会很慢 设置以下命令可以加速下载 pip config set global index url Simple Index pip3 9 config set global index url Simple I
  • element Dialog子组件弹框

    父组件 div div
  • 深度学习从入门到精通——基于深度学习的地震数据去噪处理

    传统机器学习 SVM boosting bagging knn 深度学习 CNN 典型 GAN 地震应用方向 叠前地震数据随机噪声去除 实现噪声分离 面波去噪 面波作为很强的干扰波出现在地震勘探中 大大降低了地震记录的分 辨率和信噪比 深度
  • Go语言面试题--基础语法(24)

    文章目录 1 下面这段代码输出什么 2 下面代码输出什么 3 下面这段代码能否编译通过 如果通过 输出什么 1 下面这段代码输出什么 type Direction int const North Direction iota East So
  • 集成测试是接口测试吗_集成测试值得麻烦吗?

    集成测试是接口测试吗 是否编写集成测试可能是一个宗教问题 您相信还是不相信它们 我们甚至所说的集成测试都可能导致无休止的语义争论 单元测试很容易定义 它们可以测试单个单元 单个类 单个方法 对该方法的行为进行单个声明 您可能需要模拟 同样
  • ERROR: No matching distribution found for git

    问题描述 ERROR Could not find a version that satisfies the requirement git from versions none ERROR No matching distribution
  • 【html初识】HTML基础认知

    1 1 1认识网页 1 网页有哪些部分组成 文字 图片 视频 音频 超链接 2 网页背后的本质是什么 前端程序员写的代码 3 前端的代码通过什么软件转换成用户眼中的页面 通过浏览器转化 解析和渲染 成用户看到的网页 4 五大浏览器和渲染引擎
  • python 程序结构

    目录 1 顺序结构 2 分支结构 单分支 双分支 多分支 3 循环结构 for循环 while循环 例 九九乘法表 for 方法 while方法 1 顺序结构 顺序结构是最简单的程序结构 也是最常用的程序结构 只要按照解决问题的顺序写出相应
  • 面试准备:Java新特性详解

    文章目录 Java语言新特性 1 Lambda表达式和函数式接口 2 接口的默认方法和静态方法 3 方法引用 4 重复注解 5 更好的类型推断 6 拓宽注解的应用场景 Java编译器新特性 参数名称 JVM的新特性 更多资料 参考 java
  • v-model

    十 v model 10 1 v model的基本使用 div div
  • 【每日一题】分割数组

    分割数组 两次遍历 一次遍历 优化空间复杂度 题目链接 题目描述 给定一个数组 nums 将其划分为两个连续子数组 left 和 right 使得 left 中的每个元素都小于或等于 right 中的每个元素 left 和 right 都是
  • vector 不是模板 报错解决

    目录 vector 不是模板 报错解决 嵌套vector 批量修改失败 嵌套vector 批量修改OK vector 不是模板 报错解决 list和vector在命名空间std里 因此只需要在vector前加std 即可 include
  • 【王道考研 操作系统】【第三章】内存空间扩容 覆盖、交换、虚拟存储技术 页面置换算法

    目录 第三章 2 内存管理 2 2 内存空间扩充 2 2 1 覆盖技术 2 2 2 交换技术 2 2 3 虚拟存储技术 2 2 3 1 请求分页存储管理 2 2 3 2 页面置换算法 2 2 3 3 页面分配策略 2 3 地址转换 2 4
  • IT资产管理开源软件-GLPI安装手册

    GLPI是法语Gestionnaire libre de parc informatique的缩写 是一款历史悠久的资产管理开源软件 GLPI提供功能全面的IT资源管理接口 可以用来建立数据库全面管理IT的电脑 显示器 服务器 打印机 网络
  • 【Java之多线程篇】——吐血整理Java多线程详解(知识点+代码)

    目录 线程基本概念 并行 并发的区别 多线程优点和何时使用多线程 多线程创建的两种方式 继承Thread类 实现Runnable接口 代码 Thread类中的常用方法 线程的生命周期 线程的同步 用线程同步解决线程安全问题的方式 一 同步代
  • 找工作的英文自我介绍

    找工作的英文自我介绍 Good morning It s my great honor to be here for this interview Now allow me to introduce myself briefly My na
  • python基础入门系列

    基础篇 一 python基础入门 二 python程序的编写运行 三 pycharm的安装使用 四 python的包管理 五 python的repl 提高篇 OpenCV学习 一 opencv python安装与初步认识 二 opencv对
  • Linux——网络基础概论

    网络基本概念 概念 网络是由若干结点和连接这些结点的链路组成 网络中的结点可以是计算机 交换机 路由器等设备 即将不同的终端设备连接起来 网络设备 路由器 网络层 集线器 物理层 交换机 数据链路层 网络线路 网线 双绞线100m 同轴电缆