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

目录

​编辑

一,协议

协议分层

二,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.rhkb.cn/news/415669.html

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

相关文章

【书生大模型实战营】MindSearch CPU-only 版部署

MindSearch CPU-only 版部署 MindSearch CPU-only 版部署任务步骤 MindSearch CPU-only 版部署 任务 将 MindSearch 部署到 HuggingFace 并美化 Gradio 的界面,并提供截图和 Hugging Face 的Space的链接。 步骤 按照官方教程,实现在网页上打开MindSe…

llama_factory Qlora微调异常 No package metadata was found for The ‘autoawq‘

importlib.metadata.PackageNotFoundError: No package metadata was found for The ‘autoawq’ distribution was not found and is required by this application. To fix: pip install autoawq 其实问题比较简单 直接安装autoawq 即可 但是对应会有版本问题: 查…

Python自适应光学模态星形小波分析和像差算法

🎯要点 🎯星形小波分析像差测量 | 🎯对比傅里叶和小波分析 | 🎯定义多尺度图像质量度量,矩阵数据 | 🎯像差校正算法 | 🎯受激发射损耗显微镜布局 | 🎯干涉仪分支校准,求…

【unity实战】使用新版输入系统Input System+Rigidbody实现第三人称人物控制器(附项目源码)

最终效果 前言 使用CharacterController实现3d角色控制器,之前已经做过很多了: 【unity小技巧】unity最完美的CharacterController 3d角色控制器,实现移动、跳跃、下蹲、奔跑、上下坡、物理碰撞效果,复制粘贴即用 【unity实战】C…

快速入门Go:Go + gin + MongoDB

Go 进阶:Go + gin + MongDB 极速搭建EcommerceSys电商系统 前言 本章节适合有一定基础的 Golang 初学者,通过简单的项目实践来加深对 Golang 的基本语法和 Web 开发的理解。 本文章持续更新中,请关注… 项目结构 项目流程图 技术栈(待补充)项目结构项目路由 (待补充) …

DataWhale AI夏令营-《李宏毅深度学习教程》笔记-task3

DataWhale AI夏令营-《李宏毅深度学习教程》笔记-task2 第五章 循环神经网络5.1 独热编码5.2 RNN架构5.3 其他RNN5.3.1 Elman 网络 &Jordan 网络5.3.2 双向循环神经网络 第五章 循环神经网络 循环神经网络RNN,RNN在处理序列数据和时间依赖性强的问题上具有独特…

51单片机——实时时钟

1、DS1302介绍 DS1302是由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟芯片。它可以对年、月、日、周、时、分、秒进行计时,且具有闰年补偿等多种功能 RTC(Real Time Clock):实时时钟,是一种集成电路,通常称为时钟…

机器学习项目——基于机器学习(RNN LSTM 高斯拟合 MLP)的锂离子电池剩余寿命预测方法研究(代码/论文)

完整的论文代码见文章末尾 以下为核心内容和部分结果 摘要 机器学习方法在电池寿命预测中的应用主要包括监督学习、无监督学习和强化学习等。监督学习方法通过构建回归模型或分类模型,直接预测电池的剩余寿命或健康状态。无监督学习方法则通过聚类分析和降维技术&…

VS-E5PH3006L-N3 600V 30A 高效低损耗整流器 二极管 电动 / 混动汽车电池充电的可靠之选

VS-E5PH3006L-N3参数特性: 反向电压(VR):600V,这表示该整流器在电路中能承受的最大反向电压为 600 伏特,超过此电压可能会导致器件损坏。平均整流电流(IF (AV)):30A&…

【系统架构设计】嵌入式系统设计(2)

【系统架构设计】嵌入式系统设计(2) 嵌入式网络系统嵌入式 Internet 的接入方式嵌入式 TCP/IP 协议栈 嵌入式数据库管理系统数据的一致性高效的事务处理数据的安全性 实时系统与嵌入式操作系统对实时系统划分根据实时性的强弱根据对错失时限的容忍程度或…

Linux学习-虚拟化平台安装和使用

注:系统使用Rock8.6 下载链接 通过百度网盘分享的文件:cirros.qcow2,node_base.xml等2个文件 链接:https://pan.baidu.com/s/1hupGQsMjrXMgngCy3lQLhw?pwdhlr6 提取码:hlr6[rootharbor ~]# cat /etc/redhat-releas…

《Class-Agnostic Counting》CVPR2018

概述 摘要:这篇论文提出了一种用于对象计数的模型,该模型能够计算任何类别的对象,而不需要针对特定对象类别进行设计。作者将计数问题表述为一个匹配问题,利用图像中自然存在的自相似性属性。论文的贡献包括:提出了一…

软件工程知识点总结(1):软件工程概述

1 什么是软件? 定义:计算机系统中的程序及其文档。 ——程序是计算机任务的处理对象和处理规模的描述; ——文档是为了便于了解程序所需要的阐明性资料。 2 软件的特点? 软件是无形的,不可见的逻辑实体 ——它的正确与…

人到中年,越发明白,随缘是成年人之间最好的社交状态

​时光荏苒,转眼间,我们已从青涩少年步入沉稳中年。 在这个阶段,我们经历了职场的起起落落,家庭的悲欢离合,也见证了身边人的种种变化。 正如屠格涅夫所言:“凡事只要看得淡些,就没有什么可忧…

C程序设计——指针杂谈0

变量和常量讲的差不多了,这里先把指针再深入理解一下,如果你是C语言初学者,本节可能看不太懂,没关系可以以后再看。 变量 当定义变量的时候,本质是在内存中分配了一段空间,这段空间的大小与变量的类型相关…

Hackme靶机通关攻略

1.首先注册用户,登录 2.登录后,显示让我们查找自己喜欢的书,我们直接单击search,会列出很多书 3.随便选择一本书进行查询,与此同时进行抓包 4.放到重放器中,将数据改为1*,将数据包另存为1.txt&a…

Python pip 更换镜像源

文章目录 1 概述1.1 默认镜像,速度慢,易报错1.2 常用国内镜像源 2 更改镜像源2.1 临时更改2.2 永久更改2.2.1 查看配置源及配置文件2.2.2 编辑 pip.ini2.2.3 配置后的效果 1 概述 1.1 默认镜像,速度慢,易报错 默认镜像&#xff…

Win32设备I/O详解

Windows设备 在Windows平台下,设备被定义为能够与之进行通信的任何东西。最常见的 I/O 设备包括:文件、文件流、目录、物理磁盘、卷、控制台缓冲区、磁带驱动器、通信资源、mailslot 和管道等。 平常我们使用的文件,目录都可以称之为设备。…

MES系统:现代工厂生产车间的科技与管理创新

一、现代工厂生产车间:高度集成、自动化与智能化 在当今这个日新月异的工业时代,工厂生产车间已经远远超越了传统意义上的简单生产线概念,它们正逐步演变为一个高度集成、自动化与智能化的生态系统。这一变革不仅极大地提升了生产效率&#…

文件包含PHP伪协议利用方法

1、file 使用file协议读取Windows系统文件 2、php:filter协议 使用php://filter协议可以将php代码进行base64编码后显示出来 3、php://input 使用php://input协议可以将post请求的数据作为php代码运行 访问该协议并进行抓包 修改请求方式为POST 在下方输入php代码 点击forw…