计算机网络 部分原理和过程

news/2024/4/16 18:22:34/文章来源:https://blog.csdn.net/weixin_51009975/article/details/129151604

下面是一台计算机 Ping 和不在同一 IP 网络上的另一台计算机的全过程:

  1. 该计算机首先确定要 Ping 的目标 IP 地址,并检查该 IP 地址是否与本地 IP 地址在同一 IP 网络上。如果目标 IP 地址与本地 IP 地址不在同一 IP 网络上,则需要通过路由器进行通信。
  2. 计算机根据本地的路由表找到一条通往目标 IP 地址所在网络的路由。如果本地路由表中没有匹配的路由,则会尝试发送 ARP 请求获取默认网关的 MAC 地址。
  3. 计算机将 Ping 命令封装在一个 ICMP 包中,并将该包发送到目标 IP 地址。如果该计算机没有目标 IP 地址的 MAC 地址,则会在本地网络中广播 ARP 请求来获取该 MAC 地址。
  4. 一旦目标计算机收到 ICMP 包,它会返回一个 ICMP Echo Reply 包以响应 Ping 命令。如果目标计算机无法访问或者没有运行 ICMP 服务,则不会返回响应。
  5. 发送端计算机接收到响应后,计算并输出 Round Trip Time (RTT) 以及其他统计信息。

整个过程中,如果有路由器存在,则计算机会将 Ping 包发送到路由器,路由器会根据自己的路由表将该包转发到下一跳路由器,直到该包最终到达目标网络。在目标网络内,目标计算机接收到 Ping 包后进行响应,响应包沿着相反的路径返回到源计算机。

实现可靠数据传输原理

可靠数据传输的目标是确保数据在传输过程中不会丢失、损坏、重复或乱序。

  1. 确认和重传:接收方必须向发送方发送确认消息以表明数据已成功接收。如果发送方在一定时间内未收到确认消息,则假定数据已经丢失,并重新发送该数据。
  2. 序列号和计时器:发送方在每个数据包中都会包含一个唯一的序列号,接收方将用该序列号确认已接收的数据包。发送方还可以使用计时器来确保在一定时间内收到确认消息。如果在超时之前未收到确认消息,则假定数据已经丢失,并重新发送数据包。
  3. 滑动窗口:发送方维护一个滑动窗口,表示可以发送的数据包的数量。接收方维护一个滑动窗口,表示可以接收的数据包的数量。发送方和接收方都可以调整其滑动窗口的大小以优化传输速度和可靠性。
  4. 校验和:发送方在每个数据包中都会包含一个校验和,用于检测数据包是否被损坏。接收方将使用相同的校验和算法来检查数据包是否被损坏。如果数据包已损坏,则接收方将请求发送方重新发送数据包。
  5. 流量控制:发送方和接收方都需要控制数据流量,以确保网络不会过载。发送方可以通过等待接收方发送确认消息来控制数据流量。接收方可以通过调整其滑动窗口的大小来控制数据流量。

这些原理的组合可以实现可靠数据传输。在实现可靠数据传输时,需要考虑网络中的各种问题,如延迟、拥塞和丢包。实现可靠数据传输的算法有很多种,其中一种常见的算法是停止等待协议

以太网工作原理

  1. 以太网使用一种称为CSMA/CD(Carrier Sense Multiple Access with Collision Detection,带冲突检测的载波侦听多路访问)的协议来管理数据传输。当一个计算机想要发送数据时,它会首先检测网络上是否有其他计算机正在传输数据,如果没有则可以开始传输,否则它会等待一段时间再次尝试发送数据。
  2. 当两个或多个计算机同时尝试在同一时间发送数据时,可能会发生碰撞。此时,所有正在发送数据的计算机都会停止传输,并等待一段随机的时间再次尝试发送数据,以避免再次发生碰撞。
  3. 以太网使用一种称为MAC(Media Access Control,媒体访问控制)地址的标识符来识别每个计算机。每个网络接口卡都有一个唯一的MAC地址,用于在网络上识别该计算机。
  4. 以太网使用帧(Frame)作为数据的基本单位。帧是一种数据包,其中包含发送者和接收者的MAC地址,以及数据本身。帧还包括一些用于错误检测和纠正的校验码。
  5. 以太网使用集线器(Hub)或交换机(Switch)来将数据从一个计算机传输到另一个计算机。集线器是一种广播设备,它将数据发送到网络上的所有计算机,而交换机则只将数据发送到目标计算机。
  6. 以太网支持不同的传输速度,包括10 Mbps、100 Mbps、1 Gbps等。速度越快,传输数据的能力越高,但成本也会相应增加。

