网络通信的整个流程

2023-11-11

1.网络通信流程

在这里插入图片描述

  • 你的电脑打开浏览器,访问www.baidu.com。
  • 先将请求信息发给了交换机,然后交给了路由器,路由发给DNS服务器,通过DNS协议去找我们要访问的百度的IP地址:
    在这里插入图片描述
  • 查到的百度服务器对应的IP地址之后,路由器通过路由协议找到一个路由转发的最优路径,将你的请求信息传送给这个IP地址的百度的路由器。
  • 百度的路由器转发给了百度网站的服务器上。 百度网站服务器按照来的时候的路径,在返回给你他自己的网站。
  • 你的电脑通过端口号找到你的浏览器,你的浏览器拿到了百度的网站信息,然后将网站呈现在了自己的浏览器上。

2.DNS查询方式

2.1 DNS的记录类型

  • 常见的DNS记录类型如下。
    (1) A:地址记录(Address),返回域名指向的IP地址。
    (2) NS:域名服务器记录(Name Server),返回保存下一级域名信息的服务器地址。该记录只能设置为域名,不能设置为IP地址。
    (3)MX:邮件记录(Mail eXchange),返回接收电子邮件的服务器地址。
    (4)CNAME:规范名称记录(Canonical Name),返回另一个域名,即当前查询的域名是另一个域名的跳转。
    (5)PTR:逆向查询记录(Pointer Record),只用于从IP地址查询域名。
    一般来说,为了服务的安全可靠,至少应该有两条NS记录,而A记录和MX记录也可以有多条,这样就提供了服务的冗余性,防止出现单点失败。

  • 基本查询

dig www.baidu.com

在这里插入图片描述

  • 分级查询的实例
$ dig +trace www.baidu.com

在这里插入图片描述

  • NS 记录的查询
dig ns .

在这里插入图片描述

3.网络互联

  • 将网络互相连接起来要使用一些中间设备(或中间系统),ISO的术语称之为中继(relay)系统。根据中继系统所在的层次,可以有以下五种中继系统:
    1.物理层(即常说的第一层、层L1)中继系统,即转发器(repeater)。
    2.数据链路层(即第二层,层L2),即网桥或桥接器(bridge)。交换机
    3.网络层(第三层,层L3)中继系统,即路由器(router)。
    4.网桥和路由器的混合物桥路器(brouter)兼有网桥和路由器的功能。
    5.在网络层以上的中继系统,即网关(gateway)。

4. 交换机

4.1 二层交换技术

二层交换机是数据链路层的设备,它能够读取数据包中的MAC地址信息并根据MAC地址来进行交换。
  交换机内部有一个address地址表,这个地址表标明了MAC地址和交换机端口的对应关系。那么,交换机如何建立和维护它自己的地址表:
1.当交换机从某个端口收到一个数据包,它首先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的;
2. 再去读取包头中的目的MAC地址,并在地址表中查找相应的端口,如果表中有与这目的MAC地址对应的端口,则把数据包直接复制到这端口上;
3. 如果在表中找不到相应的端口则把数据包广播到所有端口上,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。
  由于二层交换机一般具有很宽的交换总线带宽,所以可以同时为很多端口进行数据交换。如果二层交换机有N个端口,每个端口的带宽是M,而它的交换机总线带宽超过N×M,那么这交换机就可以实现线速交换。二层交换机对广播包是不做限制的,把广播包复制到所有端口上。

mac地址表:

mac地址 交换机端口
21:e4:d4:e5:0c:43 eth0

4.2 三层交换技术

一个具有第三层交换功能的设备是一个带有第三层路由功能的第二层交换机,但它是二者的有机结合,并不是简单的把路由器设备的硬件及软件简单地叠加在局域网交换机上。
  从硬件上看,第二层交换机的接口模块都是通过高速背板/总线(速率可高达几十Gbit/s)交换数据的,在第三层交换机中,与路由器有关的第三层路由硬件模块也插接在高速背板/总线上,这种方式使得路由模块可以与需要路由的其他模块间高速的交换数据,从而突破了传统的外接路由器接口速率的限制。在软件方面,第三层交换机也有重大的举措,它将传统的基于软件的路由器软件进行了界定。
  其做法是:
  对于数据包的转发:如IP/IPX包的转发,这些规律的过程通过硬件得以高速实现。
  对于第三层路由软件:如路由信息的更新、路由表维护、路由计算、路由的确定等功能,用优化、高效的软件实现。
  
假设两个使用IP协议的机器通过第三层交换机进行通信的过程,机器A在开始发送时,已知目的IP地址,但尚不知道在局域网上发送所需要的MAC地址。

解决方案:要采用地址解析(ARP)来确定目的MAC地址。

  1. 机器A把自己的IP地址与目的IP地址比较,从其软件中配置的子网掩码提取出网络地址来确定目的机器是否与自己在同一子网内。
  2. 若目的机器B与机器A在同一子网内,A广播一个ARP请求,B返回其MAC地址,A得到目的机器B的MAC地址后将这一地址缓存起来,并用此MAC地址封包转发数据,第二层交换模块查找MAC地址表确定将数据包发向目的端口。
  3. 若两个机器不在同一子网内,如发送机器A要与目的机器C通信,发送机器A要向“缺省网关”发出ARP包,而“缺省网关”的IP地址已经在系统软件中设置。
  4. 这个IP地址实际上对应第三层交换机的第三层交换模块。所以当发送机器A对“缺省网关”的IP地址广播出一个ARP请求时,若第三层交换模块在以往的通信过程中已得到目的机器C的MAC地址,则向发送机器A回复C的MAC地址;
  5. 否则第三层交换模块根据路由信息向目的机器广播一个ARP请求,目的机器C得到此ARP请示后向第三层交换模块回复其MAC地址,第三层交换模块保存此地址并回复给发送机器A。以后,当再进行A与C之间数据包转发进,将用最终的目的机器的MAC地址封装,数据转发过程全部交给第二层交换处理,信息得以高速交换。既所谓的“一次选路,多次交换“。

4.3 交换机的工作原理

传统的交换机本质上是具有流量控制能力的多端口网桥,即传统的(二层) 交换机。把路由技术引入交换机,可以完成网络层路由选择,故称为三层交换,这是交换机的新进展。交换机(二层交换)的工作原理交换机和网桥一样,是工作在链路层的联网设备,它的各个端口都具有桥接功能,每个端口可以连接一个LAN或一台高性能网站或服务器,能够通过自学习来了解每个端口的设备连接情况。所有端口由专用处理器进行控制,并经过控制管理总线转发信息。
  同时可以用专门的网管软件进行集中管理。 除此之外,交换机为了提高数据交换的速度和效率,一般支持多种方式。
  (1)存储转发
  所有常规网桥都使用这种方法。它们在将数据帧发柱其他端口之前,要把收到的帧完全存储在内部的存储器中,对其检验后再发往其他端口,这样其延时等于接收一个完整的数据帧的时间及处理时间的总和。如果级联很长时,会导致严重的性能问题,但这种方法可以过滤掉错误的数据帧。
  (2)切入法:
  这种方法只检验数据帧的目标地址,这使得数据帧几乎马上就 可以传出去,从而大大降低延时。
  其缺点是:错误帧也会被传出去。错误帧的概率较小的情况下,可以采用切入法以提高传输速度。而错误帧的概率较大的情况下,可以采用存储转发法/以减少错误帧的重传。

4.4 查看交换机端口信息

  • 查看所有端口的本地信息(即使未接线,也会显示)
lldpcli show interfaces

在这里插入图片描述

  • 查看所有端口的交换机信息。
lldpcli show neighbors

在这里插入图片描述

4.5 查看arp信息

ARP全称 地址解析协议在局域网内信息是以帧传输的。要记住地址就要有一个ARP缓存表,大概是几分钟刷新一次我忘记了。保存的就是当前局域网内与你连接的机器的IP和MAC的地址。

arp -a

在这里插入图片描述

ip地址 mac地址 交换机端口
192.168.100.112 26:15:8b:45:56:af wlp4s0

