计算机网络笔记再战——理解几个经典的协议1
目录
前言
从协议是什么出发
关于TCP/IP协议体系
几个传输方式的分类
地址
网卡
中继器(Repeater)
网桥(Bridge)
路由器(Router)
网关
前言
笔者最近正在整理(笔者开的坑不少,希望都可以坚持下来)自己学习计算机网络的笔记。笔者的这个系列将会整理的是HTTP协议,TCP/IP协议,UDP协议等几个非常经典的协议。文章更加像是一种整理,所以会略显枯燥
从协议是什么出发
首先,毫无疑问的,伴随70年的发展,计算机之间的互联已经成为一个事实。我们马上就会想到的一个问题,那就是我们如何保证交流解析的一致性(换而言之,双方如何构造发送的信息和解析接受的信息呢?)这一问题直接导致了计算机协议的产生。毕竟这样我们才能读得懂发来的信息,发送别人看得懂的信息。
对计算机网络发展历史感兴趣的朋友可以参考《图解TCP/IP》一书,这本书非常的出名,笔者建议可以看这本书入门的学习TCP/IP协议。
请看下面的表格,这愉快的说明了我们现在常见的协议体系架构,笔者现在常常听说的就是TCP/IP协议了。也是我们现在最经常使用的协议体系。
网络体系结构 | 协议 | 主要用途 |
---|---|---|
TCP/IP | IP, ICMP, TCP, UDP, HTTP, TELNET, SNMP, SMTP... | 互联网、局域网 |
IPX/SPX (NetWare) | IPX, SPX, NPC... | 个人电脑局域网 |
AppleTalk | DDP, RTMP, AEP, ATP, ZIP... | 苹果公司现有产品的局域网 |
DECnet | DPR, NSP, SCP... | 前DEC小型机 |
OSI | FTAM, MOTIS, VT, CMIS/CMIP, CLNP, CONP... | — |
XNS | IDP, 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) 网关 前言 笔者最近正在整理(笔者开的坑不少…...
ElasticSearch学习笔记-解析JSON格式的内容
如果需要屏蔽其他项目对Elasticsearch的直接访问操作,统一由一个入口访问操作Elasticsearch,可以考虑直接传入JSON格式语句解析执行。 相关依赖包 <properties><elasticsearch.version>7.9.3</elasticsearch.version><elasticsea…...

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

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

can not add outlook new accounts on the outlook
link : Reference url...

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

【Elasticsearch】post_filter
post_filter是 Elasticsearch 中的一种后置过滤机制,用于在查询执行完成后对结果进行过滤。以下是关于post_filter的详细介绍: 工作原理 • 查询后过滤:post_filter在查询执行完毕后对返回的文档集进行过滤。这意味着所有与查询匹配的文档都…...
验证工具:GVIM和VIM
一、定义与关系 gVim:gVim是Vim的图形界面版本,提供了更多的图形化功能,如菜单栏、工具栏和鼠标支持。它使得Vim的使用更加直观和方便,尤其对于不习惯命令行界面的用户来说。Vim:Vim是一个在命令行界面下运行的文本编…...

如何优化垃圾回收机制?
垃圾回收机制 掌握 GC 算法之前,我们需要先弄清楚 3 个问题。第一,回收发生在哪里?第二,对象在 什么时候可以被回收?第三,如何回收这些对象? 回收发生在哪里? 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:**表达式知识体系****一、三种表达式形式对比****二、表达式转换核心方法****1. 中缀转后缀(重点)****2. 中缀转前缀** **三、表达式计算方法****1. 后缀表达式计算(栈实现)****…...
段错误(Segmentation Fault)调试
1. 使用 GDB(GNU Debugger) GDB 是一个强大的调试工具,可以帮助你逐步执行程序并检查变量状态。 编译时添加调试信息: gcc -g your_program.c -o your_program启动 GDB: gdb ./your_program运行程序: …...

每日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 ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。 示例 1: 输入:nums [1,2,3] 输出:6示例 2: 输入:nums [1,2,3,4] 输出:24示例 3&a…...

Colorful/七彩虹 隐星P15 TA 24 原厂Win11 家庭版系统 带F9 Colorful一键恢复功能
Colorful/七彩虹 隐星P15 TA 24 原厂Win11 家庭中文版系统 带F9 Colorful一键恢复功能 自动重建COLORFUL RECOVERY功能 带所有随机软件和机型专用驱动 支持机型:隐星P15 TA 24 文件下载:asusoem.cn/745.html 文件格式:ISO 系统版本&…...
第二篇:多模态技术突破——DeepSeek如何重构AI的感知与认知边界
——从跨模态对齐到因果推理的工程化实践 在AI技术从单一模态向多模态跃迁的关键阶段,DeepSeek通过自研的多模态融合框架,在视觉-语言-语音的联合理解与生成领域实现系统性突破。本文将从技术实现层面,解构其跨模态表征学习、动态融合机制与…...
CTreeCtrl 设置图标
mfc界面修改真难受 使用CTreeCtrl 进行设置导航视图时,有时候需要设置图标,一般使用如下代码 m_TreeViewImages.DeleteImageList();UINT uiBmpId IDB_ICONLIST_TREE;CBitmap bmp; if (!bmp.LoadBitmap(uiBmpId)) return;BITMAP bmpObj; bmp.GetBitmap…...
在JAX-RS中获取请求头信息的方法
在JAX-RS中获取请求头信息的方法 HeaderParam注解,可以直接将请求头中的特定值注入到方法参数中,代码示例: import javax.ws.rs.GET; import javax.ws.rs.HeaderParam; import javax.ws.rs.Path; import javax.ws.rs.core.Response;Path(&q…...
Java 面试之结束问答
技术优化 线程池优化 设置最大线程数设置最小核心线程数设置额外线程存活时间选择线程池队列选择合适的线程池选择合适的饱和策略 锁优化 尽量不要锁住方法缩小同步代码块,只锁数据锁中尽量不要再包含锁将锁私有化,在内部管理锁进行适当的锁分解 HT…...

柔性数组与c/c++程序中内存区域的划分
1.柔性数组 1.1柔性数组的定义 柔性数组是指在结构体中定义的,其大小在编译时未确定,而在运行时动态分配的数组。这种数组允许结构体的大小根据需要动态变化。语法如下: struct D {int a;int arry1[0]; };struct F {int a;int arry2[]; };…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...

算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
LangChain【6】之输出解析器:结构化LLM响应的关键工具
文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器?1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...
Python的__call__ 方法
在 Python 中,__call__ 是一个特殊的魔术方法(magic method),它允许一个类的实例像函数一样被调用。当你在一个对象后面加上 () 并执行时(例如 obj()),Python 会自动调用该对象的 __call__ 方法…...
SpringCloud优势
目录 完善的微服务支持 高可用性和容错性 灵活的配置管理 强大的服务网关 分布式追踪能力 丰富的社区生态 易于与其他技术栈集成 完善的微服务支持 Spring Cloud 提供了一整套工具和组件来支持微服务架构的开发,包括服务注册与发现、负载均衡、断路器、配置管理等功能…...