网络协议 一 OSI参考模型、计算机通信基础 (集线器、网桥、交换机、路由器)

article/2025/9/16 21:52:17

萌宅鹿网络系列 的基础上增强

目录

  • 互联网(internet)
  • 为什么要学习网络协议
  • 客户端-服务器
  • 跨平台的原理(Java、C++)
  • 网络互连模型(OSI参考模型)
  • 计算机之间的通信基础
    • 计算机之间的连接方式 - 网线直连
    • 计算机之间的连接方式 - 同轴电缆(Coaxial)
    • 计算机之间的连接方式 - 集线器(Hub)
    • 计算机之间的连接方式 - 网桥(Bridge)
    • 计算机之间的连接方式 - 交换机(Switch)
    • 计算机之间的连接方式 - 路由器(Router)

互联网(internet)

在这里插入图片描述
数据是如何从一个设备传递到另一个设备的?

  • 答:网络协议

为什么要学习网络协议

互联网、移动互联网、物联网,都离不开网络协议:

  • 最常用的网络协议:HTTP
  • 为了满足各种需求,有各式各样的网络协议(HTTPS、SMTP、MQTT、RTMP等)

重点: 网络协议方面的面试题目近年来要求提高了:

  • TCP和UDP的区别?说一下它们的报文格式?
  • TCP的流量控制和和拥塞控制?TCP如何实现可靠性传输?
  • 为什么连接是3次握手,关闭是4次挥手?
  • 7层模型与4层模型的区别?每一层的作用是什么?
  • 交换机与路由器的区别?

客户端-服务器

在这里插入图片描述
在这里插入图片描述

跨平台的原理(Java、C++)

Java跨平台的原理:
在这里插入图片描述
解释型语言跨平台的原理与 Java 类似:例如 JavaScript,甚至不需要经过编译,有浏览器即可解析。


C++跨平台的原理:使用平台相关的编译器生成对应平台的可执行文件
在这里插入图片描述

网络互连模型(OSI参考模型)

什么是协议?为什么要有协议?

  • 协议就是通用的标准
    • 如果没有一个国际通用的标准,那么各大公司按照自己的标准来,相互之间的交互就会很麻烦。比如我编写的代码在微软的服务器可以运行,但是要在苹果的服务器运行又需要重新编写

为了更好地促进互联网络的研究和发展,国际标准化组织 ISO 在 1985 年制定了网络互连模型 OSI 参考模型(Open System Interconnect Reference Model),具有7层结构。

实际上 OSI参考模型(7层) 更偏理论,而 TCP/IP 协议(4层) 在才是在实际中使用的协议,而为了研究和学习计算机网络,又常将之划分为 5层
在这里插入图片描述
请求过程:不管什么协议都是经过下列的 包装 + 解包 的过程。
在这里插入图片描述

计算机之间的通信基础

需要得知对方的IP地址 (根据IP地址可以解析得到MAC地址)

最终是根据MAC地址(网卡地址), 输送数据到网卡, 被网卡接收

  • 数据中包括源IP目标IP地址源MAC地址目标MAC地址
  • 如果网卡发现数据的目标MAC地址是自己, 就会将数据传递给上一层处理
  • 如果网卡发现数据的目标MAC地址 不是自己, 就会将数据丢弃, 不会传递给上一层进行处理

计算机之间的连接方式 - 网线直连

  • 需要用 交叉线(不是直通线)
    • 相同设备之间使用的是交叉线
    • 不同设备使用的是直通线

在这里插入图片描述

ARP协议的作用:已知 IP地址,通过 广播(和自己可以Ping通的) 获取 MAC地址。(因为数据是通过网卡(MAC)来接收的, 广播要在同一个网段中才能传播)

  • ARP是有缓存的, ping命令实际就是使用的ICMP协议, 在ICMP之前会先走ARP协议(广播)来获取MAC地址
    • arp -a 来查看缓存的MAC地址