5. 路由器

5.1 路由技术

路由器是在OSI七层网络模型中的第三层——网络层操作的。
  路由器内部有一个路由表,这表标明了如果要去某个地方,下一步应该往哪走。

  1. 路由器从某个端口收到一个数据包,它首先把链路层的
  包头去掉(拆包),读取目的IP地址,然后查找路由表,
  若能确定下一步往哪送,则再加上链路层的包头(打包),
  把该数据包转发出去;
  2.如果不能确定下一步的地址,则向源地址返回一个信息,
  并把这个数据包丢掉。

路由技术其实是由两项最基本的活动组成,即决定最优路径和传输数据包。其中,数据包的传输相对较为简单和直接,而路由的确定则更加复杂一些。
  路由算法在路由表中写入各种不同的信息,路由器会根据数据包所要到达的目的地选择最佳路径把数据包发送到可以到达该目的地的下一台路由器处。当下一台路由器接收到该数据包时,也会查看其目标地址,并使用合适的路径继续传送给后面的路由器。依次类推,直到数据包到达最终目的地。
  路由器之间可以进行相互通讯,而且可以通过传送不同类型的信息维护各自的路由表。路由更新信息主是这样一种信息,一般是由部分或全部路由表组成。通过分析其它路由器发出的路由更新信息,路由器可以掌握整个网络的拓扑结构。
  链路状态广播是另外一种在路由器之间传递的信息,它可以把信息发送方的链路状态及进的通知给其它路由器。

路由表:
在这里插入图片描述

5.2 路由器工作原理

每个路由器的基本功能都是按照一定的规则来动态地更新它所保持的路由表,以便保持路由信息的有效性。
  路由器的分层寻址功能是路由器的重要功能之一,该功能可以帮助具有很多节点站的网络来存储寻址信息,同时还能在网络间截获发送到远地网段的报文,起转发作用;为了便于在网络间传送报文,路由器总是先按照预定的规则把较大的数据分解成适当大小的数据包,再将这些数据包分别通过相同或不同路径发送出去。当这些数据包按先后秩序到达目的地后,再把分解的数据包按照一定顺序包装成原有的报文形式。
  选择最合理的路由,引导通信也是路由器基本功能;
  多协议路由器还可以连接使用不同通信协议的网络段,成为不同通信协议网络段之间的通信平台。
  一般来说,路由器的主要工作是对数据包进行存储转发,具体过程如下:
  第一步:当数据包到达路由器,根据网络物理接口的类型,路由器调用相应的链路层功能模块,以解释处理此数据包的链路层协议报头。这一步处理比较简单,主要是对数据的完整性进行验证,如CRC校验、帧长度检查等。
  第二步:在链路层完成对数据帧的完整性验证后,路由器开始处理此数据帧的IP层。这一过程是路由器功能的核心。根据数据帧中IP包头的目的IP地址,路由器在路由表中查找下一跳的IP地址;同时,IP数据包头的TTL(Time To Live)域开始减数,并重新计算校验和(Checksum)。
  第三步:根据路由表中所查到的下一跳IP地址,将IP数据包送往相应的输出链路层,被封装上相应的链路层包头,最后经输出网络物理接口发送出去。
  简单地说,路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳传输路径,并将该数据包有效地传送到目的站点。由此可见,选择最佳路径策略或叫选择最佳路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用。上述过程描述了路由器的主要而且关键的工作过程,但没有说明其它附加性能,例如访问控制、网络地址转换、排队优先级等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络通信的整个流程 的相关文章

  • 数据库中存储过程、函数、触发器的区别

    存储过程 函数 触发器的区别 比较项目 存储过程 函数 是否有返回值 可以有 也可以没有 必须有且只有一个 是否可以单独执行 可以 必须通过execute执行 SQL语句 DML或SELECT 可否调用 不可以 可以 且可以位于FROM关键
  • MySQL导入frm文件

    前几天我心爱的Windows Server 2003系统忽然崩溃里面装的东西全完了 还好我是装双系统的 还能有个系统用用 在恢复过程中试了很多办法都不行哦 后来去百度搜索一下 mysql导入frm文件 终于找到办法了 现在把这些记在这里 以
  • python获取文件后缀名及批量更新目录下文件后缀名的方法

    coding utf 8 import os 获取文件后缀名称 dict 存放文件后缀名 path r E test for dirpath dirnames filenames in os walk path for filename i
  • QT容器详解

    QString类 隐式共享 隐式数据共享机制去最大化资源有效利用和最小化复制克隆操作 隐式数据共享类当作为函数参数传递的时候 不仅安全而且效率很高 因为传递的时候只是传递了数据的指针 数据本身只当自己被修改的时候才会去复制 简称写时复制 数
  • vue引入vue-jsonp实现解决跨域(例:在项目里调用百度api/腾讯api获取定位)

    第一步 添加依赖npm install vue jsonp save 第二步 在vue cli项目main js中添加 import VueJsonp from vue jsonp 网上很多博客引用不加 会报错 Vue use VueJso
  • 基于STL的演讲流程管理系统

    完整项目代码已上传gitCode 地址 https gitcode net m0 46663240 stl 1 system pause 按任意键之后才会执行下一步 system cls 清屏 2 vector 清空函数 clear 3 s
  • 各类学习资料(网址)汇总~

    移动开发设计 英文 http davidbcalhoun com 2010 viewport metatag 伯乐论坛http blog jobbole com 这里面的东西感觉好有难度 保存起来再看 什么是响应式网站设计 http www
  • 区块链体系架构

    区块链技术经过多年的发展 它们在实现上各有不同 但是在整体架构上是大体上相同的 区块链平台整体上可以划分为网络层 共识层 数据层 智能合约层以及应用层五个部分 一 网络层 区块链平台通常选择完全分布式且可容忍单点故障的P2P协议作为网络传输
  • Mysql load data local命令详解

    1 load data local命令使用方法 不指定字段名 此写法数据文件内字段数必须跟数据库表一致 load data local infile C test txt into table tableName CHARACTER SET

