当前位置: 首页 > news >正文

计算机网络笔记再战——理解几个经典的协议1

目录

前言

从协议是什么出发

关于TCP/IP协议体系

几个传输方式的分类

地址

网卡

中继器(Repeater)

网桥(Bridge)

路由器(Router)

网关


前言

笔者最近正在整理(笔者开的坑不少,希望都可以坚持下来)自己学习计算机网络的笔记。笔者的这个系列将会整理的是HTTP协议,TCP/IP协议,UDP协议等几个非常经典的协议。文章更加像是一种整理,所以会略显枯燥

从协议是什么出发

首先,毫无疑问的,伴随70年的发展,计算机之间的互联已经成为一个事实。我们马上就会想到的一个问题,那就是我们如何保证交流解析的一致性(换而言之,双方如何构造发送的信息和解析接受的信息呢?)这一问题直接导致了计算机协议的产生。毕竟这样我们才能读得懂发来的信息,发送别人看得懂的信息。

对计算机网络发展历史感兴趣的朋友可以参考《图解TCP/IP》一书,这本书非常的出名,笔者建议可以看这本书入门的学习TCP/IP协议。

请看下面的表格,这愉快的说明了我们现在常见的协议体系架构,笔者现在常常听说的就是TCP/IP协议了。也是我们现在最经常使用的协议体系。

网络体系结构协议主要用途
TCP/IPIP, ICMP, TCP, UDP, HTTP, TELNET, SNMP, SMTP...互联网、局域网
IPX/SPX (NetWare)IPX, SPX, NPC...个人电脑局域网
AppleTalkDDP, RTMP, AEP, ATP, ZIP...苹果公司现有产品的局域网
DECnetDPR, NSP, SCP...前DEC小型机
OSIFTAM, MOTIS, VT, CMIS/CMIP, CLNP, CONP...
XNSIDP, SPP, PEP...施乐公司网络

我们熟知的这些协议大多数都是典型的,隶属于“分组交换”的协议,什么意思呢?我们把数据按照协议的规矩,一块块传递,而不是一大坨数据完全不做任何处理的丢出去。所以,为了保证这些分组可以正确的重组回我们希望的信息,我们往往会把拆分的数据添加一些额外的控制信息,学习协议的一个重要的组成部分就在这里:这些经典的协议是如何高效的添加这些控制信息确保我们的信息传递是准确的呢?

关于TCP/IP协议体系

TCP/IP协议体系是分层的!一般的说,有OSI七层分法和现在流行的经典五层分法。分层更加像是隶属于设计模式的解耦合设计。我们知道,目前为止我们信息传递看起来是输入几个文本然后一个回车出去对方收到了信息,这中间经历了非常复杂的转换。分层,划分模块是一个经典的将一个大问题化简为若干小问题的一个办法。每一个层都各司其职,接受下一层的输入向上一层输出。这种模式也就奠基了TCP/IP体系的架构设计。

分层名称功能每层功能概览
应用层针对特定应用的协议。电子邮件协议、远程登录协议、文件传输协议
表示层设定数据表达方式和网络标准数据格式的转换。接收不同应用程序传输的各类信息,如文字、图片、声音等
会话层负责通信管理,负责建立、维护和终止连接。通信连接的建立与维护,数据流控制
传输层管理两个“节点”之间的数据传输。是否数据丢失?
网络层地址管理与路由选择。经过哪条路由传送到目标地址?
数据链路层连接设备之间传输和识别数据帧。数据帧与与传输设备之间的转换
物理层以“0”“1”代表示的原始数据。比特流与电子信号之间的转换,连接器与网线的规范

当然,这个看一下即可。因为更加广泛的是五层模型。后面再说。

几个传输方式的分类

两种,有连接形式的和无连接形式的。有连接形式就像滑绳上绑东西传递,双方需要架设好一个通信线路(打电话就是架设电话线,无线的连接就是架设通信的信道)。无连接形式则更加像是扔东西,双方没有被通知准备,突发的从一端传递到另一端。