总的来说,以太网的工作原理是通过CSMA/CD协议、MAC地址、帧以及集线器或交换机等组件来实现的,可以快速、可靠地在局域网中传输数据。

TCP的流量控制

TCP流量控制的原理是通过动态调整发送方发送数据的速率来避免接收方的缓冲区溢出,从而保证数据传输的可靠性。TCP流量控制是基于滑动窗口协议实现的,即发送方和接收方通过协商确定一个窗口大小,发送方每次发送数据后,等待接收方确认后再发送下一段数据。

具体来说,TCP流量控制的过程如下:

  1. 接收方在TCP头中的窗口字段中告诉发送方自己的可用缓冲区大小。
  2. 发送方根据接收方的窗口大小来决定发送数据的量。
  3. 接收方收到数据后,会发送确认消息给发送方,同时在确认消息中告诉发送方自己的可用缓冲区大小。
  4. 发送方根据接收方的确认消息来调整窗口大小,从而控制自己发送数据的速率。

如果发送方发送数据的速率过快,接收方的缓冲区可能会被填满,导致数据丢失。TCP流量控制可以避免这种情况的发生,从而保证数据传输的可靠性。

A向B发送文件,经过了3个链路,3个速率不一样,求吞吐量,时间,主页下载速率

为了计算A向B发送文件的吞吐量、时间和主页下载速率,我们需要知道以下信息:

  1. 文件大小:假设文件大小为F(以比特为单位)。
  2. 三个链路的传输速率:假设它们分别为R1、R2和R3(以比特/秒为单位)。
  3. 假设在传输过程中没有数据包丢失或重传,也没有其他网络延迟或阻塞等因素。

基于这些假设,我们可以按照以下步骤计算吞吐量、时间和主页下载速率:

  1. 计算总的传输速率:将三个链路的速率相加得到总的传输速率R,即R = R1 + R2 + R3。
  2. 计算传输时间:将文件大小F除以总的传输速率R,得到传输时间T,即T = F / R。
  3. 计算吞吐量:将文件大小F除以传输时间T,得到吞吐量,即吞吐量 = F / T。
  4. 计算主页下载速率:假设主页大小为H(以比特为单位),下载时间为t,则主页下载速率为主页大小除以下载时间,即主页下载速率 = H / t。

需要注意的是,上述计算结果都是理论值,实际情况中可能会受到各种网络因素的影响,所以实际吞吐量、时间和主页下载速率可能会略有偏差。

请简述 Link-State 路由算法的工作过程及其特点

Link-State(链路状态)路由算法是一种网络路由算法,它的工作过程如下:

  1. 发现邻居节点和链路状态:每个节点需要发现自己的邻居节点,并获取到每个邻居节点的链路状态信息。链路状态信息包括链路的带宽、延迟、可靠性等参数。
  2. 构建链路状态数据库:每个节点将收集到的邻居节点的链路状态信息组合成一个链路状态数据库(Link-State Database,LSDB)。
  3. 计算最短路径树:每个节点将自己的链路状态信息广播给整个网络。接收到链路状态信息后,每个节点将使用 Dijkstra 算法计算出到达网络中其他节点的最短路径,并构建出一个最短路径树。最短路径树将告诉每个节点如何转发数据包到目的节点。
  4. 更新链路状态信息:每个节点定期广播自己的链路状态信息,同时接收并更新来自邻居节点的链路状态信息。

Link-State 路由算法的特点包括:

  1. 集中式计算:每个节点需要计算到达其他所有节点的最短路径,因此计算复杂度较高。计算结果被存储在每个节点的最短路径树中,因此需要较多的存储空间。
  2. 全局状态信息:每个节点需要存储整个网络的链路状态信息,因此链路状态数据库的大小会随着网络规模的增大而增大。
  3. 快速收敛:当网络拓扑发生变化时,每个节点将重新计算到达其他节点的最短路径,最终收敛到新的最短路径树。因此,Link-State 路由算法具有快速收敛的特点。
  4. 可靠性高:由于链路状态信息被频繁地广播和更新,因此算法具有很高的可靠性和容错能力。

总的来说,Link-State 路由算法适用于需要快速收敛、可靠性高、网络规模不大的场景。

