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

相关文章

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Linux配置IP地址的三种实现方式

《Linux配置IP地址的三种实现方式》:本文主要介绍Linux配置IP地址的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录环境RedHat9第一种安装 直接配置网卡文件第二种方式 nmcli(Networkmanager command-line

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo