【Linux网络编程】协议|OSI模型|TCP/IP模型|局域网通信|跨网络通信|地址管理|流程图

news2024/11/13 9:42:05

目录

​编辑

一,协议

协议分层

二,OSI七层模型

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

TCP/IP各个层次一些名词解释

为什么要有TCP/IP协议 

TCP/IP协议栈与操作系统的宏观关系示意图

四,网络传输基本流程

局域网的两台主机通信 

跨网络的两台主机通信

数据包封装和分用  

五,网络中的地址管理

IP地址

Mac地址

 比较IP地址和Mac地址 

网络通信的流程图


一,协议

"协议" 是一种约定,

协议分层

  • 分层设计方面的优势:每一层都有自己特定的功能 -- 低耦合
  • 一般我们的分层依据:功能比较集中,耦合度比较高的模块,分为一层 -- 高内聚

二,OSI七层模型

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

在网络的角度上来看,七层模型设计的非常完善;

  • 但是在实际的操作过程中,会话层和表示层一般是不能接入到操作系统中的,所以在工程实践中,最终实现的大多都是5层协议。 

把 5、6、7层合并成了一层:

应用层数据链路层解决的是第一个问题:把数据包交付给自己直接相连的下一台主机的问题
网络层解决的是第二个问题:要有路径选择的能力
传输层解决的是第三个问题:容错纠错能力
应用层解决的是第四个问题:解决应用方面的问题

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

四层模型就是不算物理层。

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

TCP/IP协议簇是目前最广泛的网络通信的协议集,具体的TCP/IP协议套件是一个分层模型,相比于OSI七层模型,TCP/IP模型更加简洁和实用

  • 应用层:提供直接面向用户的应用服务;通过不同的应用协议实现各种网络功能,如电子邮件、文件传输和网页浏览。常见的协议有HTTP和SSH协议
  • 传输层:负责两台主机之间的数据传输;即端到端之间,包括数据分段、传输控制、错误检测与纠正。使用到的协议有:TCP协议和UDP协议。
  • 网络层:负责数据包的路由和转发;确保数据从源主机传输到目的主机,处理数据包的逻辑地址(IP地址)寻址和路由选择。使用到的协议有IP协议
  • 数据链路层:负责在相邻节点之间传输数据帧;包括物理介质访问、数据帧的封装和解封等。协议有以太网、WI-FI(无线网络)等
  • 物理层:负责信号的的传递方式;比如现在以太网通用的网线(双绞线)、早期采用的同轴电缆、光纤、电磁波等。物理层的能力大小决定了数据传输的上限。

TCP/IP各个层次一些名词解释

  • 端口:端口是一个用于标志一台主机运行某个程序的整数
  • 数据分段:将较大的数据包拆分成更小的数据段的过程
  • 数据帧:数据帧(Data Frame)是在计算机网络中用于数据传输的基本单位,组成部分有:帧头:包含了控制信息,如目标地址、源地址、数据帧类型或长度等。通俗一点讲就是它的作用就是找到目标主机和目标主机如何正确接收这些数据的方法。
  • 数据部分:实际传输的数据
  • 帧尾:包含校验等错误检测信息,用于检查数据在传输过程中是否损坏。
  • 路由:路由是指数据根据特定算法确定到目的地址的传输路径的一个过程,简单来说们,就是选择合适路径的过程。

为什么要有TCP/IP协议 

本质就是两个需要通信的两个主机距离变远了。

遵循协议是为了确保两台主机能够在统一的规则下进行有效和可靠的数据传输,即便这两台主机相隔很远,只要它们都遵守同样的通信规则,就可以实现正确的数据交换。

TCP/IP协议之所以被广泛采用,是因为它具备一系列关键特性,如灵活性、能够支持全球范围内的网络互连、提供数据传输的可靠性以及一定程度上的安全性。简而言之,协议就是定义了如何进行通信的一套规则。 

TCP/IP协议栈与操作系统的宏观关系示意图

四,网络传输基本流程

协议报头

协议每一层都有报头,协议通常是通过协议报头来进行表达;每一份数据最终在被发送或者在不同的协议层中,都要有自己的报头

什么是报头?

报头本质也是一种数据。

