网络原理初识(2)

news2024/12/29 10:28:15

目录

一、协议分层

        1、分层的作用

        2、OSI七层模型

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

        4、网络设备所在分层

        5、网络分层对应

二、封装和分用

发送过程(封装)

1、应用层(应用程序) QQ

2、传输层

3、网络层

4、数据链路层

5、物理层

接收过程(分用)

1、物理层

2、数据链路层--以太网

3、网络层--IP协议

4、传输层--UDP协议

5、应用层--QQ应用程序

现实世界的封装和分用

假设上面其中某个节点是交换机

假设上面其中某个节点是路由器

都看到这了,点个赞再走吧,谢谢谢谢谢


一、协议分层

        1、分层的作用

        网络通信过程中,涉及到的细节非常多,如果要有一个协议来完成网络通信,就要约定好方方面面的内容,因为细节非常多,就导致协议非常麻烦。

        一个协议太庞大复制,就把它拆分成多个功能单一的协议,拆分出来的协议太多了,为了让这些协议更好的相互配合,就引用了协议分层

        网络协议被拆分出来后,就把这些协议进行分层,把功能相似的协议放到同一层,上层协议能调用下层协议的功能,下层协议给上层协议提供服务。类似公司的老板--领导--组织--员工体系。

        协议分层的初心就是让一个复制的协议变成多个简单的协议,这还附带了一些好处,如图:

        (1)上层协议直接使用下层协议就好了,不需要了解下层协议的细节

        如上图,语言层,不管老人还是小孩,只要会说汉语,就能打电话,并不需要知道电话机的工作原理。

        (2)某一层协议进行替换后,对其他协议并没有啥影响

        如上图,电话机协议换成汉语协议和英语协议,还是能打电话,说汉语的就使用无线电,说英语的就使用电话机,还是可以实现打电话这个功能,并没有啥影响。

        2、OSI七层模型

        最初大佬设计的方案,后来在实施过程中,因为太麻烦了,就简化成五层。

        OSI:即Open System Interconnection,开放系统互连.

OSI七层网络模型是一个逻辑上的定义和规范:把网络从逻辑上分为了七层.

OSI七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输; 

        OSI:七层模型划分为以下七层:

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

        这里的或四层的意思是不算物理层,物理层是纯硬件的,而程序员往往不用理会物理层。

        1)应用层:程序拿到数据后,要用来干嘛,解决什么问题。

        类似网上下单商品后,装进快递盒贴码后交给快递小哥,快递小哥拿快递盒开始运送。

        2)传输层:负责关注网络数据包的 起点和终点(从哪来到哪去),端口和端口之间的传输。

        类似网购的商品发送地址和收货地址,广东-->上海

        3)网络层:负责关注起点和终点之间的 路径规划(怎么走)。

        类似规划路线:广东-->武汉-->河北-->...-->上海

        4)数据链路层:负责两个相邻节点的传输。

        类似上海-->南京:飞机空运;南京-->无锡:铁路运输。

        5)物理层:通信过程的基础设施

        类似公路,铁路,航线....

        4、网络设备所在分层

        对于一台主机:它的操作系统内核实现了从传输层到物理层的内容,即TCP / IP五层模型的下四层

        对于一台路由器:它实现了从网络层到物理层,即TCP / IP五层模型的下三层

        对于一台交换机:它实现了从数据链路层到物理层,即TCP / IP五层模型的下二层

        对于一台集线器:它只实现了物理层

        注意:这里谈到的路由器和交换机是 “经典”的路由器、交换机(教科书上的);事实上,真实世界中的交换机 / 路由器要更复杂,功能也更强大。

        很多交换机,也具备一些路由器的的功能,也能工作在网络层。

        很多路由器,也具备一些交换机的功能,也能工作在数据链路层。

        现实世界的情况和考试的情况 可能存在差异。

        5、网络分层对应

        网络数据传输时,经过不同的网络结点(主机,路由器)时,网络分层需要对应.

        以下为同一个网段中两台主机进行文件传输:

        两台计算机通过TCP/IP协议通讯的过程如下图所示:

        TCP/IP通讯过程:

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


二、封装和分用

        封装和分用是网络传输过程中,最核心的过程。

1.不同协议层对数据包有不同的称谓:包(packet)->IP数据包,;段(segment)->TCP数据段;

报(datagram)->UDP数据报;帧(frame)->以太网数据帧.

2.应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装

3.首部信息中包含了一些类似于首部有多长,载荷有多长,上层协议是什么等信息.