还有一种分类则是根据接受端个数划分——单播(一对一),多播(一对多),广播(一对若干)以及任播(随意的调一个设备,这个更加强调的是随意的一台接受设备接受信息就能完成任务)

地址

很好,我们聊完了上面的传输,现在我们考虑的是——传递是从一端到另一端,问题来了,如何在通信的时候表达是身份——我是谁,这个信息要去哪里。我们还是需要一个叫做“地址”的东西来标识的。就像我叫小李,我想呼叫小张,我会在通信的时候喊一声小张然后把信息输送过去。

虽然说关于地址,还有很多复杂的问题我们并没有纳入考虑,但是现在更加像是一个层次化的总结博客。笔者不放在这里谈。

地址具备层次性,这又回到了上面谈论的协议分层理论。协议分层必然带来地址分层。对于TCP/IP中,TCP传输层和IP网络层使用的是IP地址,向下的使用的是MAC地址作为硬件网卡的地址。1. 网卡(Network Interface Card, NIC)

说一说上面这些图中出现的几个经典的要素:

网卡

网卡是计算机连接到网络的硬件设备,它的主要功能是实现计算机与网络之间的物理连接。网卡负责将计算机内部的数据转换为适合传输的网络数据包,并将网络上的数据传送到计算机内部。

  • 网卡通过数据链路层协议与网络通信,常见的协议有Ethernet(以太网)协议。

  • 网卡接收并发送数据帧,包括数据链路层的帧头、帧尾等信息。

  • 每个网卡都有唯一的硬件地址(MAC地址),通过该地址来识别设备。

中继器(Repeater)

玩过红石中继器的都知道(MC人探头),这个就是起到延续信号传递作用的设备

中继器是一种信号放大器,它用于扩大信号的传输距离。当网络信号在传输过程中因为距离过长而衰减时,中继器会接收到信号并放大,再将其发送出去。

  • 中继器工作在物理层,它没有智能,仅仅是对信号进行放大,重复传输。

  • 它不会分析网络数据,也不会修改数据包内容,仅仅是信号的再生,适用于长距离传输。

  • 常用于扩展局域网(LAN)的覆盖范围,连接两个相距较远的网络节点。

网桥(Bridge)

网桥用于连接两个或多个局域网(LAN),使它们能够协同工作。网桥在接收到数据时,会根据目标地址决定是否转发该数据帧。

  • 网桥工作在数据链路层,它根据MAC地址来判断是否转发数据。

  • 网桥有学习和过滤功能,通过学习网络中的MAC地址,它可以决定哪些数据应该在网络中传输,哪些应该被过滤。

  • 网桥能够将不同类型的局域网连接在一起,比如连接两段以太网。

  • 用于减少局域网的冲突域,提高网络的效率。

  • 适用于连接不同物理介质的局域网,或者在局域网内部分隔流量。

路由器(Router)

路由器是一种工作在网络层的设备,主要作用是根据目的IP地址决定数据包的转发路径,连接不同的网络并进行数据包的路由选择。

  • 路由器根据网络层的IP地址来决定数据的转发路径。

  • 它具有路由表,根据这些路由表信息选择最佳路径进行数据转发。

  • 路由器能够连接不同类型的网络,如局域网(LAN)、广域网(WAN)等。

  • 路由器还具有网络地址转换(NAT)功能,能够实现多个设备共享一个公网IP地址上网。

  • 连接不同网络,尤其是广域网(如互联网)与局域网之间的连接。

  • 管理数据包的路由,确保数据通过最优路径传输。

网关

网关是一种工作在应用层的设备,通常用于不同协议或不同网络之间的转换。网关不仅仅处理网络层的IP地址,还可以处理更高层的数据协议,它能够连接完全不同的网络系统。

  • 网关能翻译不同协议之间的数据,如从一个协议栈到另一个协议栈,进行协议转换。

  • 网关工作在OSI模型的较高层,通常涉及到应用层、传输层、网络层等多层次的协议转换。

  • 它可以用于连接不同的网络架构,比如互联网与私有网络,或不同企业间的网络互通。

  • 在跨越不同类型网络时,例如,连接企业内部网络与外部互联网。

  • 实现不同协议或通信方式之间的互操作,比如将IP电话与传统电话系统连接。