为什么右边出现3个ARP包,实际上是 一次完整的发送请求,接收响应的过程
在这里插入图片描述

  • ping命令使用的是ICMP协议,前提是需要知道对方的ip地址,最终是根据MAC地址输送数据到网卡,被网卡接收。
  • 当不知道对方MAC地址时,使用ARP协议,进行广播
  • 广播只在同一个网段中传播,目的是获取MAC地址,给所有连接设备发广播,询问对应ip地址下的MAC地址
  • ARP协议的广播中,目标MAC地址FFFF.FFFF.FFFF。即16进制MAC地址,换算二进制全是1
  • 全是1的MAC地址,代表广播,表示在同一个网段的所有连接设备都能接收 (ping通)。
    img
  • ARP协议是有缓存的,当下次在ping的时候,就不需要再去获取ip地址了,而是直接执行ICMP协议。

计算机之间的连接方式 - 同轴电缆(Coaxial)

缺点:

  • 半双工通信 : 同一时刻只能发送或者接收数据(不能同时接收, 同时发送)

在这里插入图片描述

  • 半双工通信
    • 同一时间,单向通信
  • 容易冲突
    • 电缆两个方向同时有数据汇入时,会发生冲突。
  • 不安全
    • 数据不会单向走入对应的计算机,而是向所有设备发送数据。
  • 中间断了, 整个就瘫了
    • 失去了终止电阻

注意:同轴电缆只要有一个地方线断了,整个线路都瘫痪了。

计算机之间的连接方式 - 集线器(Hub)

  • 相当于同轴电缆的升级版。

在这里插入图片描述
集线器相比同轴电缆唯一的优点就是:哪怕连着集线器的某一个设备中间线路出问题,不会影响到连着集线器的其他设备。

  • 缺点: 获取MAC地址的时候, 会给相同网段的所有设备都发ARP协议(造成广播风暴), 获取MAC, 通过ICMP发送数据包也会给所有的设备发送, 这样会占用 带宽

计算机之间的连接方式 - 网桥(Bridge)

将 多个集线器 通过 网桥 连接

能够通过自学习得知每个结构那侧的MAC地址,从而起到隔绝冲突域的作用。

  • 通过MAC地址表

  • 当数据通过网桥MAC地址表确定目标MAC地址不在另一侧时,就不会继续向另一侧发送数据了。

  • 如果左右两侧数据可以被网桥分隔,那么左右两侧可以同时进行通信。
    在这里插入图片描述

  • 所谓 隔绝冲突域 是通过:记录设备的MAC地址在左还是在右

  • 例如,6向7发数据包,

    • 当6发出请求ARP广播时,网桥会记录6的MAC地址在左;
    • 当7发出响应ARP广播时,网桥会记录7的MAC地址在左。

当 6 给 7 发送数据包的时候, 网桥会判断7的MAC地址在网桥的左边, 所以就不会去网桥的右边进行寻找. 在这里插入图片描述

计算机之间的连接方式 - 交换机(Switch)

隔绝冲突域

  • 集线器 + 网桥 的功能 = 交换机

  • 交换机直接连接计算机, 每个接口都记录了计算机的MAC地址 (第一次还是通过广播, 交换机学习到同一网段中所有计算机的MAC地址)

在这里插入图片描述
若全球所有设备都用交换机连接会发生什么?

  • 1、他们必然处于同一网段,因此 IP地址可能会不够用
  • 2、即使使用交换机,第一次发送数据包仍然需要ARP广播,耗费大量时间。
  • 3、形成ARP广播风暴,只要有一个设备发送ARP广播,全球设备都能收到

计算机之间的连接方式 - 路由器(Router)

跨网段通信, 连接不同网段的计算机

主机在发数据之前,首先会判断目标主机的IP地址跟它是否在同一个网段:

  1. 在同一个网段:ARP广播、通过 交换机/集线器 传递数据
  2. 不在同一个网段:通过路由器转发数据

网线直连、同轴电缆、集线器、网桥、交换机

同一个网段, 才能形成一个 广播域

  • 连接的设备必须在 同一网段
  • 连接的设备处在 同一广播域

路由器

  • 可以在不同网段之间转发数据 (同一网段中的计算机, 使用交换机, 不能使用路由器)
  • 隔绝广播域

