TCP/IP五层模型、封装和分用
- 1.网络通信基础
- 2.协议分层
- OSI七层协议模型
- TCP/IP五层/四层协议模型【重点】
- 3. 封装&分用
1.网络通信基础
IP地址:表示计算机的位置,分源IP和目标IP;举个例子:买快递,商家从上海发货,上海就是源IP,收货地址是湖北,湖北就是目标IP。
端口号:表示一个具体的应用程序,分源端口和目标端口,如:某个进程或服务的端口号是8080;还是买快递的例子,发货的商家,商家就是源端口号,收货的买家,买家就是目标端口号。
同学们都看过西游记⑧~唐僧每次介绍自己的时候,是这么说的:“贫僧自东土大唐而来,去西天拜佛求经”,这里的贫僧=源端口(我是谁)、东土大唐=源IP(从哪来)、佛祖=目标端口(要找谁)、西天=目标IP(到哪去)
协议:规定数据之间传输的方法/规则,就好比加密通话,说暗号,我不要碟盘了(我没事了),我对别人说:“我不要碟盘了”,对方收到后,通过之前约定的协议,对这句话进行解读,意思就是”我没事了“
2.协议分层
最原始的协议是一大类,复杂难懂,于是进行了分化,分成多种短小的协议,也就是分层,每层有各自代表的意义和作用,上层协议调用下层协议,下层协议服务上层协议,这样学习起来就有迹可循,变得简单易懂。
OSI七层协议模型
七层协议模型是指OSI(Open Systems Interconnection)七层协议模型,它是一种网络协议的分类方法,用于描述计算机网络中不同层次之间的通信协议。**OSI七层协议模型包括:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。**每一层都有其特定的功能和职责,它们之间通过接口进行通信 。七层协议模型过于复杂,实际中并不会有用到,俺就不过多赘述了~

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

同学们先看个故事,有助于理解五层协议的功能。
一天,我在tb买了一袋子的抹布,付款后,上海商家准备发货,把快递交给了sf快递公司,该公司准备把这个快递进行运输,运输的路线有:上海=》南京=》湖北 / 上海=》广州=》湖北,具体走哪条路线就是快递公司的事情了,这工作就好比是网络层;而我和商家只管下单接单,发货收货,不在乎这个快递是通过什么路径最终送我手上的,这个就好比是传输层;而在上海发往南京的途中,具体使用的工具是通过卡车还是飞机,这个工作就好比是数据链路层,负责两个相邻的节点进行传输。物理层就好比运输路上的基础设施,比如高速公路、铁路等。
物理层:规定了网络通信中所用到的硬件设备的规格 ,如:网线、LAN口、WAN口…
数据链路层:负责相邻两台设备之间的传输; 这里的相邻指的是:A和B设备都连接C路由,就属于相邻的两台设备。当然也不一定非要连接的是路由,也可以是网线或是其他的设备
网络层:负责规划数据传输的路径,比如:商家把快递发给买家,快递到底怎么到买家手上,这件事就归快递公司自己规划,网络层就类似于快递公司。
传输层:端口与端口之间的传输,不在乎传输过程;比如:商家把快递发给买家,买卖双方不关心快递在路上的过程,只在乎发快递和收快递。
应用层:与应用程序相关,表示 传输的数据,用户拿到这个数据怎么使用,比如:商家把快递(抹布)发给买家,买家收到货后,可以拿来擦地也可以擦桌子,也就是说数据的使用,属于应用层负责。
3. 封装&分用
数据封装:从上层协议往下层协议,层层封装
咱们假设使用QQ双方通信,比如俺发了一条消息为:hello。QQ这个应用程序就会把hello这个字符串构造成一个应用层数据报。
此处假设应用层协议的格式为:发送方QQ号+发送时间+接收方QQ号+发送的消息内容。
构造的应用层数据报:

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