Web页面请求的大致历程:

  1. DNS解析:浏览器首先需要确定所请求的网站的IP地址。它会查询浏览器缓存中的DNS记录,如果找不到,就会向本地DNS服务器发起请求。如果本地DNS服务器没有该网站的DNS记录,它将向其他DNS服务器发送请求,直到找到对应的IP地址。
  2. TCP连接:浏览器使用HTTP协议与Web服务器建立TCP连接。这个过程需要进行三次握手,确保浏览器和服务器之间的连接稳定。
  3. 发送HTTP请求:一旦TCP连接建立,浏览器将向Web服务器发送HTTP请求。请求消息包含所需的网页URL、请求方法(GET、POST等)、请求头等信息。
  4. 服务器处理请求并发送响应:一旦Web服务器收到请求消息,它将使用HTTP协议返回响应消息。响应消息包含HTTP状态码(200、404、500等)、响应头和响应主体。如果请求成功,响应主体将包含所请求的网页内容。
  5. 接收响应:浏览器接收到响应消息后,会根据响应头中的信息对响应进行解析。这些信息可能包括响应内容的类型、字符集等。如果响应中包含了网页内容,浏览器将开始渲染网页。
  6. 渲染页面:浏览器将解析HTML、CSS和JavaScript代码,并将其渲染成可视化的网页。渲染过程包括解析HTML结构、构建DOM树、计算CSS样式、生成渲染树、布局和绘制。
  7. 断开连接:一旦浏览器完成了页面的渲染,它将关闭与Web服务器的TCP连接。

CSMA/CD算法的思想

CSMA/CD(Carrier Sense Multiple Access with Collision Detection,带冲突检测的载波侦听多路访问)是一种在以太网中用来解决多台主机共享同一物理介质时的冲突问题的协议。

其思想可以简述为:

  1. 载波侦听:在发送数据前,发送方首先要侦听物理媒介上是否有其他主机正在发送数据。如果物理媒介上没有其他信号,那么发送方就可以开始发送数据。
  2. 冲突检测:如果两台主机同时开始发送数据,它们的信号会在物理媒介上发生冲突。当发送方检测到冲突时,它会立即停止发送数据,并发送一个jam信号来通知其他主机发生了冲突。
  3. 退避算法:当发送方发现发生了冲突,它会立即停止发送数据,并等待一段随机的时间再重新尝试发送数据。如果再次发生冲突,则会再次停止发送数据,等待更长的时间后再尝试发送,以此类推。
  • 多点接入说明是总线型网络,计算机以多点接入的方式连接在一根总线上,协议的实质是“载波监听”和“碰撞检测”。
  • 载波监听就是利用电子技术检测总线上有没有其他计算机也在发送。载波监听实际上就是检测信道。在发送前,每个站不停地检测信道,是为了获得发送权;在发送中检测信道,是为了及时发现有没有其他站的发送和本站发送的碰撞,这就是碰撞检测。总之,载波监听是全程都在进行的。
  • 碰撞检测就是边发送边监听。就是网卡边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据的时候其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加),当网卡检测到的信号电压超过一定的门限值时,说明总线上至少有两个站同时在发送数据,表明产生了碰撞(冲突),所以也称为冲突检测。这时,由于接收的信号已经识别不出来,所以任何一个正在发送的站就会立即停止发送数据,然后等待一段随机事件以后再次发送。传播时延对碰撞检测的影响:因为网卡只有在接收到电压幅度不正常的信号以后才能判断是否产生了冲突,所以它在接收到信号之前会认为信道是空闲的。

TCP拥塞控制原理

TCP拥塞控制是一种网络拥塞控制技术,用于在网络中防止数据包拥塞并保证网络传输的可靠性和效率。TCP拥塞控制的基本原理可以概括为以下几点:

  1. 慢启动:TCP连接刚建立时,发送方将初始窗口设置为一个很小的值,然后逐渐增加窗口大小,直到网络开始出现拥塞为止。这个过程被称为“慢启动”。
  2. 拥塞避免:一旦慢启动完成,发送方会开始进入“拥塞避免”阶段,此时窗口大小将以一定的速率增加。如果网络出现拥塞,TCP会自动降低窗口大小,然后重新开始慢启动。
  3. 快重传:如果接收方收到的数据包不连续(即缺少某些数据包),它将发送一个重复确认(Duplicate ACK)。如果发送方接收到三个连续的重复确认,它会认为某些数据包丢失,然后立即重传这些数据包,而不必等待超时重传。
  4. 快恢复:如果发送方接收到重复确认,它会将窗口大小减半,然后进入“快恢复”状态,以尝试恢复正常的传输速率。

这些机制的组合可以有效地控制网络拥塞,并使TCP连接在网络中具有良好的性能和稳定性。

域名解析过程