不同网段如何通信

  • 主机发数据之前先判断目标IP地址与主机是否在相同网段
    • 在同一个网段,发送ARP,通过交换机集线器传递数据。
    • 不在同一个网段
      • 主机先发送ARP到路由器网关,确定网关MAC地址(路由器网关要和发送主机在同一网段)。
      • 主机发送数据给网关网关再决定出口是哪个网关
      • 出口网关发送ARP,以确认接收方MAC地址
      • 最后出口网关将数据发送给接收方。

每个交换机组成的计算机通信, 相当于一个局域网。多个局域网(不同网段)之间通信使用网关, 路由器中包含了网关, 所以一般通过路由器来解决不同网段之间通信, (网关接口要和不同的局域网中的ip地址要在同一网段)
在这里插入图片描述
上图流程 : 比如 192.168.3.10 给 192.168.4.11 发数据, 因为此时是不同网段所以通信要使用路由器

  • 同一网段通信, 3.10首先发送到交换机0, 通过ARP广播, 会广播到3.11, 但是不会通过路由器(因为路由器会根据目标ip来判断)
  • 不同网段通信, 3.10发送到交换机0, 通过ARP广播, 广播到路由器的4.1网关端口, 然后该网关再发送给交换机1, 通过ARP广播来获取4.11的MAC地址; 然后进行数据的传输

总结

  • 网线直连, 同轴电缆, 集线器, 网桥, 交换机
    • 连接的设备必须在同一网段
    • 连接的设备处在同一广播域
  • 路由器
    • 可以在不同网段之间转发数据
    • 隔绝广播域
      • 不同网段之间的广播是发不过去的
  • 主机发数据之前, 首先会判断目标主机的ip地址跟它是否在同一个网段
    • 在同一个网段: ARP
    • 不在同一个网段: 通过路由器转发数据


http://chatgpt.dhexx.cn/article/qDGgPBNw.shtml

相关文章

物联网安全实践二

正文 一 实验目的及要求 物联网智能设备一般都提供WiFi接入,本实验是在WiFi密码破解基础上进一步对物联网智能设备配置服务开展安全性分析实验。比如智能物联网家居网关、智能家居中的智能插座等,一般都内置Web服务,方便本地登录Web网页开展…

ARP协议个人总结

一:引入 当网络设备要发送数据给另一台设备时,必须要知道对方的网络层地址(即IP地址)。IP地址由网络层来提供,但是仅有IP地址是不够的,IP数据报文必须封装成帧才能通过数据链路进行发送。数据帧必须包含目…

计算机网络知识点总结(ICMP、PING、OSPF、TIMEWAIT、CLOSEWAIT、HTTPS、HTTP2.0)

概述五层模型物理层数据链路层CSMA/CD协议PPP协议MAC地址局域网交换机 网络层(IP层)IP地址分类IP地址与物理地址的区别ARP协议(重点)ICMP协议(重点)Ping原理(重点)Traceroute原理&am…

DC-1靶机渗透测试记录

攻击机 kali-linux-2020.4-vbox-i386 设置 USB设备关闭,网络连接方式仅主机(Host-Only)网络。 攻击机IP 192.168.56.103 步骤1 靶机目标发现 因为靶机和攻击机在同一个网络内,所以使用KALI上arp-scan -l 进行扫描。扫描确定了靶机…

vue3 无法通过局域网访问Network 项目IP地址 无法通过IP访问项目

首先把防火墙关了 通过ping IP 看看是否链接的通 然后修改vue.config 下的publicPath

windows网络命令:ping、ipconfig、tracert、netstat、arp(附ubuntu)

ping www.baidu.com,从命令执行开始,到结果返回总共需要经过以下几步: 1、DNS解析:www.baidu.com解析成具体的IP地址,因为数据包在网络上传输时只认IP地址。 2、查找路由表:IP地址以后,接下来就…

计算机网络复习

计算机网络 一.计算机网络概述 计算机网络的概念:(*) 1.计算机网络的定义: ​ 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路链接起来,在网络操作系统&#xff0c…

Elasticsearch之快速入门篇(个人笔记)

