THM学习笔记——OSI模型和TCP/IP模型

2024-01-26 08:44
文章标签 ip 学习 笔记 模型 tcp osi thm

本文主要是介绍THM学习笔记——OSI模型和TCP/IP模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

全是文字

比较枯燥

建议视频

OSI模型由七个层次组成:

第7层 -- 应用层:

OSI模型的应用层主要为在计算机上运行的程序提供网络选项。它几乎专门与应用程序一起工作,为它们提供一个界面以用于传输数据。当数据传递到应用层时,它会被传递到表示层。

第6层 -- 表示层:

表示层从应用层接收数据。这些数据通常以应用程序理解的格式呈现,但不一定是接收计算机中应用层能够理解的标准化格式。表示层将数据转换为标准化格式,并处理数据的任何加密、压缩或其他转换。完成这些步骤后,数据传递到会话层。

第5层 -- 会话层:

当会话层从表示层接收到正确格式的数据时,它会尝试与网络中的另一台计算机建立连接。如果无法建立连接,则发送错误消息,过程就此中止。如果可以建立会话,则会话层的任务是维护连接,并与远程计算机的会话层合作,以同步通信。会话层特别重要,因为它创建的会话是与相关通信唯一对应的。这就允许你同时向不同端点发出多个请求,而无需混淆所有数据,当会话层成功记录主机和远程计算机之间的连接后,数据传递到第4层:传输层。

第4层 -- 传输层:

它的第一个目的是选择要传输数据的协议。传输层中最常见的两种协议是TCP和UDP;使用TCP时,传输是基于连接的,这意味着建立并保持了计算机之间的连接,以便在请求的整个过程中进行通信。这允许可靠的传输,因为连接可用于确保所有数据都到达正确的位置。TCP连接使两台计算机能够保持持续通信,以确保数据以可接受的速度发送,并重新发送任何丢失的数据。与之相反,使用UDP时情况正好相反;数据包基本上被抛给接收计算机 -- 如果它跟不上,那就是它的问题。这意味着TCP通常会用于对准确性更看重的情况(例如文件传输或加载网页),而UDP则用于更看重速度的情况(例如视频流)。

选择了协议后,传输层将传输分解成一小块一小块的部分(在TCP中称为段,在UDP中称为数据报),这使得成功传输消息变得更容易。

第3层 -- 网络层:

网络层负责找到请求的目标。例如,互联网是一个庞大的网络;当你要从网页请求信息时,网络层会获取页面的IP地址并找到最佳路由。在这个阶段,我们使用的是所谓的逻辑寻址(即IP地址),这仍然受软件控制。逻辑地址用于为网络提供顺序,对其进行分类并允许我们正确地对其进行排序。目前最常见的逻辑寻址形式是IPV4格式。

第2层 -- 数据链路层:

数据链路层关注传输的物理寻址。它从网络层接收一个包(其中包含远程计算机的IP地址)并添加接收端的物理(MAC)地址。每台启用网络的计算机内都有一张网卡(NIC),带有用于标识它的唯一MAC地址。

MAC地址由制造商设置,并被烧录到卡中;它们无法更改,尽管可以伪造。当信息通过网络发送时,实际上是物理地址用于标识从何处发送信息。

此外,数据链路层的任务还包括以适合传输的格式呈现数据。

当数据链路层接收数据时,它还扮演着重要的角色,因为它检查接收到的信息,以确保在传输过程中未损坏,而这在数据被传输的第1层:物理层时可能发生。

第1层 -- 物理层:

物理层涉及到计算机的硬件。这是数据在网络上传输时发送和接收的电脉冲所在的地方。物理层的任务是将传输的二进制数据转换为信号并将其传输到网络,以及接收传入信号并将其转换回二进制数据。

随着数据在模型的每一层传递下去,都会添加有关特定层的细节的信息到传输的起始位置。例如,网络层添加的标头将包括源和目标IP地址,传输层添加的标头将包括有关所选协议的信息。数据链路层在传输结束时还添加了一段用于验证传输时数据未被损坏;这也具有增加安全性的附加优势,因为数据无法在不破坏封套的情况下被拦截和篡改。整个过程被称为封装;这是从一台计算机发送数据到另一台计算机的过程。

请注意,在整个过程中,封装的数据在不同步骤中被赋予不同的名称。在第7、6和5层,数据简称为数据。在传输层,封装的数据称为段或数据报(取决于选择了TCP还是UDP作为传输协议)。在网络层,数据称为数据包。当数据包传递到数据链路层时,它变成了帧,到达网络时,帧已经被分解为位。

当消息被第二台计算机接收时,它会反转这个过程 -- 从物理层开始工作,直到达到应用层为止,并在过程中剥离附加的信息。这被称为*去封装*。因此,可以将OSI模型的各个层视为每台具有网络功能的计算机内的存在。虽然实际上并非如此清晰,但所有计算机都遵循相同的封装过程以发送数据,并在接收时进行去封装。

TCP/IP模型在许多方面与OSI模型非常相似。它比OSI模型早几年,并且是实际网络的基础。TCP/IP模型包括四个层次:应用、传输、互联网和网络接口。它们共同涵盖了OSI模型的七个层次的相同功能范围。

这两个模型大致如下匹配:

封装和去封装的过程在TCP/IP模型中与OSI模型完全相同。在TCP/IP模型的每一层,都会在封装期间添加标头,并在去封装期间删除标头。

分层模型作为一种视觉辅助工具非常好用 -- 它向我们展示了数据如何封装并通过网络发送的一般过程,但它实际上是如何发生的呢?

当我们谈论TCP/IP时,考虑到一个具有四个层次的表格是很好的 -- 它向我们展示了一个协议套件 -- 定义了如何执行某项操作的一组规则。TCP/IP的名称来自于其中两个最重要的协议:传输控制协议控制两个端点之间数据流的协议,以及互联网协议,它控制如何寻址和发送数据包。

如前所述,TCP是一种基于连接的协议。换句话说,在通过TCP发送任何数据之前,必须首先在两台计算机之间形成一个稳定的连接。形成这种连接的过程被称为三次握手。

当您尝试建立连接时,您的计算机首先向远程服务器发送一个特殊请求,指示它想要初始化一个连接。此请求包含一种称为SYN的位,它在启动连接过程中实质上是首次接触。服务器然后会用包含SYN位以及另一个称为ACK的“确认”位的数据包响应。最后,您的计算机将发送一个仅包含ACK位的数据包,确认连接已成功建立。通过成功完成三次握手,可以在两台计算机之间可靠地传输数据。任何在传输过程中丢失或损坏的数据都会被重新发送,从而导致看起来无损失的连接。

这篇关于THM学习笔记——OSI模型和TCP/IP模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/646234

相关文章

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结