4.数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥离出相应的首部,根据首部中的"上层协议字段"将数据交给对应的上层协议处理.

        举个例子,介绍分装分用的过程:A 通过QQ 给 B 发送一个 hello。

发送过程(封装)

1、应用层(应用程序) QQ

        QQ从消息输入框,获取到用户输入的 “hello”,就要把这个字符串构造成应用层的数据包;QQ这样的程序内部就设置了一个应用层协议:应用层数据包就是按照这个应用层协议约定的格式来构造的。

        约定格式如下:

        应用程序就会调用操作系统的api,把这个数据包交给传输层。

2、传输层

        输入层就会把上述数据作为一个整体,再构造成一个传输层的数据包。

        此处假定使用UDP来进行通信,就会构造成一个UDP的数据包。如图:

        UDP报头:虽然不能保护数据,但能起到类似 “贴标签”的效果,就能承载一些关键的、用来转发数据的信息。对于UDP报头来说,承载的最重要的信息就是源端口目的端口

        形如上述添加报头的过程,就叫做封装,其实就是字符串拼接,只不过拼的报头,具有一定的结构。

        拼装好传输层数据包之后,就要把这个数据包进一步的交给下层,网络层继续进行封装。

3、网络层

        这里涉及的最核心的协议:IP协议。

        网络层根据IP协议,把刚才传输层的UDP数据包作为一个整体,再拼上IP协议的报头,构造成一个IP数据包。如图:

        IP协议的报头,相当于把整个UDP数据包当成一个整体了。这里也会包含一些辅助转发的关键信息,此处最关键的信息就是 源IP目的IP

        构造完成完整的IP数据包后,IP协议继续调用数据链路层的 api,再把数据交给数据链路层的协议处理。

4、数据链路层

        这里涉及核心的协议:以太网,此处的 “以太” 用来表示网络数据传输的介质。

        以太网就是日常最常见到的 有线网络,日常用到的网线,也叫做 “以太网线”,日常用到的网口,也叫做 “以太网口”,用到的交换机,也叫做 “以太网交换机”。

        在数据链路层中,会把IP数据包作为一个整体,再添加以太网数据帧,在IP数据包基础上,添加帧头和帧尾。如图下就是以太网数据帧:

        构造完以太网数据帧后,以太网协议就会把以数据交给物理层。

5、物理层

        物理层涉及到的是硬件设备,把上述这样的以太网数据帧,它是二进制结构(一串 0 1 0 1 这样的数据),转换成光信号 / 电信号 / 电磁波。

        光信号:光纤,通过光的频谱进行编码。

        电信号:网线,高电平 / 低电平

        电磁波:无线WiFi

经过上述流程,数据才从你电脑上发送出去

接收过程(分用)

        中间过程暂时不考虑,假定数据包已经到达B的网卡了,B如何处理这个数据包的过程,就称为 分用。

1、物理层

        B的物理层收到光信号 / 电信号 / 电磁波,就会把这些物理信号转换成数字信号(二进制的 0 1 0 1),得到一个以太网数据帧,进一步的把这个数据帧交给数据链路层处理。

2、数据链路层--以太网

        按照以太网数据帧的格式,来解析,取出其中的载荷,再交给上层协议。(发送方和接收方得使用一样的协议才行)如图:

3、网络层--IP协议

        按照IP协议的格式进行解析,取出其中的载荷,再交给上层协议。如图:

        

4、传输层--UDP协议

        按照UDP协议的格式来解析,取出其中的载荷,再交给上一层。如图:

5、应用层--QQ应用程序

        按照QQ应用程序内部的应用层协议格式来解析数据,如图:

        qq拿到上面数据后,就会再窗口给你弹出提示,并且把消息、发送者、发送时间 都显示在连聊天窗口上。

现实世界的封装和分用

        上面这种情况是两台主机网线直连的情况,并不是真实情况,真实情况更加复杂,会通过一系列交换机 / 路由器 进行数据转发。

       但实际上,即使是经过路由器或者交换机,上述的封装分用过程,也同样适用,只不过,封装分用的程度不一定是到 应用层(五层都有)。

        对于经典的交换机来说,就只需要封装分用到数据链路层

        对于经典的路由器来说,就只需要封装分用到网络层

