TCP/IP五层模型、封装和分用

  • 1.网络通信基础
  • 2.协议分层
    • OSI七层协议模型
    • TCP/IP五层/四层协议模型【重点】
  • 3. 封装&分用

1.网络通信基础

IP地址:表示计算机的位置,分源IP和目标IP;举个例子:买快递,商家从上海发货,上海就是源IP,收货地址是湖北,湖北就是目标IP。

端口号:表示一个具体的应用程序,分源端口和目标端口,如:某个进程或服务的端口号是8080;还是买快递的例子,发货的商家,商家就是源端口号,收货的买家,买家就是目标端口号。

同学们都看过西游记⑧~唐僧每次介绍自己的时候,是这么说的:“贫僧自东土大唐而来,去西天拜佛求经”,这里的贫僧=源端口(我是谁)、东土大唐=源IP(从哪来)、佛祖=目标端口(要找谁)、西天=目标IP(到哪去)

协议:规定数据之间传输的方法/规则,就好比加密通话,说暗号,我不要碟盘了(我没事了),我对别人说:“我不要碟盘了”,对方收到后,通过之前约定的协议,对这句话进行解读,意思就是”我没事了“

2.协议分层

最原始的协议是一大类,复杂难懂,于是进行了分化,分成多种短小的协议,也就是分层,每层有各自代表的意义和作用,上层协议调用下层协议,下层协议服务上层协议,这样学习起来就有迹可循,变得简单易懂。

OSI七层协议模型

七层协议模型是指OSI(Open Systems Interconnection)七层协议模型,它是一种网络协议的分类方法,用于描述计算机网络中不同层次之间的通信协议。**OSI七层协议模型包括:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。**每一层都有其特定的功能和职责,它们之间通过接口进行通信 。七层协议模型过于复杂,实际中并不会有用到,俺就不过多赘述了~

image-20230826134215155

TCP/IP五层/四层协议模型【重点】

计算机网络中的五层协议模型是指TCP/IP五层模型,它是一种网络协议的分类方法,用于描述计算机网络中不同层次之间的通信协议。 TCP/IP五层模型包括:物理层、数据链路层、网络层、传输层、应用层,而四层协议模型只是少了一个物理层。 每一层都有其特定的功能和职责,它们之间通过接口进行通信 。

image-20230826134742912

同学们先看个故事,有助于理解五层协议的功能。

一天,我在tb买了一袋子的抹布,付款后,上海商家准备发货,把快递交给了sf快递公司,该公司准备把这个快递进行运输,运输的路线有:上海=》南京=》湖北 / 上海=》广州=》湖北,具体走哪条路线就是快递公司的事情了,这工作就好比是网络层;而我和商家只管下单接单,发货收货,不在乎这个快递是通过什么路径最终送我手上的,这个就好比是传输层;而在上海发往南京的途中,具体使用的工具是通过卡车还是飞机,这个工作就好比是数据链路层,负责两个相邻的节点进行传输。物理层就好比运输路上的基础设施,比如高速公路、铁路等。

物理层:规定了网络通信中所用到的硬件设备的规格 ,如:网线、LAN口、WAN口…

数据链路层:负责相邻两台设备之间的传输; 这里的相邻指的是:A和B设备都连接C路由,就属于相邻的两台设备。当然也不一定非要连接的是路由,也可以是网线或是其他的设备

网络层:负责规划数据传输的路径,比如:商家把快递发给买家,快递到底怎么到买家手上,这件事就归快递公司自己规划,网络层就类似于快递公司。

传输层:端口与端口之间的传输,不在乎传输过程;比如:商家把快递发给买家,买卖双方不关心快递在路上的过程,只在乎发快递和收快递。

应用层:与应用程序相关,表示 传输的数据,用户拿到这个数据怎么使用,比如:商家把快递(抹布)发给买家,买家收到货后,可以拿来擦地也可以擦桌子,也就是说数据的使用,属于应用层负责。

3. 封装&分用

数据封装:从上层协议往下层协议,层层封装

咱们假设使用QQ双方通信,比如俺发了一条消息为:hello。QQ这个应用程序就会把hello这个字符串构造成一个应用层数据报。

此处假设应用层协议的格式为:发送方QQ号+发送时间+接收方QQ号+发送的消息内容。

构造的应用层数据报:

image-20230826144355781

构造完成后,交给传输层(在系统内核里),传输层进行处理,构造成传输层的数据报, 传输层常用的协议有“UDP和TCP”,假设这里使用的是UDP,则会构造一个UDP数据报,里面包含的有源端口和目标端口等其他的数据,并拼接在应用层数据报的头部,构造完成后是这样的:

image-20230826144919510

之所以拼接报头,一是为了安全,二是为了表明消息要去哪,怎么传输,就好比发快递,要包一层快递盒,在盒子上贴上标签,标签上有收货人的信息,报头就好似一个标签。

传输层构造完成后,再交给网络层,网络层常用的协议有“IP协议”,于是网络层再打包一个IP协议报头,拼接到传输层报头前,IP报头里包含的有源IP和目的IP,构造完成后是这样的:

image-20230826145438833

网络层完成后,再交给数据链路层,此处使用的协议是“以太网协议”,根据已有的数据打包成一个“以太网数据帧”,在已有的数据报前后加上以太网帧头、帧尾。数据链路层构造完成后是这样的:

image-20230826150013627

最后数据链路层把数据交给物理层,物理层把上述的二进制数据转换给光信号/电信号,发送给另一台设备。经过上面的准备,此时才把数据真正的发送出去了。以上过程则称为“封装”。

数据分用:从下层协议往上层协议,层层解析

接收方,接收到我发送的数据后,进行对数据的解析~~~

物理层接收到发送来的光信号/电信号后,进行转换成以太网数据帧,于是又成了这个样子:

image-20230826151224450

再把这个数据交给数据链路层,链路层则会去掉帧头和帧尾,取出中间的载荷,以太网帧头里会记录这个载荷是不是一个IP协议。

数据链路层的解析:

image-20230826151921856

数据链路层把载荷交给网络层,再根据IP协议,解析IP报头,取出载荷(传输层的数据),根据IP报头解析出是TCP还是UDP协议。

网络层的解析:

image-20230826153438927

网络层把解析后的数据交给传输层进行解析,由于网络层根据IP报头里的内容解析出UDP协议,所以传输层根据UDP协议进行解析,取出报头,取出载荷(应用层数据),再把这个载荷交给应用层的程序。UDP报头里包含的有目的端口,根据这个目的端口就可以找到具体的一个应用程序,于是把最后的数据交给对应的应用程序。

传输层的解析:

image-20230826153509055

数据到达了应用层,QQ则会根据规定的应用层协议进行解析数据,最后构造,显示到界面上。

image-20230826154459518

)]

数据到达了应用层,QQ则会根据规定的应用层协议进行解析数据,最后构造,显示到界面上。

在这里插入图片描述

上述这些解析则叫做“分用”。

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

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

相关文章

分布式锁,使用方案

1、锁方案: 可以往数据库中插入一条数据,这条数据利用 唯一索引 使数据是唯一的。 能插入,就表示数据没有锁,可以正常执行 插入报错 ‘数据的唯一性’ ,则表示数据已经枷锁了,不能执行 执行完成后&#xff…

MySQL之脏读,不可重复读与幻读的概念及区别

MySQL是一款常用的关系型数据库,但在使用过程中,可能会遇到一些问题,比如脏读、不可重复读和幻读。这些问题可能会导致数据的不一致性,因此需要了解它们的概念及区别。 1. 脏读 首先是脏读。脏读是指在一个事务中读取了另一个事…

【高阶数据结构】AVL树 {概念及实现;节点的定义;插入并调整平衡因子;旋转操作:左单旋,右单旋,左右双旋,右左双旋;AVL树的验证及性能分析}

AVL树 一、AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明…

Vite学习笔记

前言: 在浏览器支持 ES 模块之前,JavaScript 并没有提供原生机制让开发者以模块化的方式进行开发。这也正是我们对 “打包” 这个概念熟悉的原因:使用工具抓取、处理并将我们的源码模块串联成可以在浏览器中运行的文件。 打包构建工具演变&a…

Java泛型机制

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:每天一个知识点 ✨特色专栏&#xff1a…

【UE 材质】模型部分透明

材质节点如下,这里简单解释一下。首先通过“Mask”节点将"Texture Coordinate" 节点中的“G”通道分离出来,然后通过“if”节点进行判断,当值小于0.5时为透明,当颜色不小于5时为不透明。可以通过一个参数来控制模型透明…

会不会激发对modern c++的新兴趣

可变参数好像很厉害的样子&#xff0c;会节省很多手写代码&#xff0c;让编译器自动帮我们生成代码 template<typename Fun, typename...Args> void invoke(Fun&& fun, Args&&...args) { fun(std::forward<Args>(args)...); } 任意函数包装器…

云计算的三个主要服务模型:IaaS、PaaS 和 SaaS

文章目录 介绍基础设施即服务&#xff08;Infrastructure as a Service&#xff0c;IaaS&#xff09;平台即服务&#xff08;Platform as a Service&#xff0c;PaaS&#xff09;软件即服务&#xff08;Software as a Service&#xff0c;SaaS&#xff09; 区别基础设施即服务&…

