2024.12.14 TCP/IP 网络模型有哪几层?

2024.12.14 TCP/IP 网络模型有哪几层?

2024.12.14 今天周六 看到大伙都在考六级,我来复盘小林coding的计算机网络的知识点:

TCP/IP 网络模型有哪几层?

问大家,为什么要有 TCP/IP 网络模型?

对于同一台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备,就协商出了一套通用的网络协议

这个网络协议是分层的,每一层都有各自的作用和职责,接下来就根据「TCP/IP 网络模型」分别对每一层进行介绍。

1… 应用层

最上层的,也是我们能直接接触到的就是应用层(Application Layer),我们电脑或手机使用的应用软件都是在应用层实现。那么,当两个不同设备的应用需要通信的时候,应用就把应用数据传给下一层,也就是传输层。

所以,应用层只需要专注于为用户提供应用功能,比如 HTTP、FTP、Telnet、DNS、SMTP等。

应用层是不用去关心数据是如何传输的,就类似于,我们寄快递的时候,只需要把包裹交给快递员,由他负责运输快递,我们不需要关心快递是如何被运输的。

而且应用层是工作在操作系统中的用户态传输层及以下则工作在内核态

2… 传输层

传输层为应用层提供网络支持的。

TCP 的全称叫传输控制协议(Transmission Control Protocol),大部分应用使用的正是 TCP 传输层协议比如 HTTP 应用层协议。TCP 相比 UDP 多了很多特性,比如流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对方

UDP 相对来说就很简单,简单到只负责发送数据包,不保证数据包是否能抵达对方,但它实时性相对更好传输效率也高。当然,UDP 也可以实现可靠传输,把TCP的特性在应用层上实现就可以,不过要实现一个商用的可靠 UDP 传输协议,也不是一件简单的事情。

应用需要传输的数据可能会非常大,如果直接传输就不好控制,因此当传输层的数据包大小超过 MSS(TCP最大报文段长度),就要将数据包分块,这样即使中途有一个分块丢失或损坏了,只需要重新发送这一个分块,而不用重新发送整个数据包。在 TCP 协议中,我们把每个分块称为一个TCP 段(TCPSegment)。
在这里插入图片描述

当设备作为接收方时,传输层则要负责把数据包传给应用,但是一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口。

比如 80 端口通常是 Web 服务器用的,22 端口通常是远程登录服务器用的。而对于浏览器(客户端)中的每个标签栏都是一个独立的进程,操作系统会为这些进程分配临时的端口号

由于传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应用。

3…网络层

传输层可能大家刚接触的时候,会认为它负责将数据从一个设备传输到另一个设备,事实上它并不负责。

实际场景中的网络环节是错综复杂的,中间有各种各样的线路和分叉路口,如果一个设备的数据要传输给另一个设备,就需要在各种各样的路径和节点进行选择,而传输层的设计理念是简单、高效、专注,如果传输层还负责这一块功能就有点违背设计原则了。

也就是说,我们不希望传输层协议处理太多的事情只需要服务好应用即可,让其作为应用间数据传输的媒介,帮助实现应用到应用的通信,而实际的传输功能就交给下一层,也就是网络层(interet Layer)。
在这里插入图片描述

网络层最常使用的是IP 协议(intermet Protocol),IP 协议会将传输层的报文作为数据部分,再加上 IP 包头组装成 IP 报文,如果 IP 报文大小超过 MTU (以太网中一般为 1500 字节) 就会再次进行分片,得到一个即将发送到网络的 IP 报文。
在这里插入图片描述

网络层负责将数据从一个设备传输到另一个设备,世界上那么多设备,又该如何找到对方呢?因此,网络层需要有区分设备的编号

我们一般用 IP 地址给设备进行编号,对于 IPv4 协议,IP 地址共 32 位,分成了四段 (比如,192.168.100.1),每段是8位。只有一个单纯的IP 地址虽然做到了区分设备,但是寻址起来就特别麻烦,全世界那么多台设备,难道一个一个去匹配?这显然不科学。

因此,需要将 IP 地址分成两种意义:

一个是网络号:负责标识该 IP 地址是属于哪个「子网」的
一个是主机号:负责标识同一「子网」下的不同主机

怎么分的呢?这需要配合子网掩码才能算出 IP 地址 的网络号和主机号。

举个例子,比如 10.100.122.0/24,后面的 /24 表示就是 255.255.255.0 子网掩码,255.255.255.0 二进制是 「11111111-11111111-11111111-00000000」,大家数数一共多少个1? 不用数了,是 24 个1,为了简化子网掩码的表示,用 /24 代替 255.255.255.0。
知道了子网掩码,该怎么计算出网络地址主机地址呢 ?

将 10.100.122.2和 255.255.255.0 进行按位与运算,就可以得到网络号,如下图:

在这里插入图片描述

将 255.255.255.0 取反后与 IP地址 进行进行按位与运算,就可以得到主机号

大家可以去搜索下子网掩码计算器,自己改变下「掩码位」的数值,就能体会到子网掩码的作用了。

那么在寻址的过程中,先匹配到相同的网络号(表示要找到同一个子网),才会去找对应的主机。

除了寻址能力, IP 协议还有另一个重要的能力就是路由。实际场景中,两台设备并不是用一条网线连接起来的,而是通过很多网关、路由器、交换机等众多网络设备连接起来的,那么就会形成很多条网络的路径,因此当数据包到达一个网络节点,就需要通过路由算法决定下一步走哪条路径。

路由器寻址工作中,就是要找到目标地址的子网,找到后进而把数据包转发给对应的网络内。
在这里插入图片描述

所以,IP协议的寻址作用是告诉我们去往下一个目的地该朝哪个方向走,路由则是根据「下一个目的地选择路径。寻址更像在导航,路由更像在操作方向盘

4…网络接口层

这一层明天再学啦!

总结

对于不同设备上的进程间通信,就需要网络通信,而设备是多样性的,所以要兼容多种多样的设备,就协商出了一套通用的网络协议

这个网络协议是分层的,每一层都有各自的作用和职责

我们今天学习的是第一个应用层,我们电脑或手机使用的应用软件都是在应用层实现。那么,当两个不同设备的应用需要通信的时候,应用就把应用数据传给下一层,也就是第二个知识点传输层。 传输层为应用层提供网络支持, 保证数据包能可靠地传输给对方,当设备作为接收方时,传输层则要负责把数据包传给应用,但是一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口。传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应用。

接下来我们学习第三个网络层,传输层的设计理念是简单、高效、专注,因此我们不希望传输层协议处理太多的事情,只需要服务好应用

作为应用间数据传输的媒介。但是实际场景中的网络环节是错综复杂的,中间有各种各样的线路和分叉路口,所以实际的传输功能就交给下一层,也就是网络层。网络层最常使用的是IP 协议,我们一般用 IP 地址给设备进行编号。IP 地址分成两种意义。一个是网络号,一个是主机号。 IP 协议还有另一个重要的能力就是路由。根据IP地址,先找到IP号,再找到主机号,这样就可以找到设备了。

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

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

相关文章

【学习笔记总结】华为云:应用上云后的安全规划及设计

一、背景和问题 数字化时代,随着信息技术的飞速发展,企业和各类组织纷纷将自身的应用程序迁移至云端。云计算凭借其诸多优势,如成本效益、可扩展性、灵活性以及便捷的资源共享等,已然成为了现代业务运营的重要支撑。 今年&#xf…

MySQL--》如何通过选择合适的存储引擎提高查询效率?

目录 MySQL体系结构 存储引擎简介 存储引擎特点 存储引擎选择 MySQL体系结构 体系结构:可以看作是由多个模块和组件组成的一个系统,每个部分都承担着不同的职责,从客户端到存储引擎每一层都精心设计来提供高效、可靠的数据库服务&#xf…

【机器学习与数据挖掘实战】案例02:基于K-Means算法的航空公司客户价值分析

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈机器学习与数据挖掘实战 ⌋ ⌋ ⌋ 机器学习是人工智能的一个分支,专注于让计算机系统通过数据学习和改进。它利用统计和计算方法,使模型能够从数据中自动提取特征并做出预测或决策。数据挖掘则是从大型数…

JPG 转 PDF:免费好用的在线图片转 PDF 工具

JPG 转 PDF:免费好用的在线图片转 PDF 工具 在日常工作和生活中,我们经常需要将图片转换为 PDF 格式。无论是制作电子文档、准备演示材料,还是整理照片集,将图片转换为 PDF 都是一个常见的需求。今天为大家介绍一款完全免费、无需…

STM32F103单片机HAL库串口通信卡死问题解决方法

在上篇文章 STM32F103单片机使用STM32CubeMX创建IAR串口工程 中分享了使用cubeMX直接生成串口代码的方法,在测试的过程中无意间发现,串口会出现卡死的问题。 当串口一次性发送十几个数据的时候,串口感觉像卡死了一样,不再接收数据…

Linux 中 sftp 命令基本使用

参考链接 sftp 命令_sftp命令-CSDN博客 登录服务器【必须】 # sftp userNamehost # 例如 sftp root8.138.86.224 上传文件到服务器 使用 sftp 命令可以将本地文件上传到远程主机 # put local_file remote_file # 例如: put E://1.mp4 /root/1.mp4 下载文件 使…

采用qL-MPC技术进行小型固定翼无人机的路径跟随控制