之所以拼接报头,一是为了安全,二是为了表明消息要去哪,怎么传输,就好比发快递,要包一层快递盒,在盒子上贴上标签,标签上有收货人的信息,报头就好似一个标签。
传输层构造完成后,再交给网络层,网络层常用的协议有“IP协议”,于是网络层再打包一个IP协议报头,拼接到传输层报头前,IP报头里包含的有源IP和目的IP,构造完成后是这样的:

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

最后数据链路层把数据交给物理层,物理层把上述的二进制数据转换给光信号/电信号,发送给另一台设备。经过上面的准备,此时才把数据真正的发送出去了。以上过程则称为“封装”。
数据分用:从下层协议往上层协议,层层解析
接收方,接收到我发送的数据后,进行对数据的解析~~~
物理层接收到发送来的光信号/电信号后,进行转换成以太网数据帧,于是又成了这个样子:

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

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

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

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

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

上述这些解析则叫做“分用”。
相关文章:
TCP/IP五层模型、封装和分用
1.网络通信基础2.协议分层OSI七层协议模型TCP/IP五层/四层协议模型【重点】 3. 封装&分用 1.网络通信基础 IP地址:表示计算机的位置,分源IP和目标IP;举个例子:买快递,商家从上海发货,上海就是源IP&…...
LeetCode 面试题 01.08. 零矩阵
文章目录 一、题目二、C# 题解 一、题目 编写一种算法,若M N矩阵中某个元素为0,则将其所在的行与列清零。 点击此处跳转题目。 示例 1: 输入: [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [ [1,0,1], [0,0,0], [1,0,1] ] 示…...
Qt应用开发(基础篇)——进度条 QProgressBar
一、前言 QProgressBar类继承于QWidget,是一个提供了横向或者纵向进度条的小部件。 QProgressBar进度条一般用来显示用户某操作的进度,比如烧录、导入、导出、下发、上传、加载等这些需要耗时和分包的概念,让用户知道程序还在正常的执行中。 …...
108页石油石化5G智慧炼化厂整体方案PPT
导读:原文《108页石油石化5G智慧炼化厂整体方案PPT》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。以下是部分内容,...
Codeforces 1625E2 括号树 + BIT
题意 传送门 Codeforces 1625E2 Cats on the Upgrade (hard version) 题解 首先利用栈将原始字符串转换为合法的 RBS,不能匹配的括号设为 ‘.’。根据匹配的括号序列构造树,具体而言,遇到左括号,则新建节点向下递归,…...
PHP命令行CLI的使用
PHP命令行界面 PHP命令行界面(CLI)是一种使用命令行(终端)来运行PHP脚本的方式,与在Web服务器环境下运行PHP不同。CLI提供了一种与操作系统交互的方式,能够在命令行中直接执行PHP代码。 以下是一些与PHP命…...
近期嵌软线下笔试题记录
1、以下代码的输出结果是? #include <stdio.h> #include <string.h>int main() {int a,b,c,d;a 10;b a; //a先赋值给b,然后自增1c a; //a自增1后赋值给cd 10*a; //先进行运算然后a自增1printf("b,c,d:%d…...
基于MYSQL的主从同步和读写分离
目录 一.完成MySQL主从同步(一主两从) 1.主库配置 2.建立同步账号 3.锁表设置只读 4.备份数据库数据 5.主库备份数据上传到从库 6.从库上还原备份 7.解锁 8.从库上设定主从同步 9.启动从库同步开关 10.检查状态 二.基于MySQL一主两从配置&…...
java八股文面试[多线程]——合适的线程数是多少
知识来源: 【并发与线程】 合适的线程数量是多少?CPU 核心数和线程数的关系?_哔哩哔哩_bilibili 【2023年面试】程序开多少线程合适_哔哩哔哩_bilibili...
Linux系统下vim常用命令
一、基础命令: v:可视模式 i:插入模式 esc:命令模式下 :q :退出 :wq :保存并退出 ZZ:保存并退出 :q! :不保存并强制退出二、在Esc下: dd : 删除当前行 yy:复制当前行 p:复制已粘贴的文本 u:撤销上一步 U:…...
【2023】LeetCode HOT 100——链表
目录 1. 相交链表1.1 C++实现1.2 Python实现1.3 时空分析2. 反转链表2.1 C++实现2.2 Python实现2.3 时空分析3. 回文链表3.1 C++实现3.2 Python实现3.3 时空分析4. 环形链表4.1 C++实现4.2 Python实现4.3 时空分析5. 环形链表 II5.1 C++实现5.2 Python实现...
智能井盖传感器,物联网智能井盖系统
随着城市人口的不断增加和城市化进程的不断推进,城市基础设施的安全和可靠性变得愈发重要,城市窨井盖作为城市基础设施重要组成部分之一,其安全性事关城市安全有序运行和居民生产生活安全保障。 近年来,各地都在加强城市窨井盖治理…...
C语言三子棋解析
目录(标2的是我自己写的一堆问题不知道怎么改) 开始菜单1打印棋盘1玩家下棋1电脑下棋1判断输赢1开始菜单2打印棋盘2选择先后2玩家下棋2电脑下棋2判断输赢2完整代码文件else.h文件else.c文件test.c 开始菜单1 void menu()//打印菜单 {printf("*****…...
【Jenkins打包服务,Dockerfile报错:manifest for java : 8 not fourd】
1、问题描述 Jenkins打包服务运行dockerfile里的FROM java:8报错manifest for java : 8 not fourd Caused by: com.spotify. docker.client.exceptions.DockerException: manifest for java:8 not found2、解决方法 在网上查找许多方法后得出这是由于Docker官方已经弃用java…...
读SQL学习指南(第3版)笔记06_连接和集合
1. 连接 1.1. 笛卡儿积 1.1.1. 交叉连接(cross join) 1.1.2. 查询并没有指定两个数据表应该如何连接,数据库服务器就生成了笛卡儿积 1.1.2.1. 两个数据表的所有排列组合 1.1.3. 很少会用到(至少不会特意用到) 1.…...
C#学习,结构,面向对象,类
结构和类 结构是从过程化程序设计中保留下来的一种数据类型,类则是面向对象程序设计中最基本的、也是最重要的概念。 结构 结构是一种值类型,通常用来封装一组相关的变量,结构中可以包含构造函数、变量、字段、方法、属性、运算符、事件和…...
【PHP】文件操作
文章目录 文件编程的必要性目录操作其它目录操作递归遍历目录PHP5常见文件操作函数PHP4常见文件操作函数其他文件操作函数 文件编程的必要性 文件编程指利用PHP代码针对文件(文件夹)进行增删改查操作。 在实际开发项目中,会有很多内容&…...
科创板50ETF期权交易:详细规则、费用、保证金和开户攻略
科创板50ETF期权是指以科创板50ETF为标的资产的期权合约。科创板50ETF是由交易所推出的一种交易型开放式指数基金(ETF),旨在跟踪科创板50指数的表现,下文介绍科创板50ETF期权交易:详细规则、费用、保证金和开户攻略&am…...
怎么把图片放大并且清晰?有详细的方法步骤
怎么把图片放大并且清晰?数字图像处理中的图片放大是许多行业和领域中广泛应用的一项技术。常规的放大方法通过插值或复制像素的方式增加像素数,但这会导致失真和模糊。无损放大是一种特殊的放大方法,它可以通过数学算法来增加图片的尺寸&…...
C++ 构造函数、析构函数调用虚函数
C虚函数是通过虚表实现的,虚函数的地址记录在需表中,只对象完成构造完成后,虚函数的地址才最终确定。 构造函数中调用虚函数 基类先于派生类构造,所以构造时没法调用到派生类的虚函数,也就是说只能调用到自己&#x…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
Netty从入门到进阶(二)
二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架,用于…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