假设上面其中某个节点是交换机

        交换机就会把上述光电信号转换成以太网数据帧二进制,交给数据链路层。如图:

        交换机的数据链路层就会对上述数据进行解析,这个解析过程:一方面要取出载荷部分,另一方面要解析帧头的关键信息

        根据帧头中的信息,决定下一步把数据往哪里进行发送,根据这个情况,再构造出新的以太网数据帧。如图:

        把新的数据继续通过物理层发送出去。

假设上面其中某个节点是路由器

        路由器则比交换机要更复杂一些,就是封装分用到网络层。

        先是物理层拿到光电信号,转换成二进制数据,再交给数据链路层,如图:

        数据链路层根据上面的数据进行解析,取出载荷,交给网络层(IP协议)。

        网络层中,IP协议进一步对收到的数据进行解析,取出载荷。

        也要解析IP报头,路由器需要通过IP报头,得到目的IP,接下来才知道如何转发。

        取出IP报头,IP协议进行重新封装,得到新的IP报头,如图:

        继续交给数据链路层,继续加上新的帧头和帧尾,如图:

        这个数据再交给物理层,转成光电信号,继续传输。

上述是经典的交换机和路由器,现实情况要更复杂一些,比如交换机,就要截取 / 解析你传输的数据,会封装分用到应用层,把你的hello拎出来看看,你作为外人,无从得知,比如棱镜门事件,就是利用这一机制,监听各国机密的。


都看到这了,点个赞再走吧,谢谢谢谢谢

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

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

相关文章

jvisualvm 工具的使用