相关文章:

计算机网络笔记再战——理解几个经典的协议1

目录 前言 从协议是什么出发 关于TCP/IP协议体系 几个传输方式的分类 地址 网卡 中继器(Repeater) 网桥(Bridge) 路由器(Router) 网关 前言 笔者最近正在整理(笔者开的坑不少&#xf…...

ElasticSearch学习笔记-解析JSON格式的内容

如果需要屏蔽其他项目对Elasticsearch的直接访问操作&#xff0c;统一由一个入口访问操作Elasticsearch&#xff0c;可以考虑直接传入JSON格式语句解析执行。 相关依赖包 <properties><elasticsearch.version>7.9.3</elasticsearch.version><elasticsea…...

浅谈密码相关原理及代码实现

本代码仅供学习、研究、教育或合法用途。开发者明确声明其无意将该代码用于任何违法、犯罪或违反道德规范的行为。任何个人或组织在使用本代码时&#xff0c;需自行确保其行为符合所在国家或地区的法律法规。 开发者对任何因直接或间接使用该代码而导致的法律责任、经济损失或…...

Spring Boot常用注解深度解析:从入门到精通

今天&#xff0c;这篇文章带你将深入理解Spring Boot中30常用注解&#xff0c;通过代码示例和关系图&#xff0c;帮助你彻底掌握Spring核心注解的使用场景和内在联系。 一、启动类与核心注解 1.1 SpringBootApplication 组合注解&#xff1a; SpringBootApplication Confi…...

can not add outlook new accounts on the outlook

link : Reference url...

私有化部署 DeepSeek + Dify,构建你的专属私人 AI 助手

私有化部署 DeepSeek Dify&#xff0c;构建你的专属私人 AI 助手 概述 DeepSeek 是一款开创性的开源大语言模型&#xff0c;凭借其先进的算法架构和反思链能力&#xff0c;为 AI 对话交互带来了革新性的体验。通过私有化部署&#xff0c;你可以充分掌控数据安全和使用安全。…...

【Elasticsearch】post_filter

post_filter是 Elasticsearch 中的一种后置过滤机制&#xff0c;用于在查询执行完成后对结果进行过滤。以下是关于post_filter的详细介绍&#xff1a; 工作原理 • 查询后过滤&#xff1a;post_filter在查询执行完毕后对返回的文档集进行过滤。这意味着所有与查询匹配的文档都…...

验证工具:GVIM和VIM

一、定义与关系 gVim&#xff1a;gVim是Vim的图形界面版本&#xff0c;提供了更多的图形化功能&#xff0c;如菜单栏、工具栏和鼠标支持。它使得Vim的使用更加直观和方便&#xff0c;尤其对于不习惯命令行界面的用户来说。Vim&#xff1a;Vim是一个在命令行界面下运行的文本编…...

如何优化垃圾回收机制?

垃圾回收机制 掌握 GC 算法之前&#xff0c;我们需要先弄清楚 3 个问题。第一&#xff0c;回收发生在哪里&#xff1f;第二&#xff0c;对象在 什么时候可以被回收&#xff1f;第三&#xff0c;如何回收这些对象&#xff1f; 回收发生在哪里&#xff1f; JVM 的内存区域中&…...

beyond the ‘PHYSICAL‘ memory limit.问题处理

Container [pid5616,containerIDcontainer_e50_1734408743176_3027740_01_000006] is running 507887616B beyond the ‘PHYSICAL’ memory limit. Current usage: 4.5 GB of 4 GB physical memory used; 6.6 GB of 8.4 GB virtual memory used. Killing container. 1.增大map…...

Day36【AI思考】-表达式知识体系总览

文章目录 **表达式知识体系总览**回答1&#xff1a;**表达式知识体系****一、三种表达式形式对比****二、表达式转换核心方法****1. 中缀转后缀&#xff08;重点&#xff09;****2. 中缀转前缀** **三、表达式计算方法****1. 后缀表达式计算&#xff08;栈实现&#xff09;****…...

段错误(Segmentation Fault)调试

1. 使用 GDB&#xff08;GNU Debugger&#xff09; GDB 是一个强大的调试工具&#xff0c;可以帮助你逐步执行程序并检查变量状态。 编译时添加调试信息&#xff1a; gcc -g your_program.c -o your_program启动 GDB&#xff1a; gdb ./your_program运行程序&#xff1a; …...

每日Attention学习19——Convolutional Multi-Focal Attention

每日Attention学习19——Convolutional Multi-Focal Attention 模块出处 [ICLR 25 Submission] [link] UltraLightUNet: Rethinking U-shaped Network with Multi-kernel Lightweight Convolutions for Medical Image Segmentation 模块名称 Convolutional Multi-Focal Atte…...

LeetCode题练习与总结:三个数的最大乘积--628

一、题目描述 给你一个整型数组 nums &#xff0c;在数组中找出由三个数组成的最大乘积&#xff0c;并输出这个乘积。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;6示例 2&#xff1a; 输入&#xff1a;nums [1,2,3,4] 输出&#xff1a;24示例 3&a…...

Colorful/七彩虹 隐星P15 TA 24 原厂Win11 家庭版系统 带F9 Colorful一键恢复功能

Colorful/七彩虹 隐星P15 TA 24 原厂Win11 家庭中文版系统 带F9 Colorful一键恢复功能 自动重建COLORFUL RECOVERY功能 带所有随机软件和机型专用驱动 支持机型&#xff1a;隐星P15 TA 24 文件下载&#xff1a;asusoem.cn/745.html 文件格式&#xff1a;ISO 系统版本&…...

第二篇:多模态技术突破——DeepSeek如何重构AI的感知与认知边界

——从跨模态对齐到因果推理的工程化实践 在AI技术从单一模态向多模态跃迁的关键阶段&#xff0c;DeepSeek通过自研的多模态融合框架&#xff0c;在视觉-语言-语音的联合理解与生成领域实现系统性突破。本文将从技术实现层面&#xff0c;解构其跨模态表征学习、动态融合机制与…...

CTreeCtrl 设置图标

mfc界面修改真难受 使用CTreeCtrl 进行设置导航视图时&#xff0c;有时候需要设置图标&#xff0c;一般使用如下代码 m_TreeViewImages.DeleteImageList();UINT uiBmpId IDB_ICONLIST_TREE;CBitmap bmp; if (!bmp.LoadBitmap(uiBmpId)) return;BITMAP bmpObj; bmp.GetBitmap…...

在JAX-RS中获取请求头信息的方法

在JAX-RS中获取请求头信息的方法 HeaderParam注解&#xff0c;可以直接将请求头中的特定值注入到方法参数中&#xff0c;代码示例&#xff1a; import javax.ws.rs.GET; import javax.ws.rs.HeaderParam; import javax.ws.rs.Path; import javax.ws.rs.core.Response;Path(&q…...

Java 面试之结束问答

技术优化 线程池优化 设置最大线程数设置最小核心线程数设置额外线程存活时间选择线程池队列选择合适的线程池选择合适的饱和策略 锁优化 尽量不要锁住方法缩小同步代码块&#xff0c;只锁数据锁中尽量不要再包含锁将锁私有化&#xff0c;在内部管理锁进行适当的锁分解 HT…...

柔性数组与c/c++程序中内存区域的划分

1.柔性数组 1.1柔性数组的定义 柔性数组是指在结构体中定义的&#xff0c;其大小在编译时未确定&#xff0c;而在运行时动态分配的数组。这种数组允许结构体的大小根据需要动态变化。语法如下&#xff1a; struct D {int a;int arry1[0]; };struct F {int a;int arry2[]; };…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)

Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败&#xff0c;具体原因是客户端发送了密码认证请求&#xff0c;但Redis服务器未设置密码 1.为Redis设置密码&#xff08;匹配客户端配置&#xff09; 步骤&#xff1a; 1&#xff09;.修…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...