网络基础Linux

目录

计算机网络背景

网络发展

认识 "协议"

网络协议初识

OSI七层模型

TCP/IP五层(或四层)模型

网络传输基本流程

网络传输流程图

​编辑

数据包封装和分用

网络中的地址管理

认识IP地址

认识MAC地址

笔记(画的图)

协议(要想到结构体)

网络传输流程图 

以太网通信

网络通信的基本脉络指示图


计算机网络背景

网络发展

独立模式: 计算机之间相互独立;

网络互联: 多台计算机连接在一起, 完成数据共享;

局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起;

广域网WAN: 将远隔千里的计算机都连在一起;

所谓 "局域网" 和 "广域网" 只是一个相对的概念. 比如, 我们有 "天朝特色" 的广域网, 也可以看做一个比较大的局域 网.

认识 "协议"

"协议" 是一种约定.

高小琴例子

计算机之间的传输媒介是光信号和电信号. 通过 "频率" 和 "强弱" 来表示 0 和 1 这样的信息. 要想传递各种不同的信 息, 就需要约定好双方的数据格式.

  • 思考: 只要通信的两台主机, 约定好协议就可以了么?

方言例子

  • 计算机生产厂商有很多;
  • 计算机操作系统, 也有很多;
  • 计算机网络硬件设备, 还是有很多;
  • 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准,大家都来遵守, 这就是 网络协议;

网络协议初识

协议分层

打电话例子

在这个例子中, 我们的协议只有两层; 但是实际的网络通信会更加复杂, 需要分更多的层次.

分层最大的好处在于 "封装" . 面向对象例子

OSI七层模型

  • OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型, 是一个逻辑上的定义和规范;
  • 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
  • OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
  • 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七 个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
  • 但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解.

TCP/IP五层(或四层)模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.

  • 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决 定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
  • 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测 到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太 网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
  • 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规 划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
  • 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标 主机.
  • 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问 协议(Telnet)等. 我们的网络编程主要就是针对应用层.

物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型.

一般而言

  • 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容;
  • 对于一台路由器, 它实现了从网络层到物理层;
  • 对于一台交换机, 它实现了从数据链路层到物理层;
  • 对于集线器, 它只实现了物理层;

但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发);

参考资料

TCP/IP四层模型和OSI七层模型的概念_网络7层模型之间的关系-CSDN博客

网络传输基本流程

网络传输流程图

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

跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.

数据包封装和分用

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链 路层叫做帧(frame).
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).
  • 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议 字段" 将数据交给对应的上层协议处理.

下图为数据封装的过程

下图为数据分用的过程

网络中的地址管理

认识IP地址

IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指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地址)

笔记(画的图)

协议(要想到结构体)

  • 计算机生产厂商有很多
  • 计算机操作系统,也有很多,
  • 计算机网络硬件设备,还是有很多
  • 如何让这些不同厂商之间生产的计算机能够相互顺畅的通信?就需要有人站出来,约定一个共同的标准大家都来遵守,这就是网络协议

OS, 网络协议栈
网络协议栈和我们之前学习的OS有什么关系呢?

网络传输流程图 

以太网通信

以太网发生数据碰撞问题
发送主机都要执行碰撞避免的算法
碰撞域
网卡的工作模式:正常模式&&混杂模式
划分碰撞域

任何主机都可以往局域网发消息,但任何一个时刻只允许一台主机向一个局域网当中发送消息

保证互斥访问     

网络通信的基本脉络指示图

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

干货 | WiFi 7(802.11BE)技术规范详解

1 概述 1.1 简介 当前全球有近200亿的Wi-Fi设备正在使用,Wi-Fi已成为生活、工作中不可或缺的一部分。在实际应用中,Wi-Fi协议所传输无线流量,已占到无线总流量的90%。海量数据快速、安全传输受益于巨量Wi-Fi设备高效、安全、可靠地工作&a…

线程的状态

目录 一、线程的所有状态 二、状态转换 三、多线程初体验 一、线程的所有状态 状态是针对当前线程调度情况所描述的,又因为线程是调度的基本单位,所以我们所谈到的状态都是线程的属性。在java里对线程的状态,进行了一个更细的划分。 我们可…

基于SpringBoot网上超市的设计与实现录像

基于SpringBoot网上超市的设计与实现录像 SpringBoot网上超市的设计与实现录像

认证鉴权框架SpringSecurity-3--代码集成_认证篇1(重写UserDetailsService示例)

上一篇介绍了springSecurity中常用的组件和过滤器链,明白了springSecurity管理认证和授权的基本过程和所用到的组件。之后几篇我们通过在Java代码集成springSecurity,来学习下代码上认证是如何实现的。 代码上常用的认证方式有两种,一种是实现…

C语言操作符终极揭秘:表达式求值秘籍