域名解析是将域名转换为对应IP地址的过程,它是Internet上所有通信的基础。下面是一个基本的域名解析过程:

  1. 当用户在Web浏览器或其他应用程序中输入一个URL时,首先会检查本地缓存中是否有与该URL对应的IP地址。如果存在,应用程序将直接使用该IP地址,跳过后面的步骤。
  2. 如果本地缓存中没有对应的IP地址,应用程序会向本地域名服务器(Local DNS Server)发出查询请求。本地域名服务器通常由Internet服务提供商(ISP)提供,也可以由组织或公司自行部署。
  3. 如果本地域名服务器中没有缓存该URL对应的IP地址,则会向根域名服务器(Root DNS Server)发送查询请求。根域名服务器是互联网域名解析的最高级别,负责管理顶级域名服务器(例如.com、.org、.cn等)。
  4. 根域名服务器收到查询请求后,会根据请求中指定的顶级域名(例如.com)返回一个顶级域名服务器的IP地址列表,以及用于下一步解析的域名服务器的IP地址。
  5. 本地域名服务器根据根域名服务器返回的IP地址列表,向顶级域名服务器发送查询请求,请求该URL所对应的下一级域名服务器的IP地址列表。
  6. 本地域名服务器重复第5步,向下一级域名服务器发送查询请求,直到查询到最终的域名服务器,该域名服务器返回该URL对应的IP地址。
  7. 本地域名服务器将该IP地址缓存起来,并将其返回给应用程序。同时,本地域名服务器也会将该IP地址保存在本地缓存中,以便下次查询时可以直接使用,加快域名解析的速度。

需要注意的是,上述过程中每一步的响应时间都可能不同,而且每个DNS服务器都有自己的缓存策略,因此整个域名解析过程的时间也会有所不同。为了提高域名解析的速度,可以通过减少查询层数、使用本地缓存、使用高速的DNS服务器等方式来优化。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

KT1025A蓝牙音频芯片_立讯KC认证FCC测试现场整改记录

目录 一、问题说明简介 测试机构立讯反馈,客户寄的样板进行无线KC【韩国】测试不过,体现在如下两点 蓝牙部分接收杂散不过 蓝牙的发射功率偏低 2.1 单独只给蓝牙部分供电的测试图片--OK 2.2 单独给整板供电--但是使用电池供电 2.3 单独给整板供电-…

关于机器人坐标系变换的笔记

ROS TFros中,可以通过TF Tree来进行获取 机器人不同坐标系之间的转换关系,命令如下:rosrun tf tf_echo base_link head_link1意思为,从源坐标系base_link,到目标坐标系head_link1的变换关系,结果如下所示。…

Crafting interpreters 中文翻译,持续修正

本书在线地址 http://craftinginterpreters.com/ 感谢作者 作者用近 4 年的时间持续创作和改进本书,并把其 Web 版本公开在网上。这本纸质书于今年 7 月出版,立刻在 Hacker News 等网络媒介上引起关注和讨论。 书中作者首先定义了一个动态类型的语言 …

棋牌类游戏测试用例怎么写?我敢打赌你绝对不知道

目录 一.登陆 二.大厅 三.小游戏 四.银行功能 五.其他按钮 总结感谢每一个认真阅读我文章的人!!! 重点:配套学习资料和视频教学 一.登陆 1&#xff0e…

使用拦截器实现登录状态检测(以及在注册拦截器类时要使用ioc中的拦截器类)

拦截器 preHandler(HttpServletRequest request, HttpServletResponse response, Object handler) 方法在请求处理之前被调用。该方法在 Interceptor 类中最先执行,用来进行一些前置初始化操作或是对当前请求做预处理,也可以进行一些判断来决定请求是否…

【MyBatis】源码学习 04 - 从 MapperMethod 简单分析一条 SQL 的映射操作流程

文章目录前言参考目录学习笔记1、测试代码说明2、binding 包的主要功能3、获取 Mapper 接口实例过程4、SQL 语句执行流程4.1、方法调用器4.2、MapperMethod 绑定方法4.2.1、SqlCommand4.2.2、MethodSignature4.3、MapperMethod#execute前言 本文内容对应的是书本第 13 章的内容…

循环、函数、对象——js基础练习

目录 一、循环练习 1.1 取款机案例 1.2 九九乘法表 1.3 根据数据生成柱形图 1.4 冒泡排序 1.6综合大练习 二、函数 2.1 转换时间案例 三、对象 1. 遍历数组对象 2. 猜数字游戏 3. 生成随机颜色 4. 学成在线页面渲染案例 一、循环练习 1.1 取款机案例 // 准备一个…