比如:当你在淘宝上购买一个水杯时,收到的包裹不仅包含你真正想要的水杯,还会附带一个快递盒子和快递单。快递盒子和快递单并不是你订购的商品本身,而是为了确保商品能够准确无误地送达而附加的部分。在计算机网络中,类似地反映在网络数据传输过程中。

        当你发送一个数据包时,实际上会有一些额外的信息附加在数据之上,这些额外的信息被称为“报头”(header)每一层网络协议都会添加自己的报头,以确保数据能够正确地路由和传递

局域网通信

两台局域网的主机能够直接进行通信

每一台主机都有自己的“名字”:每一台主机都有网卡,每一张网卡都有自己的地址,这个地址称为MAC地址,表明自己在局域网中的唯一性 

局域网通信原理(以太网)

主机Mac1,向Mac7发送 “hello”,在这个局域网上的主机都能收到 “hello” 这个数据包,但是 “数据包” 只有与匹配的MAC地址才会真正收到这个数据包,其他主机进行匹配MAC地址失败,失败则直接丢弃数据包 

局域网的两台主机通信 

两台计算机设备通过TCP/IP协议通信的过程如下:

跨网络的两台主机通信

跨局域网的两台主机之间通信(同一种类型的局域网通信)

局域网之间通常通过路由器相互连接,因此一个路由器至少会连接两个局域网。这些由路由器连接的局域网会将该路由器视为本局域网内的一台主机。这样一来,路由器就能够与这些局域网中的任何一台主机进行直接通信。

比如:局域网1中的主机A要与局域网2中的主机B通信,主机A将数据发给路由器,再有路由器发给主机B。这个过程中的封装解包分用与上类似;

跨局域网的两台主机之间通信(不同类型的局域网通信)

由于不同局域网可能采用不同的通信标准,比如局域网1采用以太网标准,局域网2采用令牌环标准,不同的通信标准是无法进行互相通信的,它们给数据添加的报头协议不一样,所以对方都无法解包。

在这种情况下, 都是由路由器来处理,路由器是工作在网络层的设备,通常具有至少两个网络接口,以便连接不同的网络。

当数据需要从局域网1传输到局域网2时,流程如下:

数据要从局域网1(以太网标准发送到局域网2(令牌环标准时,路由器收到局域网1的数据后,会先将以太网对应的报头进行解包,然后将剩下的有效载荷向上交付给网络层,在网络层进行一系列数据分析后,再将数据包进行再一次封装,再交付给链路层,此时在链路层当中就会给该数据包添加上令牌环对应的报头信息,然后再将该数据发送到局域网2当中,此时该数据就能够在令牌环网当中传输了

这种方式屏蔽了底层的差异,这就是 “IP” 的第一个优势。对于通信主机双方的IP层及其往上的协议来说,它们并不需要关心底层采用的是以太网还是令牌环网,它们认为只要填写了源IP地址和目的IP地址就能够将数据发送出去,因此现在主流的网络也叫做“IP网络”

 

数据包封装和分用  

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

 当用户A要将数据 “hello” 发送给另一台主机B,该数据需要先通过网络协议栈进行封装:(自顶向下)

  • 数据包报先交给应用层,应用层添加上对应应用层协议的报头信息后,将数据再交给传输层
  • 传输层收到数据包后,再添加上对应传输层协议的报头信息,并将数据继续向下进行交付
  • 网络层收到数据包后,再添加上对应网络层协议的报头信息,接着将数据包再交给链路层
  • 链路层收到数据包后,最后再添加上对应链路层协议的报头信息,至此数据封装完毕

下图为数据封装的过程:

数据封装完毕后就可以通过局域网将其发送给对端主机了,而当对端主机收到数据后,对应也需要通过网络协议栈对该数据进行解包与分用:(自底向上) 

注:只有B主机会受到数据包,其他主机全部丢弃 

  • 链路层收到数据包后,先将数据包中对应链路层协议的报头信息提取出来,然后将剩下的数据包交给网络层
  • 网络层收到该数据包后,再将数据包中对应网络层协议的报头信息提取出来,然后将剩下的数据包继续向上进行交付
  • 传输层收到该数据包后,再将数据包中对应传输层协议的报头信息提取出来,然后将剩下的数据包再交付给应用层
  • 应用层收到数据包后,最后将数据包中对应应用层协议的报头信息提取出来,至此便完成了数据包的解包与分用

报文 = 报头 + 有效载荷 

五,网络中的地址管理

在网络中有两个常用的地址:IP地址和MAC地址

IP地址

IP地址是在网络层用IP协议标识和定位设备的逻辑地址,其中IP协议分为IPv4和IPv6。IPv4下的IP地址是一个4字节,32位的无符号整数表示,通常写成四个十进制数字,每个数字占一个字节,数据范围是[0-255]。IPv6下的IP地址是16字节,采用八组十六进制数字,每组都是16位,即两个字节。

作用:

  • 唯一标识一台网络上的设备。
  • IP地址帮助路由器决定数据包如何从源地址传输到目标地址。
  • 路由器根据目标IP地址将数据包从一个网络传输到另一个网络。

Mac地址

Mac地址是用于在数据链路层标识和定位设备的物理地址,由48位二进制表示,通常用十六进制的表示,被厂商预先分配给网卡。

作用:

  • 每个网卡都有唯一的Mac地址,用于在局域网中唯一标识设备。
  • 在局域网中,数据帧的源地址和目标地址是MAC地址,通过MAC地址确保数据帧能够准确地从发送端传输到接收端。

 比较IP地址和Mac地址 

IP地址可以在不同的网络中标识唯一设备,帮助路由器将数据包从一个网络到另一个网络。Mac地址用于定位网络内部的目标设备。这俩各种再网络传输过程中起到了不可替代的作用。简单来说,IP地址告诉路由器数据应该转发给哪一个网络,Mac地址告诉路由器数据应该发给这个网络的那一台主机。

网络通信的流程图

 

 

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

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

相关文章

华为云征文|Flexus云服务X实例使用,宝塔的安装,利用宝塔安装Java、NGINX,Redis,Python,快速搭建开发环境

引出 4核12G-100G-3M规格的Flexus X实例使用测评第4弹:Flexus云服务X实例使用,宝塔的安装,利用宝塔安装Java、NGINX,redis,Python,快速搭建开发环境 什么是Flexus云服务器X实例 官方解释: Fl…

openharmony历程一:安装ubuntu20.04

1.下载ubuntu20.04 官网下载 下拉选择 可使用镜像: 镜像 2.安装 本人使用vmware,其他的如virtualbox也差不多 选择自定义和下一步 我使用的是r5 5600H,只有12核。 由于后面用于鸿蒙安装,推荐内存16GB及以上,硬盘100GB及…

L1-100 四项全能

作者 陈越 单位 浙江大学 新浪微博上有一个帖子给出了一道题:全班有 50 人,有 30 人会游泳,有 35 人会篮球,有 42 人会唱歌,有 46 人会骑车,至少有( )人四项都会。 发帖人不会做这道…

【原创教程】电气电工15:线槽导轨

电气电工这些知识点,我们描述的比较细,虽然看起来比较简单,但是它是后面我们技能提升的基础,如果我们后面学电气工程师相关知识,这些都属于基本功。 接着我们来看一下线槽导轨。 线槽又名走线槽、配线槽、行线槽(因地方而异),是用来将电源线、数据线等线材规范的整理…

【深入了解Java常用类】

前言:Java中的常用类主要提供了广泛的工具和功能,用于简化开发任务,处理常见的编程需求。前面我们已经介绍过String类的一些基本使用方法,接下来我们再介绍一些其它常用类的使用,本文主要介绍以包装类Integer为例、Mat…

SQL语句--DML

DML:Data Manipulation Language(数据操作语言),对表的数据记录增删改查 添加数据 INSERT修改数据UPDATA删除数据 DELETE 给指定字段添加数据: INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1&#xf…

设计模式-原型适配器桥接外观

3.3原型模式(代码见vs) 原型模式就是自我复制。原型模式的核心是一个clone()方法, 对于C来说,其实就是拷贝构造函数,需要实现深拷贝。拷贝构造函数根据谁来拷贝才能实现自我复制呢?答案就是根据自己复制自己…

语言质量评估对欧洲游戏推广的重要性

语言质量评估在欧洲推广游戏中的重要性怎么强调都不为过。欧洲是一个文化和语言多样化的市场,整个大陆有200多种语言。因此,要提供一款与不同地区玩家产生共鸣的本地化游戏,不仅需要准确的翻译,还需要细致的语言质量评估。这一过程…

mysql高级sql

一,查询 1.按关键字排序 1.1用 **ORDER BY** 语句来实现排序: - ORDER BY 语句用于对查询结果进行排序。可以根据一个或多个字段的值进行升序(ASC)或降序(DESC)排序。1.2排序可针对一个或多个字段&#…

【运维监控】prometheus+node exporter+grafana 监控linux机器运行情况(2)

本示例是通过prometheus的node exporter收集主机的信息,然后在grafana的dashborad进行展示。本示例使用到的组件均是最新的,下文中会有具体版本说明,linux环境是centos。本示例分为四个部分,即prometheus、grafana、node exporter…

W25Q32驱动 基于HAL库的SPI

环境 芯片:STM32F103ZET6 库:来自HAL的STM32F1XX.H 原理图 cubeMX配置 W25Q32.h // // Created by seven on 2024/9/2. //#ifndef SPI_W25Q32_H #define SPI_W25Q32_H #include "spi.h"/*** 初始化W25Q32闪存芯片*/ void W25Q32_Init(void);/*** 停止…

P7492 [传智杯 #3 决赛] 序列

*原题链接* 一道类似势能线段树的题,区间按位或上k,不满足区间可合并的性质,只能暴力的单点修改。 但是考虑按位或的性质,一个数或上另一个数,只会变大或不变,如果我们能找到一个方法,能够判定…

Gitlab-ce upgrade 16.0.1 to 17.3.1【Gitlab-ce 16.0.1 升级 17.3.1】

文章目录 背景gitlab-ce 16.0.1 升级 17.3.1 失败gitlab-ce 16.0.1 升级 16.11.8 失败gitlab-ce 16.0.1 升级 16.7.9 失败gitlab-ce 16.0.1 升级 16.3.8 成功gitlab-ce 16.3.8 升级 16.11.8 失败gitlab-ce 16.3.8 升级 16.7.9 成功gitlab-ce 16.7.8 升级 16.11.8 成功gitlab-ce…

牛客(数字统计)

[NOIP2010]数字统计 题目题解(77)讨论(41)排行面经 new 时间限制:1秒 空间限制:128M 知识点NOIP复赛字符串 校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。 描述 请统计…

【Day08】

目录 MySQL-多表查询-概述 MySQL-多表查询-内连接 MySQL-多表查询-外连接 MySQL-多表查询-[标量、列]子查询 MySQL-多表查询-[行、表]子查询 MySQL-多表查询-案例 MySQL-事务-介绍与操作 MySQL-事务-四大特性 MySQL-索引-介绍 MySQL-索引-结构 MySQL-索引-操作语法 …

【Qt】消息对话框 QMessageBox

消息对话框 QMessageBox QMessageBox 用于显示一个消息给用户,,并且让用户进行一个简单的选择。 消息对话框是应⽤程序中最常⽤的界⾯元素。消息对话框主要⽤于为⽤⼾提⽰重要信息,强制⽤⼾进⾏选择操作。 例子:创建一个消息对话…

【Datawhale X 李宏毅苹果书 AI夏令营】《深度学习详解》Task3 打卡

文章目录 前言学习目标一、优化策略二、模型偏差三、优化问题三、过拟合增加训练集给模型一些限制 四、交叉验证五、不匹配总结 前言 本文是【Datawhale X 李宏毅苹果书 AI夏令营】的Task3学习笔记打卡。 学习目标 李宏毅老师对应视频课程:https://www.bilibili.…

JMeter 安装使用

JMeter 安装使用 a.安装 下载链接:Apache JMeter - Download Apache JMeter 环境变量 打开 cmd 输入 jmeter,即可启动 b.使用 http请求接口 300 个线程设置 1 s 的预热时间 右键 start

B端:工作台页面放什么?不知道,这里告诉你10个常见内容。

工作台是B端系统的核心页面,也是最常用的页面,该页面的上通常放哪些内容了,是中说纷纭,本文把常放内容给大家列举下。 B端工作台页面是专门为企业用户设计的工作台,通常需要包含一些与企业工作相关的功能和信息。以下…

传知代码-让机器感受你的情绪!(论文复现)

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 让计算机理解你的情绪! 随着近年来社交媒体的快速增长,社交媒体上的用户生成内容(例如视频)的量大幅增加。不同模态的自动情感分析有利于人机交互,并吸…