Linux网络:网络基础

Linux网络:网络基础

文章目录

  • 序:在上一章中,我们了解了网络的发展以及协议的概念,本篇博客我们将深入了解协议分层以及网络与系统的关系来加深对网络的理解,同时也了解网络传输的基本流程

1. 协议分层

问题一:为什么一般的软件要分层?

1.层与层之间的耦合度是降低的,更重要的是一但分层,就相当于一个非常大的项目被肢解成了多个子项目,这样的话,在后期的维护上成本会非常低,所以第一点就是为了方便维护
2.凡是划分到同一层的内部,其中的代码和逻辑必须是强相关的—高内聚(层内部),低耦合(层与层之间)
3.问题是层状的!!!为了解决相应的问题,所以设计的时候也是按分层来设计的
在现实生活中,我们打电话给别人,看似是人与人之间直接进行交流,但是在实际上,是我们载荷电话沟通,然后电话将信息传输到另一台电话上,然后才让别人给听到,但是在逻辑上,人与人是在同一层的,所以我们会认为是人与人在沟通,同层内部高内聚,层与层之间低耦合。
这样的好处就在于,某一层出问题,只需要处理某一层的问题就行了,其它层不用变,即使某一层的协议发生了变化,比如,如图的第一层的语言变成了英语协议,但是其下面的电话协议根本不用变,也无法被影响,依然能够正常交流,同理如果其电话机协议变成了无线电协议,其上层的汉语协议也无需变化,只需要处理无线电这一层的协议就行!!!
1.1 OSI七层模型
在这里插入图片描述
OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;
把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
但是, 它既复杂又不实用; 所以我们按照TCP/IP四层模型来讲解.
1.2 TCP/IP五层(或四层)模型
在这里插入图片描述
TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.
物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层

2. 操作系统与网络技术栈

问题一:网络协议栈和我们之前学的操作系统有什么关系?


数据链路层是软件,是在各种软件内部驱动实现的,其中的传输层和网络层是要在Linux内核中实现的
在我们日常的生活中,我们也会刷视频来获取信息,这些信息是怎么来的?就是通过物理层中的网卡获取的!!!所以网络通信的本质也是在访问硬件!!!
如果用户想要获取到视频资源,就需要去访问硬件,但是用户并没有资格去直接访问硬件,因为操作系统是硬件的管理者,操作系统不允许用户来访问底层硬件,操作系统并不信任用户,所以用户想要访问到硬件资源就必须要贯穿操作系统!!!用户层、传输层、网络层、数据链路层和物理层,从上往下,依次贯穿!!!
网络通信的本质:就是贯穿协议栈的过程
此时问题又来了,如果用户层要访问硬件资源,不能直接访问,要依次贯穿网络技术栈,但是操作系统可能让用户去访问、去贯穿网络技术栈吗?这显然不可能,那用户又是如何获取到硬件资源的呢?— ==系统调用接口!!!==通过系统调用接口,用户就可以获取到硬件资源,既然用户无法直接获取,但能让操作系统去获取,并给用户层提供一个接口,让用户层能拿到硬件资源。所以就有了利用系统调用来写出各种协议来供用户层使用!!!
在这里插入图片描述
大部分操作系统的内容和系统调用接口都是不一样的,但是网络协议栈是一样的!!!这是因为想要用使用网络,就必须按照网络制定的协议栈,又因为网络通信是要贯穿网络协议栈的(向上贯穿或者向下贯穿),主机1有用户层,主机2也一定会有用户层,同理任意两台主机的网络协议栈一定是是一样的!!!所以同层协议在逻辑上,就是在和对方的同层直接沟通!!!

3.网络传输基本流程

网络协议栈的层状结构中,由于每一层都有协议,所以每一层都要添加报头(报文 == 报头 + 有效载荷),才会将信息送到下一层。
数据的自顶向下的封装的过程:
1. 应用层定的协议,要在发送的信息前加一个报头(里面会有版本信息…),消息往下传递给传输层。(将要传输的内容叫做有效载荷)
2. 传输层定的协议,再加入一个报头(里面会有信息的序号、源端口号和目的端口号…),消息往下传递给网络层。
3. 网络层定的协议,再加入一个报头(里面会有该信息是谁发的(主机),要发生到哪里(主机)…),消息再往下传递给链路层。
4. 链路层定的协议,再加入一个报头(里面的信息是从哪里发的(网卡),发送给谁的(网卡)…)
在这里插入图片描述
接着,报文就会交给网卡,网卡就会通过以太网,将报文发送给对方的主机的网卡上

问题一:为什么远端机器拿到这个数据(报文)的时候一定是网卡先拿到数据?

那是因为计算机里面只有一个网络通信的设备就叫做网卡!网卡拿到这个数据(报文)后,肯定要将数据交给操作系统,从硬件外设交到内存里。

问题二:为什么网卡拿到数据后一定要将数据(报文)从硬件设备交到内存里?