Java“牵手”天猫淘口令转换API接口数据,天猫API接口申请指南

天猫平台商品淘口令接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取天猫商品的标题、价格、库存、商品快递费用&#xff0c;宝贝ID&#xff0c;发货地&#xff0c;区域ID&#xff0c;快递费用&#xff0c;月销量、总销量、库存、详情描…

代码随想录第五十天|123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

123.买卖股票的最佳时机III 题目链接/文章讲解/视频讲解&#xff1a;代码随想录 1.代码展现 //123.买卖股票的最佳时机 int maxProfit(vector<int>& prices) {if (prices.size() 1) {return 0;}//step1 构建dp数组vector<vector<int>> dp(prices.size(…

etcd读写请求的执行过程

etcd读请求如何执行 首先&#xff0c;etcdctl 会对命令中的参数进行解析。在解析完请求中的参数后&#xff0c;etcdctl 会创建一个 clientv3 库对象通过gRPC API来访问 etcd server。对应流程一。 然后通过负载均衡算法选择一个etcd server节点&#xff0c;然后调用 etcd ser…

python基本数据类型 –元组

python中数据类型 第一类&#xff1a;不可变类型、静态数据类型、不支持增删改操作 数字&#xff08;number&#xff09; 字符串&#xff08;string&#xff09; 元组&#xff08;tuple&#xff09; 布尔类型(bool) 第二类&#xff1a;可变类型、动态数据类型、支持增删改操…

C++(11):生成随机字符串

C++(11):产生随机数_c++11 随机数_风静如云的博客-CSDN博客 介绍了如何生成随机数,可以基于随机数生成随机字符串: #include <cstring> #include <chrono> #include <random> #include <iostream>using namespace std;string getRandomStr(int str…

PyTorch檔案生成機制中的FileManager.write_with_template

PyTorch檔案生成機制中的FileManager.write_with_template 前言FileManager.write_with_template調用gen_pyigen_nn_functionalwrite_sharded FileManager.write_with_template實現torchgen/utils.pyFileManager.write_with_templateFileManager.substitute_with_template_read…

java八股文面试[多线程]——线程池拒绝策略

四种线程池拒绝策略&#xff08;handler&#xff09; 当线程池的线程数达到最大线程数时&#xff0c;需要执行拒绝策略。拒绝策略需要实现 RejectedExecutionHandler 接口&#xff0c;并实现 rejectedExecution(Runnable r, ThreadPoolExecutor executor) 方法。不过…

如何设计微服务

一、序幕 最近在思考&#xff0c;自己哪些不足&#xff0c;需要学习点什么&#xff1f;看着Java基础知识&#xff0c;千遍一律&#xff0c;没有太大的动力需深挖&#xff0c;只能在写业务项目的时候边写边思考边夯实自己的基础。于是看了网上的一些资料&#xff0c;结合以前面试…

J1元器件的功能与应用 | 百能云芯

在现代科技和电子领域中&#xff0c;元器件是构建各种电子设备的基石。其中&#xff0c;J1元器件作为一个备受关注的焦点&#xff0c;在电子工程师和科技爱好者中引发了浓厚的兴趣。百能云芯将带您深入了解J1元器件在电子世界中的作用。 J1元器件是一种通用的连接器&#xff0c…

【深度学习实验】NumPy的简单用法

目录 一、NumPy介绍 1. 官网 2. 官方教程 二、实验内容 1. 导入numpy库 2. 打印版本号 3. arange 函数 4. array函数 5. reshape函数 6. 矩阵点乘&#xff08;逐元素相乘&#xff09; 7. 矩阵乘法 一、NumPy介绍 NumPy是一个常用于科学计算的Python库&#xff0c;尤…

Ubuntu系统下配置 Qt Creator 输入中文、配置软件源的服务器地址、修改Ubuntu系统时间

上篇介绍了Ubuntu系统下搭建QtCreator开发环境。我们可以发现安装好的QtCreator不能输入中文&#xff0c;也没有中文输入法供选择&#xff0c;这里需要进行设置。 文章目录 1. 配置软件源的服务器地址2. 先配置Ubuntu系统语言&#xff0c;设置为中文3. 安装Fcitx插件&#xff…

初始化列表

文章目录 一. 初始化列表是什么&#xff1f;二. 为什么要有初始化列表&#xff1f;三. 初始化列表的特性四. explicit关键字五. statis成员六. 友元七. 内部类八. 匿名对象九. 编译器优化总结&#xff1a; 一. 初始化列表是什么&#xff1f; 初始化列表是构造函数真正初始化的地…