计算机网络 ---如何寻找目标计算机

news2024/9/20 18:00:48

序言

 在没有产生网络之前,单个主机就像汪洋大海之间的一个孤岛,和其他主机之间没有任何联系。但随着需求的产生,免不了两台主机之间需要产生交流(传送数据等)。离得近的两台主机之间搭一根网线就能够解决,但是如果两台主机之间的距离隔得十分远呢?
 本篇博客的内容学习于 此视频(点击查看)👈,感谢该 Up主 的优质视频供大家学习😄。


1. 原始方法

 如果两台主机之间需要通信该怎么办呢?最简单的方式就是两台主机各开一个网口,使用网线将该主机之间相连这就好啦:
在这里插入图片描述

如果想要再加入一台主机,我们只需要将各个设备各开两个网口,再使用网线相连:
在这里插入图片描述
问题慢慢就显现出来了:

  • 一个设备的网口肯定是有限的
  • 当相连的设备多了,整个网线将变得十分复杂,不利于管理维护

2. 集线器

 为了更好的解决多台主机互联的问题,集线器由此而生了:
在这里插入图片描述

当网络中的某个节点(如计算机)通过集线器发送数据包时,集线器首先接收这个数据包,之后他将这个数据包广播转发给所有连接到它的其他端口,目标设备会接受该数据包,其他设备会丢弃。

2.1 Mac地址

 问题来了,其他设备怎么知道这个数据包是否是发给自己的呢?为了确定数据的接收方,每台计算机需要确定一个全局的标识,称为 Mac地址
在这里插入图片描述

假设现在 设备A 有一个数据包需要发送给 设备B
在这里插入图片描述
我们来还原一下场景:

  1. A 将该数据发送给集线器
  2. 集线器一股脑将数据转发给除了 A 的所有设备
  3. 其他设备查看到目标 Mac地址 和自己的不相符直接丢弃,B 则顺利接受

2.2 集线器的缺点

 集线器解决了网络线路复杂的问题,但是同时也存在着不可忽视的缺点:

  • 集线器是一个 半双工 设备,意味着同一时间只有一个设备可以接发数据,多个设备同时工作会导致数据冲突
  • 集线器每次都会将接受的数据发送到全部网络设备(泛洪),这大大的浪费了网络资源

3. 交换机

 为了解决集线器的一系列问题,产生了交换机。交换机的改进体现在 可以学习和识别连接在它设备上面的 Mac 地址,具有自动寻址的能力,并且交换机还支持全双工通信即,允许设备同时发送接受数据。

3.1 Mac表

 交换机实现自动寻址的关键在于 Mac表,该表将交换机的端口和相连的主机 Mac地址建立了一个联系:
在这里插入图片描述

当转发数据时,直接将数据包转发到目的 Mac地址 对应的端口,避免了广播带来的泛洪问题,提高了效率。

 那是如何建立 Mac表 的呢?最开始 Mac表 是空的,现在 设备A 需要发送数据到 设备B
在这里插入图片描述

  1. A 需要将数据发送到交换机,由于数据包从端口 4 进入的交换机,那么该表就会记录端口 4 对应 AMac地址
  2. 交换机发现目标 Mac地址 并没有在表中建立映射关系,所以第一次会广播该数据
  3. 只有 B 接受了该数据并作出响应,所以只有 B 会传输响应数据到交换机
  4. 该表记录端口 1 对应 BMac地址

经过一段时间的运行,交换机将会建立所有对应设备和端口的映射关系。

3.2 交换机桥接

 一个交换机的端口肯定也是有限的,随着需要连接的设备越来越多,该怎么办呢?增加交换机的端口,该方法治标不治本。两个交换机之间桥接:
在这里插入图片描述

桥接之后,又该如何跨交换机进行通信呢?就拿 AE 通信来举例吧:

  1. A 将数据发送给交换机 1,交换机 1 发现 Mac 表中并没有 EMac地址,同时 2 3 4 的映射已经记录在表中了
  2. 于是,交换机 1 会将数据包广播给 5 6 号端口
  3. 交换机 2 通过 6 号端口接收到数据包,之后交换机 2 发现目标 Mac地址E 一致,直接转发给 E
  4. E 接受数据后发送响应数据,交换机 2 将相应数据发送给交换机 1,交换机 1 接受响应数据,并将 EMac地址 和端口建立映射关系