因为这是冯诺依曼体系规定!冯诺依曼体系规定网卡中的数据一定要从硬件设备交给内存里面
当对方拿到报头后,是有办法区分报头和有效载荷的,这时候,只需要将报头取出来,就可以将剩下的有效载荷送给上层,同理,由于同层协议既然能给有效载荷添加报头,所以也能获取报头,每一层拿到报文后,都会将报头和有效载荷分离开来,层层传递,直到到了用户层,将信息传递成功。
通信的过程:本质就是在不断的封装和解包的过程!
除了上述的知识,不同层其实不止一种协议,从上往下其实可以看成是一个倒着的多叉树结构,每一层的协议都要考虑到底是传输给上层的哪种协议
封装和解包中的问题(大部分协议的共性,未来学习具体协议的时候,都是这两个问题!!!)
1. 几乎任何层的协议,都要提供一种能力,将报头和有效载荷分离的能力
2. 几乎任何层的协议,都要在报头中提供,决定将自己的有效载荷交付给上层的哪一个协议
只有知道了两个问题,再面对封装和解包的问题就不会困惑,因为这就是大部分协议的共性

总结:

本文浅谈了OSI七层网络模型和TCP/IP网络模型,主要对操作系统与网络技术栈的关系进行的探讨,并且对网络传输的基本流程进行了深刻的讲解

Read more

基于腾讯云HAI + DeepSeek快速设计自己的个人网页

基于腾讯云HAI + DeepSeek快速设计自己的个人网页

前言:通过结合腾讯云HAI 强大的云端运算能力与DeepSeek先进的 AI技术,本文介绍高效、便捷且低成本的设计一个自己的个人网页。你将了解到如何轻松绕过常见的技术阻碍,在腾讯云HAI平台上快速部署DeepSeek模型,仅需简单几步,就能获取一个包含个人简介、技能特长、项目经历及联系方式等核心板块的响应式网页。 目录 一、DeepSeek模型部署在腾讯云HAI 二、设计个人网页 一、DeepSeek模型部署在腾讯云HAI 把 DeepSeek 模型部署于腾讯云 HAI,用户便能避开官网访问限制,直接依托腾讯云 HAI 的超强算力运行 DeepSeek-R1 等模型。这一举措不仅降低了技术门槛,还缩短了部署时间,削减了成本。尤为关键的是,凭借 HAI 平台灵活且可扩展的特性,用户能够依据自身特定需求定制专属解决方案,进而更出色地适配特定业务场景,满足各类技术要求 。 点击访问腾讯云HAI控制台地址: 算力管理 - 高性能应用服务 - 控制台 腾讯云高性能应用服务HAI已支持DeepSeek-R1模型预装环境和CPU算力,只需简单的几步就能调用DeepSeek - R1

By Ne0inhk
AI革命先锋:DeepSeek与蓝耘通义万相2.1的无缝融合引领行业智能化变革

AI革命先锋:DeepSeek与蓝耘通义万相2.1的无缝融合引领行业智能化变革

云边有个稻草人-ZEEKLOG博客 目录 引言 一、什么是DeepSeek? 1.1 DeepSeek平台概述 1.2 DeepSeek的核心功能与技术 二、蓝耘通义万相2.1概述 2.1 蓝耘科技简介 2.2 蓝耘通义万相2.1的功能与优势 1. 全链条智能化解决方案 2. 强大的数据处理能力 3. 高效的模型训练与优化 4. 自动化推理与部署 5. 行业专用解决方案 三、蓝耘通义万相2.1与DeepSeek的对比分析 3.1 核心区别 3.2 结合使用的优势 四、蓝耘注册流程 五、DeepSeek与蓝耘通义万相2.1的集成应用 5.1 集成应用场景 1. 智能医疗诊断

By Ne0inhk
如何通过 3 个简单步骤在 Windows 上本地运行 DeepSeek

如何通过 3 个简单步骤在 Windows 上本地运行 DeepSeek

它是免费的——社区驱动的人工智能💪。         当 OpenAI 第一次推出定制 GPT 时,我就明白会有越来越多的人为人工智能做出贡献,并且迟早它会完全由社区驱动。         但从来没有想过它会如此接近😂让我们看看如何在 Windows 机器上完全免费使用第一个开源推理模型!  步骤 0:安装 Docker 桌面         我确信很多人已经安装了它,所以可以跳过,但如果没有 — — 这很简单,只需访问Docker 的官方网站,下载并运行安装 👍         如果您需要一些特定的设置,例如使用 WSL,那么有很多指导视频,请查看!我将继续下一步。 步骤 1:安装 CUDA 以获得 GPU 支持         如果您想使用 Nvidia 显卡运行 LLM,则必须安装 CUDA 驱动程序。(嗯……是的,它们需要大量的计算能力)         打开CUDA 下载页面,

By Ne0inhk
在 VSCode 中本地运行 DeepSeek,打造强大的私人 AI

在 VSCode 中本地运行 DeepSeek,打造强大的私人 AI

本文将分步向您展示如何在本地安装和运行 DeepSeek、使用 CodeGPT 对其进行配置以及开始利用 AI 来增强您的软件开发工作流程,所有这些都无需依赖基于云的服务。  步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT         要在本地运行 DeepSeek,我们首先需要安装Ollama,它允许我们在我们的机器上运行 LLM,以及CodeGPT,它是集成这些模型以提供编码辅助的 VSCode 扩展。 安装 Ollama Ollama 是一个轻量级平台,可以轻松运行本地 LLM。 下载Ollama 访问官方网站:https://ollama.com * 下载适合您的操作系统(Windows、macOS 或 Linux)的安装程序。 * 验证安装 安装后,打开终端并运行: ollama --version  如果 Ollama 安装正确,

By Ne0inhk