随机推荐

  • python Elasticsearch update

    备注 如果更新没有成功 原因有几个 1 更改字段在实际中没有 2 多层结构要用用字典来更新 不能用car color方式更新 res es update index index doc type doc type id data id bo
  • 【linux】定时任务讲解

    文章目录 一 在某时刻只执行一次 at 1 设置定时任务 2 查看和删除定时任务 二 周期性执行任务 cron 1 启动crond进程 2 编辑定时任务 3 查看和删除 4 用户权限 4 1 黑名单 4 2指定用户 三 etc cronta
  • Head First Design Mode(5)-工厂模式

    该系列文章系个人读书笔记及总结性内容 任何组织和个人不得转载进行商业活动 工厂模式 烘烤OO的精华 烘烤某些松耦合的OO设计 除了使用new操作符之外 还有更多制造对象的方法 本章我们将了解到实例化的这个活动不应该总是公开的进行 认识到初始
  • 按照目的来分,设计模式可以分为创建型模式、结构型模式和行为型模式。

    引用 软件秘笈 设计模式那点事 书籍 按照目的来分 设计模式可以分为创建型模式 结构型模式和行为型模式 创建型模式用来处理对象的创建过程 结构型模式用来处理类或者对象的组合 行为型模式用来对类或对象怎样交互和怎样分配职责进行描述 创建型模式
  • redis集群主流架构方案分析

    阿伊土鳖小码农 2017 02 10 09 29 Redis在互联网大数据平台有着广泛的应用 主要被用来缓存热点数据 避免海量请求压垮数据库 同时可以提升服务节点的响应速度和并发量 随着数据量的增多 由于redis是占用单台物理机或虚机的内
  • 【vue3+ts+vant】上传图片

    1 使用 van upload 组件 进行样式和功能配置 组件基础结构 配置文字和图标 配置最多数量和最大体积 支持双向数据绑定 支持选择图片后触发函数 支持点击删除事件函数 基础结构
  • STM32学习(一)-- stm32简介

    目录 前言 一 STM32简介 1 STM32 是什么 2 STM32 应用领域 3 STM32 优势 二 ARM简介 三 STM32芯片 1 芯片命名规则 2 型号分类及缩写 四 STM32F103C8T6 1 STM32F103C8T6
  • 机器学习:均值漂移(Mean Shift)详细解释

    1 均值漂移的基本概念 Mean Shift算法和k means相似 都是一个迭代的过程 即先算出当前点的偏移均值 将该点移动到该偏移均值 以此为新的起始点 继续移动 直到满足最终的条件 1 设想在一个有N个样本点的特征空间 初始确定一个中
  • LL(1)文法解析

    一 问题描述 给定上下文无关文法 对其进行解析 得出first集和follow集 在有能力的情况下 可以求出LL 1 分析表 二 算法设计 本程序主要分成三块内容 第一是文法的读入解析 第二是first集的求解 第三为follow集的求解
  • 蜣螂优化算法(DBO)优化VMD参数,最小包络熵、样本熵、信息熵、排列熵(适应度函数可自行选择,一键修改)包含MATLAB源代码

    蜣螂优化算法是华大学沈波教授团队 继麻雀搜索算法 Sparrow Search Algorithm SSA 之后 于2022年11月27日又提出的一种全新的群体智能优化算法 已有很多学者将算法用于实际工程问题中 今天咱们用蜣螂优化算法优化一
  • 七种实现web实时消息推送的方案!

    什么是消息推送 push 短轮询 长轮询 iframe流 SSE 我的方式 MQTT Websocket 自定义推送 Github地址 我有一个朋友 做了一个小破站 现在要实现一个站内信web消息推送的功能 对 就是下图这个小红点 一个很常
  • Python九九口诀表

    九九口诀1 py for i in range 1 10 for j in range 1 i 1 k j i print format j i k end t print n 九九口诀2 py for i in range 1 10 fo
  • 利用OpenSSL实现非阻塞通讯C++代码

    可以转载 转载请注明出处 谢谢 关于OpenSSL的原理以及OpenSSL如何安装 使用 测试demo请参看我之前的两篇博文 这篇博文主要实现了如何在win64下基于VS2012实现OpenSSL的非阻塞通讯 参考了以下几篇博文的内容 表示
  • gcov lcov, 部分代码无法生成 gcda 的原因解决

    参考http blog csdn net lostaway article details 40948841 配置 项目有多个module 组成 一部分有gcda 生成 一部分没有 原因是这部分module 在循环处理 永远不退出 使用 k
  • ResNet系列及其变体(六)—DarkNet53

    本篇主要介绍DarkNet53 其他ResNet系列及其变体介绍见如下blog ResNet系列及其变体目录 DarkNet53 YOLOv3 An Incremental Improvement Darknet53是经典的一个深层网络 结
  • 51单片机的步进电机控制系统(仿真+程序+报告+原理图)

    1 主要功能 该系统由AT89C51单片机 数码管模块 步进电机模块 按键模块构成 可实现功能 1 按键控制步进电机正反转 加减速 停止 2 2个发光二极管显示正反转 1位7段LED数码管显示当前转速档位 共9个档位 3 4个红色LED 指
  • java 8 stream 处理对于 List<Map<String,Object>> 数据的分组求和

    java 8 stream 处理对于 List
  • [914]linux如何批量关闭进程

    碰到需要杀掉某一类进程的时候 如何批量杀掉这些进程 使用awk命令是很好的选择 代码 ps ef grep aaa grep v grep awk print kill 9 2 sh ps ef grep aaa grep v grep 这
  • 查看Linux下网卡状态

    ip link 命令 或者 通过mii tool指令 root localhost root mii tool eth0 negotiated 100baseTx FD link ok eth1 no link 或 root localho
  • 网络通信的整个流程

    1 网络通信流程 你的电脑打开浏览器 访问www baidu com 先将请求信息发给了交换机 然后交给了路由器 路由发给DNS服务器 通过DNS协议去找我们要访问的百度的IP地址 查到的百度服务器对应的IP地址之后 路由器通过路由协议找到