桥接交换机进一步的扩大了进行设备通信的数量和范围。

3.3 交换机的缺点

 面对及大规模的需要通信的设备,强如交换机也有抗不住的一天。当需要建立的映射太多了,会导致交换机的MAC表确实存在溢出的风险:
在这里插入图片描述
MAC表溢出后,交换机无法有效地根据MAC地址表进行快速转发,而可能不得不采用广播的方式发送数据帧。这会导致网络中不必要的广播流量增加,占用大量带宽,从而降低网络的整体性能。


4. 路由器

 面对一个需要解决的大规模网络通信的问题,我们可以将首先解决小规模的网络通信问题(在这里我们已经解决了 --- 交换机,并且不易使交换机的 Mac表 溢出),在提供一个设备实现跨网络之间转发,这个设备就是大家所熟知的 — 路由器。

4.1 IP地址(IPV4)

 举个栗子,假设现在 A 需要和 D 进行通信,怎么确定两者是否在同一个局域网下,是否需要使用路由器呢?
在这里插入图片描述
我们需要引入一个新的概念来表示该设备位于哪一个局域网中 — IP地址。那 IP地址 又是如何区分不同网络和设备的呢:
在这里插入图片描述

  • IP地址 由 4字节 32 位组成
  • 二进制表示法实在是过于复杂,为了更好的记忆,我们使用点十进制来表示
  • 将每一个字节由十进制表示,并且每个字节之间使用 . 分割

IP地址的前 3 个字节用来表示存在于哪一个网络,最后一个字节用来表示该网络下的哪一台主机:
在这里插入图片描述
若两个 IP 地址的前三个字节相同,则位于同一个局域网下。

4.2 IP地址 VS Mac地址

1. 定义
  • IP地址(Internet Protocol Address):用于为互联网上的每一个网络和每一台主机分配一个 逻辑地址,以此来屏蔽物理地址的差异。(可修改)
  • Mac地址(Media Access Control Address)物理地址,它是分配给网络接口控制器(NIC)的唯一标识符。(不可修改)

2. 功能
  • IP地址(Internet Protocol Address):标识设备所属的网络和主机,用于跨网络的数据交换和路由选择,不参与数据的实际传输
  • Mac地址(Media Access Control Address):标识设备的唯一身份,用于在同一网络中进行数据的寻址和传输

在跨网络数据传输中,需要连着协力合作才能正确的传输数据到指定目标设备。

3. ARP字母协议

 在通常情况下,我们只知道目标的 IP 地址,怎么获取 Mac 地址呢?

 会使用 arp字母协议 像一个子网中广播一个 arp字母请求在这里插入图片描述

当设备收到请求后,会检查请求中的 IP地址 是否和自己的相匹配,如果匹配则将自己的 Mac地址 打包成一个 arp字母响应 发送回请求设备。

4.3 路由表

 路由器通过读取数据包中的 IP地址 信息,决定最佳的传输路径,将数据包从一个网络转发到另一个网络。这种选择是基于 路由表(Routing Table) 进行的,路由表中包含了到达各个目的网络的最佳路径信息,具体怎么实现查找最佳路径在这里就不多赘述了(主要是本身也不是很懂,嘻嘻😗)。


5. 跨网络传输示例

 我们通过一个实例来总计一下我们今天所学内容吧:
在这里插入图片描述
现在 A 需要传输数据到 F 并且 FMac 地址未知:

  1. A 通过 ARP 协议查询当前在网是否存在目标 Mac地址,结果肯定是没有的
  2. 当前子网下没有只能出去找了,A 会通过 ARG协议 获取默认网关(路由器1)的 Mac地址
  3. 之后发送数据,交换机会将你的数据传输给路由器 1
  4. 路由器 1 接受数据后,根据目标 IP 地址子网掩码 获取数据包的目标网络地址
  5. 路由器 1 发现该网络地址不在自己所管的网络中,则会根据路由表信息获取最优的传输路径
  6. 路由器 1 会将 源 Mac地址 和目标 Mac地址 修改为 自己的Mac地址和路由器 2 的 Mac地址,转发给路由器 2
  7. 重复 4 5 6 步骤,最终数据会转发到路由器 4 手中
  8. 路由器 4 使用ARP 协议查询目标的 Mac地址 ,根据 Mac地址 转发到 F 设备