文章目录 Visual GC 插件下载代码示例说明spaces 区域PermHeap Graphs 区域Compile Time(编译时间)Class Loader Time(类加载时间)GC TimeEden Space(Eden 区)Survivor 0 / Survivor 1(S0 和 S1…

23.复习

1.设置输出数字宽度 #include <iostream>using namespace std;int main(){int a123456789,b0,c-1;printf("%8d %8d %8d",a,b,c);return 0; }2.保留小数点位数 #include <iostream>using namespace std;int main(){double a;cin>>a;printf("…

SpringBoot整合MyBatisPlus实现增删改查

1.前言☕ 大家好&#xff0c;我是Leo哥&#x1fae3;&#x1fae3;&#x1fae3;&#xff0c;今天给大家带来关于精品SpringBoot专栏&#xff0c;暂且就给他起名为循序渐进学SpringBoot&#xff0c;这里我参考了我上一个专栏&#xff1a;循序渐进学SpringSecurity6。有需要的朋…

Websocket在Asp.net webApi(.net framework)上的应用

之前在写看板部分的web api的时候&#xff0c;都是通过Ajax在规定时间内轮询调用web api&#xff0c;这样简单省事&#xff0c;但是当看板多了&#xff08;并发量上来&#xff09;以后&#xff0c;比较消耗服务器的性能&#xff0c;所以最近研究了websocket&#xff0c;希望使用…

[Flutter]自定义等待转圈和Toast提示

1.自定义样式 2.自定义LoadingView import package:flutter/material.dart;enum LoadingStyle {onlyIndicator, // 仅一个转圈等待roundedRectangle, // 添加一个圆角矩形当背景maskingOperation, // 添加一个背景蒙层&#xff0c; 阻止用户操作 }class LoadingView {static f…

十堰网站建设公司华想科技具有10年的网站制作经验

2018年已经结束了。 华翔科技收到了很多客户的咨询&#xff0c;他们都有一个共同的问题&#xff1a;建一个网站需要多少钱&#xff1f; 但是&#xff0c;我们都会问&#xff1a;您有什么具体需求吗&#xff1f; 大多数人的答案是否定的&#xff0c;他们只是想打听一下价格。 十…

3款免费又实用的良心软件,功能强大到离谱,白嫖党的最爱

闲话不多说&#xff0c;直接上硬货&#xff01; 1、酷狗概念版 这款正版音乐APP可谓是“良心之作”。不论你是新用户还是老用户&#xff0c;只要踏入概念版的门槛&#xff0c;即可获得3个月VIP作为见面礼。更令人惊喜的是&#xff0c;每天只需轻松一点播放歌曲&#xff0c;即…

VideoDubber时长可控的视频配音方法

本次分享由中国人民大学、微软亚洲研究院联合投稿于AAAI 2023的一篇专门为视频配音任务定制的机器翻译的工作《VideoDubber: Machine Translation with Speech-Aware Length Control for Video Dubbing》。这个工作将电影或电视节目中的原始语音翻译成目标语言。 论文地址&…

【XR806开发板试用】新鲜出炉的蓝牙配网Demo

今天收到了极术社区寄来的礼物&#xff0c;非常感谢。为此今天突击贡献一份蓝牙配网的小Demo&#xff0c;由于我对BLE通信不是很熟&#xff0c;此Demo仅供演示&#xff0c;存在几个问题尚未解决&#xff1a; 无法实现广播名没有修改GATT表&#xff0c;直接套用例程的了没有实现…

【自动驾驶系列丛书学习】2.《自动驾驶汽车环境感知》学习笔记

《自动驾驶技术概论》学习笔记 致谢&#xff1a;作者&#xff1a;甄先通、黄坚、王亮、夏添 -------------------------------------------------------------------------------------------------------- 笔记目录 《自动驾驶技术概论》学习笔记 1.自动驾驶环境感知概述…

Python从0到100(三):Python中的变量介绍

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

Day31-计算机基础1

Day31-计算机基础1 1. 网络基础介绍1.1 什么是网络&#xff1f;1.2 为什么要有网络&#xff1f;1.3 运维人员需要学习哪些网络知识&#xff1f;1.4 按作用范围对网络分类 2.网络设备知识2.1 网络传输介质及传输信号2.2 网卡设备2.3 中继器&#xff08;RP repeater&#xff09;2…

海思Hi3403V100方案双目视频融合模组测试

Hi3403V100是海思面向高端市场应用推出的专业 Ultra-HD Smart IP Camera SOC&#xff0c;该芯片最高支持四路sensor输入&#xff0c;支持最高4K60的ISP图像处理能力。 海思Hi3403V100方案双目视频模组采用了海思Hi3403V100方案核心板双目视频融合IMX334 Sensor板测试&#xff…

neo4j 删除从一个node开始的所有数据。

##一、 需求 删除红线右边重复的数据 二、 删除与中心点1的右边连线 2.1 中心点1橙色&#xff1a; <elementId>: 4:fbde4fa1-3453-4e00-91ce-92b16aec22e3:425 <id>: 425 fileName: /Users/guibing.gao/Desktop/lib2.2 与中新点1右边链接的node <elementId>…

助力头部银行10倍提升数据化运营效率,NoETL的破局之道丨爱分析活动

在数字化飞速发展的今天&#xff0c;企业经营者们逐渐认识到数据平台对于企业生产经营所不可或缺的价值。随着数据平台不断发展和进化&#xff0c;数据量、数据源、用数人群也日益增加&#xff0c;对于业务用数敏捷和数据管理有序同样带来了全新的挑战。数据应用层面&#xff0…

安卓studio安装

安卓studio安装 2024.3.11官网的版本&#xff08;有些翻墙步骤下载东西也解决了&#xff09; 这次写的略有草率&#xff0c;后面会更新布局的&#xff0c;因为截图量太大了&#xff0c;有需要的小伙伴可以试着接受一下哈哈哈哈 !(https://gitee.com/jiuzheyangbawjf/img/raw/ma…

【C++】关键字:auto

文章目录 1. 介绍2. 如何使用 1. 介绍 从C11开始&#xff0c;auto变成了类型指示符&#xff08;之前auto并不是这个作用&#xff09;。使用auto定义变量时必须对其进行初始化&#xff0c;在编译阶段编译器自动推导auto变量的实际类型。因此auto并非是一种“类型”的声明&#…

在 Python 中从键盘读取用户输入

文章目录 如何在 Python 中从键盘读取用户输入input 函数使用input读取键盘输入使用input读取特定类型的数据处理错误从用户输入中读取多个值 getpass 模块使用 PyInputPlus 自动执行用户输入评估总结 如何在 Python 中从键盘读取用户输入 原文《How to Read User Input From t…

【Idea】八种Debug模式介绍

1.行断点 在对应的代码行左侧边栏点击鼠标左键&#xff0c;会出现一个红色圆圈&#xff0c;以debug模式执行时当代码运行到此处则会停止&#xff0c;并可以查询相关上下文参数 2.方法断点 在方法左侧点击创建断点,在方法进入时会停止&#xff0c;同时可以右键断点&#xff0c;…

使用GraaVIM打包Linux平台本地镜像

1.创建实例&#xff0c;在WindTerm上面连接云服务器 2.安装Lrzsz文件上传工具 yum install lrzsz 3.上传打好的jar包 lrz 使用ls命令查看是否上传成功 3.安装gcc等环境 sudo yum install gcc glibc-devel zlib-devel 4.下载安装配置Linux下的GraaVIM、native-image 下载链…