电商项目之Feign与Dubbo技术选型

文章目录1 问题背景2 前言3 思路4 Feign与Dubbo的区别5 总结6 真实案例1 问题背景 电商项目,B端以consul作为注册中心。重构了一个营销服务,以Nacos作为注册中心。B端需要调用营销服务。关于远程调用框架,营销服务用了Dubbo,而B端…

黑马程序员-Linux网络编程-01

目录 课程链接 协议 分层模型 网络传输数据封装流程 以太网帧和ARP请求 IP协议 TCP协议 BS与CS模型对比 套接字 网络字节序 IP地址转换函数 sockaddr地址结构 socket模型创建流程 socket()和bind() listen()和accept()​ 课程链接 03-协议_哔哩哔哩_bilibili 协…

java并发笔记

文章目录HashMapput方法resize方法ConcurrentHashMapput方法initTable方法sizectl代表什么:扩容计数器ConcurrentHashMap的读操作会阻塞嘛AQS唤醒线程时,AQS为什么从后往前遍历?AQS为什么要有一个虚拟的head节点AQS为什么用双向链表&#xff…

万字C语言学习笔记,带你学C带你飞(四)

文章目录单链表typedef1、基础typedef2、进阶typedef共用体枚举类型1、声明枚举类型2、定义枚举变量位域位操作文件的写入与写出C语言学习笔记,记录所学,便于复习。 由于篇幅过大,考虑到观感,准备分多篇记录。学习视频链接&#x…

Vue3.x使用Echarts绘制世界地图并进行定点

Vue3.x使用Echarts绘制世界地图并进行定点 一、需求 绘制世界地图并根据返回经纬度数据进行定点将定点数据展示在世界地图内 二、解决 绘制世界地图,利用Echarts图表组件时间,需要世界地图Geojson数据的可以在资源中下载世界地图Geojson数据-Javascr…

2022FALL嵌入式大纲

Jamslade 部分内容有遗漏,可结合 超文本 2022FALL《嵌入式系统原理》期末复习笔记 一起观看 文章目录嵌入式系统片上系统实时系统硬实时系统软实时系统伪指令DMA传输波特率单/半双/全双工通信;对齐/非对齐访问地址译码代码临界区RISCBIOSUARTSPII2CWDTRO…

2.5|shell简介|Linux支持的网络协议|Linux的网络服务

shell简介shell是一种具备特殊功能的程序,它是介于使用者和Unix/Linux操作系统内核间的一个接口。操作计算机需要通过命令(command)或是程序(program);程序需要编译器(compiler)将程…

东南大学研究生英语18-19秋试卷解析

写在前面 作者:夏日 博客地址:https://blog.csdn.net/zss192 本文为东南大学研究生英语上学期18-19年期末试卷解析,答案来源于 ChatGPT International Conference 单选题 1.A presenter is supposed to do the following in an introdu…

【数据结构趣味多】八大排序

目录 1.直接插入排序 基本思想 代码实现: 直接插入排序的特性总结: 2.希尔排序 基本思想 代码实现 (递归实现) 希尔排序的特性总结 3.直接选择排序 基本思想 代码实现: 直接选择排序的特性总结 4.堆排序 …

Springboot 全局异常处理类

全局异常处理 在开发过程中,不管是Dao、Servie、Controller,层都有可能发生异常,对于异常处理,通常是try-catch或者直接throw,这会让try-catch的代码在代码中任意出现,系统的代码耦合度高&…

深入Spring底层透析bean生命周期及循环引用的醍醐灌顶篇

目录前言一.Bean的生命周期1.1 Bean的实例化阶段1.2 Bean的初始化阶段(重点)1.3 Bean的完成阶段二.循环引用问题(面试常问题)三.Spring的三级缓存(重点来了)四.完整的Spring IoC整体总结前言 本篇是接着bean的创建基本…

2023/02/21 事件循环-eventloop 宏任务 微任务 讲解

1 JS是单线程 js是单线程的。也就是说,同一个时间只能做一件事。作为浏览器脚本语言,与它的用途有关。JavaScript的主要用途是和用户互动,以及操作DOM,这决定了它只能是单线程。 js是单线程的。也就是说,同一个时间只…

非常优秀的网站设计案例,设计师必备

厚积才能薄发,一个优秀的设计师的天性一定是想要获得更多网站设计灵感,擅于为新项目寻找创意切入点、搜索设计参考资源、最新的设计趋势。今天为大家带来了一组免费可商用的网站设计案例,通过这些网站设计案例,你可以获得&#xf…