6. 总结

 在这篇文章中介绍了设备之间的跨网络通信,希望大家有所收获,再次感谢该 Up主 的创作视频!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2121007.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

147.最小栈

题目 链接:leetcode链接 思路 这道题目做起来还是比较简单的,使用两个栈就可以实现题目要求。 其中一个栈s实现栈的基本功能,另一个栈mins实现检索最小元素的功能。 来看一下怎么样实现检索最小元素的功能呢? 我们可以这么…

VTK-vtkBandedPolyDataContourFilter学习

官网有一个例子,看完之后仍然不太明白。经过一点点的探索,记录一下收获。 1.建立一个六边形的点集 Create(vtkPoints, points);points->InsertNextPoint(-5, 0, 0);points->InsertNextPoint(-2.5, -4.33, 0);points->InsertNextPoint(2.5, -4.…

网络安全-dom破坏结合jq漏洞以及框架漏洞造成的xss-World War 3

一、环境 XSS Game - Learning XSS Made Simple! | Created by PwnFunction 二、开始介绍 如果notify为真的话那么html是 <div class"alert alert-warning" role"alert"><b>Meme</b> created from ${DOMPurify.sanitize(text)}</d…

DevOps实现CI/CD实战(七)- Jenkins集成k8s实现自动化CI

自动化CI操作 1. 安装gitlab plugin 工具 ##### 2. 配置流水线任务的构建触发器&#xff0c;复制URL&#xff1a;http://192.168.201.111:8080/project/pipeline 3. Gitlab配置Webhooks&#xff0c;将上面的url&#xff1a;http://192.168.201.111:8080/project/pipeline粘…

基于微信小程序+Java+SpringBoot+Vue+MySQL的网上花店/鲜花销售小程序

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 基于微信小程序JavaSpringBootVueMySQL的网上花店/鲜花销售…

AI绘画stable diffussion :Lora大模型微调的利器

前言 LoRA模型是小型的Stable Diffusion模型&#xff0c;它们对checkpoint模型进行微小的调整。它们的体积通常是检查点模型的10到100分之一。因为体积小&#xff0c;效果好&#xff0c;所以lora模型的使用程度比较高。 这是一篇面向从未使用过LoRA模型的初学者的教程。你将了…

使用tesseract.js插件实现前端js识别提取图片的文字

<!DOCTYPE html> <!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图像OCR Tesseract.js 测试…

给豆包MarsCode 编程插件点赞

本文正在参加豆包MarsCode测评官征文活动 首先MarsCode 拉新福利还是蛮高的有E卡、周边T恤、肯德基代金券显卡等hahaha…… 略微炫耀一下100京东E卡&#xff0c;真香&#xff01; 活动入口&#xff1a;https://www.marscode.cn/events/s/ihx7hkNY/ 顺手帮忙助个力谢谢~ 2…

人工智能 | 搭建企业内部的大语言模型系统

大纲 开源大语言模型大语言模型管理私有大语言模型服务部署方案 开源大语言模型 担心安全与隐私&#xff1f;可私有部署的开源大模型 商业大模型&#xff0c;不支持私有部署 ChatGPTClaudeGoogle Gemini百度问心一言 开源大模型&#xff0c;支持私有部署 MistralMeta Llama…

ssl 协议工作过程

ssl 协议工作过程 ChatGPT 说&#xff1a; ChatGPT SSL&#xff08;Secure Sockets Layer&#xff09;协议是用来确保网络通信安全的加密协议&#xff0c;已被TLS&#xff08;Transport Layer Security&#xff09;取代&#xff0c;但它的工作过程仍然是理解现代加密协议的重…

【视频教程】GEE-PIE遥感大数据处理与典型案例实践

随着航空、航天、近地空间等多个遥感平台的不断发展&#xff0c;近年来遥感技术突飞猛进。由此&#xff0c;遥感数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量也大幅增长&#xff0c;使其越来越具有大数据特征。对于相关研究而言&#xff0c;遥感大数据的出现为其提…

《开发环境使用HTTPS调试》

&#x1f916; 作者简介&#xff1a;水煮白菜王 &#xff0c;一位资深前端劝退师 &#x1f47b; &#x1f440; 文章专栏&#xff1a; 前端专栏 &#xff0c;记录一下平时在博客写作中&#xff0c;总结出的一些开发技巧✍。 感谢支持&#x1f495;&#x1f495;&#x1f495; 近…

CoreDownload - WordPress文章下载增强插件v1.0.6

文章内下载效果 后台编辑页面 CoreDownload 是一款高级WordPress 下载增强插件&#xff0c;支持几乎所有网盘&#xff0c;为WordPress增加任意下载功能 安装插件后&#xff0c;在设置中全局开启。然后编辑文章&#xff0c;可以在下面找到CoreDownload下载增强功能。 插件下载 …

以太网和WIFI之间的网络切换脚本(Window环境)

网络切换脚本 在本地创建Window的批处理脚本【网络切换脚本.bat】&#xff0c;填入以下内容&#xff0c;然后以管理员身份运行&#xff0c;即可实现以太网和WIFI之间的切换。 echo off netsh interface show interface "WLAN" | find "管理状态: 已启用"…

SLM21814系列SiLM21814CJ-AQ能提供独立的高边、低边输出驱动信号 一款高压、高速的功率MOSFET和IGBT驱动器

SLM21814系列SiLM21814CJ-AQ是一款高压、高速的功率MOSFET和IGBT驱动器&#xff0c;它提供独立的高边、低边输出驱动信号。采用专有的高压集成电路和锁存免疫CMOS技术&#xff0c;提供可靠的单芯片驱动方案。逻辑输入电平与标准CMOS或LSTTL输出兼容&#xff0c;最低支持3.3V逻辑…

家常菜才最适合减肥!最新研究发现,减少外出就餐次数可减少儿童肥胖

虽然老人们都喜欢孩子能“白白胖胖”&#xff0c;但随着生活水平的提高&#xff0c;儿童肥胖已成为一个不可忽视的健康问题。据报道&#xff0c;我国6-17岁儿童青少年超重率和肥胖率分别是11.1%和7.9%&#xff0c;也就是说&#xff0c;几乎每5个中小学生中就有一个小胖墩儿。 有…

如何在算家云搭建Open-Sora1.1(视频生成)

一、Open-Sora1.1简介 Open-Sora 1.1 项目是 Colossal AI 团队开发的一个完全开源的视频生成项目&#xff0c;该项目致力于高效制作高质量视频&#xff0c;并通过开源原则实现先进视频生成技术的低成本普及。 1. 项目背景与目标 Open-Sora 项目旨在通过提供开源的模型、工具…

【Python】数据可视化之核密度

KDEPlot&#xff08;Kernel Density Estimate Plot&#xff0c;核密度估计图&#xff09;是seaborn库中一个用于数据可视化的函数&#xff0c;它基于核密度估计&#xff08;KDE&#xff09;这一非参数统计方法来估计数据的概率密度函数。KDEPlot能够直观地展示数据的分布特征&a…

定点荧光标记蛋白:轻松搞定CAR-T阳性率检测

CAR-T细胞疗法在8月份提前进入“丰收季”。8月27日NMPA官网公示&#xff0c;**国内第五款CAR-T细胞疗法——来自传奇生物的西达基奥仑赛注射液获批上市。**这款靶向BCMA的细胞疗法用于治疗复发或难治性多发性骨髓瘤&#xff08;R/R MM&#xff09;成人患者。同一天&#xff0c;…

NDP协议是怎样帮助IPv6实现网络安全运行的?

在复杂多变的网络环境中&#xff0c;确保各节点之间能够高效、准确地发现与通信&#xff0c;是构建稳定、可扩展网络架构的基石。那么IPv6是依靠什么实现网络安全运行的呢&#xff1f;今天我将就IPv6中的一个重要协议——NDP协议的基本概念及工作原理展开深入分析。 NDP协议的基…