来自论文"Predictive Path-Following Control for Fixed-Wing UAVs Using the qLMPC Framework in the Presence of Wind Disturbances" 控制架构 采用的是 ULTRA-Extra无人机,相关参数如下: 这里用于guidance law的无人机运动学模型为&#…

跟着AI 学 AI, 开发一个ChatBot, 集成 Json 数据和查询

按照规律,使用AI生成一个架构图 直接上代码,为了方便学习,直接按照如下方式,复制到你的开发环境即可调试,运行代码。做学习参考。 代码注释多次说明这里,不在赘述。 "type": "carousel&qu…

校园交友app/校园资源共享小程序/校园圈子集合二手物品交易论坛、交友等综合型生活服务社交论坛

多客校园社交圈子系统搭建 校园交友多功能系统源码: 1、更改学校为独立的模块。整体UI改为绿色,青春色,更贴近校园风格。2、圈子归纳到学校去进行运营。每个学校可建立多个圈子。和其他学校圈子互不干扰。3、增加用户绑定学校,以后进入将默认…

游戏引擎学习第50天

仓库: https://gitee.com/mrxiao_com/2d_game Minkowski 这个算法有点懵逼 回顾 基本上,现在我们所处的阶段是,回顾最初的代码,我们正在讨论我们希望在引擎中实现的所有功能。我们正在做的版本是初步的、粗略的版本,涵盖我们认…

多模态-故障诊断 | 大核卷积开启视觉新纪元!

往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 基于FFT CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客 基于FFT CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客 P…

30. Three.js案例-绘制并渲染圆弧

30. Three.js案例-绘制并渲染圆弧 实现效果 知识点 WebGLRenderer WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它利用 WebGL 技术在浏览器中渲染 3D 图形。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选参数对象&#xff…

【从零开始入门unity游戏开发之——C#篇03】变量和常量

文章目录 一、变量1、什么是变量?2、申明变量的固定写法3、变量的类型值和引用类型的区别无符号和有符号位——表示变量所占用的内存空间的大小范围——表示变量的取值范围取值范围和存储单位的关系为什么byte的范围是 0 到 255?为什么 sbyte 的范围是 -…

无人机推流直播平台EasyDSS视频技术如何助力冬季森林防火

冬季天干物燥,大风天气频繁,是森林火灾的高发期。相比传统的人力巡查,无人机具有更高的灵敏度和准确性,尤其在夜间或浓雾天气中,依然能有效地监测潜在火源。 无人机可以提供高空视角和实时图像传输,帮助巡…

Jenkins参数化构建详解(This project is parameterized)

本文详细介绍了Jenkins中不同类型的参数化构建方法,包括字符串、选项、多行文本、布尔值和git分支参数的配置,以及如何使用ActiveChoiceParameter实现动态获取参数选项。通过示例展示了传统方法和声明式pipeline的语法 文章目录 1. Jenkins的参数化构建1…

卓易通:鸿蒙Next系统的蜜糖还是毒药?

哈喽,我是老刘 最近很多人都在问鸿蒙next系统新上线的卓易通和出境易两款应用。 老刘分析了一下这个软件的一些细节,觉得还是蛮有意思的,我觉得可以从使用体验、底层原理和对鸿蒙生态的影响这三个角度来分析一下。 使用体验 性能 看到了一些测…

规则引擎drools(一)-技术要点

本文是规则引擎的第一篇,首先介绍规则引擎的技术要点,系列后续文章以本文为大纲,详细分析各个技术要点 1. 事实 事实是规则的依据,来源于业务,或是业务实体,或是多个业务实体的汇集; 2. 项目 描…

HarmonyOS学习 --- Mac电脑获取手机UDID

一,手机打开开发者选项 1,打开“设置 > 关于本机”,连续点击7次版本号,打开开发者选项。 2,打开“USB调试”。 二,配置环境变量 获取OpenHarmony SDK 安装路径 /Users/admin/Library/OpenHarmony/Sdk/10…

从 Router 到 Navigation:HarmonyOS 路由框架的全面升级与迁移指南

在本教程中,我们深入探讨了 Router 和 Navigation 在 HarmonyOS 中的用法差异及如何从 Router 切换到 Navigation 的方法。重点涵盖了页面跳转、转场动画、生命周期管理以及跨包路由的实现。 页面结构对比 Router 页面结构 每个页面需要使用 Entry 注解。 页面需要…

项目二十三:电阻测量(需要简单的外围检测电路,将电阻转换为电压)测量100,1k,4.7k,10k,20k的电阻阻值,由数码管显示。要求测试误差 <10%

资料查找: 01 方案选择 使用单片机测量电阻有多种方法,以下是一些常见的方法及其原理: 串联分压法(ADC) 原理:根据串联电路的分压原理,通过测量已知电阻和待测电阻上的电压,计算出…