Elasticsearch概述 Elasticsearch是一个开源的分布式、RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene。   Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库——无论是开源还是私有,但它也仅仅只是一个库。为了充分发挥其功…

【问题整理】计算机相关

目录 缩写 计算机的发展 摩尔定律 冯诺依曼理论 计算机系统的构成 CPU/中央处理器 CPU的性能参数 内存 随机存储器RAM和只读存储器ROM 外存 主板 显卡 定点数和浮点数 网络拓扑结构设计 某医院医保系统故障,如何排错 计算机网络的分层 OSI七层模型 …

验证性实验

验证性实验 一、ipconfig ipconfig 是微软操作系统的计算机上用来控制网络连接的一个命令行工具。它的主要用来显示当前网络连接的配置信息(/all 参数)。 实作一: 使用 ipconfig/all 查看自己计算机的网络配置,尽可能明白每行的…

windows网络命令:ping、ipconfig、tracert、netstat、arp

ping www.baidu.com,从命令执行开始,到结果返回总共需要经过以下几步: 1、DNS解析:www.baidu.com解析成具体的IP地址,因为数据包在网络上传输时只认IP地址。 2、查找路由表:IP地址以后,接下来…

js ftp 上传文件到服务器上,js ftp上传文件到服务器上

js ftp上传文件到服务器上 内容精选 换一换 云堡垒机配置了FTP/SFTP远程备份,报请检查服务器密码或网络连接情况错误,不能启动远程备份。选择备份具体某一天日志,提示备份正在执行,但远程服务器未接收到该备份文件。原因一&#x…

微信/企业微信-本地(MAC)VUE项目调用JS-SDK,开发测试环境搭建

调用微信SDK前置条件 根据官方文档,前端在使用微信的接口前要先进行配置,配置信息得从后端获取,后端在计算signature时需要前端传入当前页面的URL,开发者要在公众平台设置JS SDK安全域名,在这个域名下才能使用微信JS S…

innodb 集群_部署MySQL InnoDB集群以实现高可用性

innodb 集群 In this article, I am going to explain how we can deploy the MySQL InnoDB cluster. InnoDB Cluster is a high availability solution provided by MySQL that has single and multi-master capabilities and failover detection. 在本文中,我将解…

ping命令和它的“亲友”们

前面在《kali主机发现背后的秘密》文章里,介绍了几个*ping的命令。ping可是“可人儿”。瞧,它们都来攀亲戚了,蹭热度来了。今天我们就来认识一下它们。 关系 名称 功能特点 备注 本宗 ping 网络诊断工具,测试互联网协议网络…

搞了运维开发这么多年,原来 Ping 还能这么玩儿

作者:刘勇 腾讯后台研发工程师,就读于北京大学。目前主要从事腾讯云-云拨测项目后台开发相关工作。 网络:良辰有一百种方法让你 Ping 不通,你却无可奈何 为什么 Ping 不通了?为什么又通了? 这些居然都能…

同一局域网下访问vue项目

同一局域网: 在你的电脑上用快捷键windows R打开cmd,使用ping ip地址(想要访问你项目的那台电脑的ip地址),如果成功后就表示你们处于同一局域网下。 本机ip地址 在你的电脑上用快捷键windows R打开cmd&#xff…

【Java 并发编程】一文详解 Java 中有几种创建线程的方式

Java 中有几种创建线程的方式? 1. Java 程序天然就是多线程的2. 线程的启动与终止2.1 线程的启动(1)继承 Thread 类,重写 run() 方法(2)实现 Runnable 接口,重写 run() 方法(3)Thre…

【操作系统】创建线程的方式

学习目标: 目标:掌握操作系统知识 学习内容: 本文内容:创建线程的方式 文章目录 学习目标:学习内容:1创建线程的方法一 : 继承Thread类1.1 写法一1.2 写法二 2 创建线程的方法二 :…

想不到吧,Java创建线程的方式只有一种

目录 前言继承Thread方式实现Runnable接口实现callable接口总结 前言 看到这个标题的小伙伴先别着急喷我……在面试的时候,我们经常会被问到这种基础题:Java创建线程的方式有几种? 比较正常的答法当然是三种: 继承Thread实现Ru…