C语言中操作符详解(终结篇) 放在最前面的表达式求值定义(1) 操作数的求值(2) 操作符的应用(3)类型转换(3.1)隐式类型转换(Type Promotion&#xf…

[代码审计]宏*HCM最新文件上传漏洞分析复现

如果觉得该文章有帮助的,麻烦师傅们可以搜索下微信公众号:良月安全。点个关注,感谢师傅们的支持。 免责声明 本博客所发布的所有内容,包括但不限于信息、工具、项目以及文章,均旨在提供学习与研究之用。所有工具安全性…

谷歌Gemini发布iOS版App,live语音聊天免费用!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…

MYSQL SQL优化总结【快速理解】

1、优化insert操作 批量插入,防止大量与数据库进行访问 手动控制事务,减少事务的频繁开启和提交。 主键顺序插入 2、优化主键 主键优化的点就是避免主键过长,因为如果有二级索引,叶子节点存储的数据时间上是主键,如果主…

【Hive】【HiveQL】【大数据技术基础】 实验四 HBase shell命令实验

实验四:熟悉常用的HBase操作 实验概览 在本次实验中,我们将深入探索HBase在Hadoop生态系统中的角色,并熟练掌握常用的HBase Shell命令和Java API操作。通过这些实践,我们能够更好地理解HBase的工作原理以及如何在实际项目中应用。…

解决渠道问题的高效控价方法

当品牌销售渠道增多、涉及销售店铺量上升且品牌期望持续稳定发展时,就应着手处理控价事宜。控价有助于稳定品牌价值、吸引经销商加入以及利于品牌口碑传播。 控价应包含的渠道 随着电商平台发展,品牌销售渠道日益丰富,除线下传播渠道外&…

随机数

目录 一、传统方式:std::rand 和 std::srand 使用方法: 优缺点: 二、现代方式: 库(推荐) 1. 随机整数 2. 随机浮点数 3. 布尔值 4. 字符 5. 正态分布(高斯分布) 6. 离散分…

生物信息入门软件安装(保姆级教程)

写在开头 大四期间,选修了一门智慧医疗的课程,期末考核为25分钟有关智慧医疗方面的汇报。一次偶然的课程汇报让我接触到了生物信息,也产生了浓厚的兴趣,同时加入了老师的研究生小组,开启了这段生物信息学习的旅途。至此…

数据智能新纪元:向量数据库驱动AI大模型创新

数据智能新纪元:向量数据库驱动AI大模型创新 前言向量数据库与AI大模型的关系以及发展现状向量数据库的技术创新与落地实践向量数据库的未来趋势与产业机遇 前言 最近和一位搞AI创业的朋友聊天,他说了句意味深长的话:“当所有人都在谈论大模型…

2024 Visual Studio Code的下载与安装

目录 一、Windows系统下载与安装二、macOS系统下载与安装三、Linux系统下载与安装四、启动与配置VS Code 以下是2024年Visual Studio Code(简称VS Code)的下载与安装步骤,适用于Windows、macOS和Linux系统: 一、Windows系统下载与…

利用TinyML和IoT技术预测沙漠地区光伏电站清洁方法

论文标题 英文标题:Predictive method for cleaning photovoltaic plants in desert areas using TinyML and IoT technique 作者信息 A. Mellit, M. Chourouk:Faculty of Science and Technology, Renewable Energy laboratory, University of Jijel…

P3372 【模板】线段树 1

luoguP3372 【模板】线段树 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 k k k。求出某区间每一个数的和。 输入格式 第一行包含两个整数 n , m n, m n,m,分别表示该数列数字的个数和操作…

Enigma Virtual Box封装客户端

1.输入可执行程序,另外命名输出可执行程序的输出程序。如图: 2.添加附带文件 这些文件包括可执行程序的库、文件、插件等。 如图:(这里包括文件或者文件夹) 3.点击process生成可执行文件 生成的执行文件可以放在桌面上单独运行。

Unity自动LOD工具AutoLOD Mesh Decimator的使用

最近在研究大批量物体生成,由于我们没有专业美术,在模型减面工作上没有人手,所以准备用插件来实现LOD功能,所以找到了AutoLOD Mesh Decimator这个插件。 1,导入插件后,我们拿个实验的僵尸狗来做实验。 空…

VMware彻底官宣免费!杀疯了!

话说最近这几个月,几家软件大佬这是怎么了,这怎么还开始卷免费了呢(手动doge)。 众所周知,就在上个月的时候,Jetbrains 刚官宣其旗下 WebStorm 和 Rider 两款软件开始对非商业用途全面免费,当时…

QML —— 拖拽测试 - 文本图片跑马灯Demo(附源码)

效果 说明 此代码可对文本及图片进行托转并放入被置方框内,在放置的文本框或图片框发生变化后,跑马灯也会在下一次运行时内容发生变化。 代码 main.qml import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.14 import QtQu…