计算机网络 部分原理和过程
下面是一台计算机 Ping 和不在同一 IP 网络上的另一台计算机的全过程:
- 该计算机首先确定要 Ping 的目标 IP 地址,并检查该 IP 地址是否与本地 IP 地址在同一 IP 网络上。如果目标 IP 地址与本地 IP 地址不在同一 IP 网络上,则需要通过路由器进行通信。
- 计算机根据本地的路由表找到一条通往目标 IP 地址所在网络的路由。如果本地路由表中没有匹配的路由,则会尝试发送 ARP 请求获取默认网关的 MAC 地址。
- 计算机将 Ping 命令封装在一个 ICMP 包中,并将该包发送到目标 IP 地址。如果该计算机没有目标 IP 地址的 MAC 地址,则会在本地网络中广播 ARP 请求来获取该 MAC 地址。
- 一旦目标计算机收到 ICMP 包,它会返回一个 ICMP Echo Reply 包以响应 Ping 命令。如果目标计算机无法访问或者没有运行 ICMP 服务,则不会返回响应。
- 发送端计算机接收到响应后,计算并输出 Round Trip Time (RTT) 以及其他统计信息。
整个过程中,如果有路由器存在,则计算机会将 Ping 包发送到路由器,路由器会根据自己的路由表将该包转发到下一跳路由器,直到该包最终到达目标网络。在目标网络内,目标计算机接收到 Ping 包后进行响应,响应包沿着相反的路径返回到源计算机。
实现可靠数据传输原理
可靠数据传输的目标是确保数据在传输过程中不会丢失、损坏、重复或乱序。
- 确认和重传:接收方必须向发送方发送确认消息以表明数据已成功接收。如果发送方在一定时间内未收到确认消息,则假定数据已经丢失,并重新发送该数据。
- 序列号和计时器:发送方在每个数据包中都会包含一个唯一的序列号,接收方将用该序列号确认已接收的数据包。发送方还可以使用计时器来确保在一定时间内收到确认消息。如果在超时之前未收到确认消息,则假定数据已经丢失,并重新发送数据包。
- 滑动窗口:发送方维护一个滑动窗口,表示可以发送的数据包的数量。接收方维护一个滑动窗口,表示可以接收的数据包的数量。发送方和接收方都可以调整其滑动窗口的大小以优化传输速度和可靠性。
- 校验和:发送方在每个数据包中都会包含一个校验和,用于检测数据包是否被损坏。接收方将使用相同的校验和算法来检查数据包是否被损坏。如果数据包已损坏,则接收方将请求发送方重新发送数据包。
- 流量控制:发送方和接收方都需要控制数据流量,以确保网络不会过载。发送方可以通过等待接收方发送确认消息来控制数据流量。接收方可以通过调整其滑动窗口的大小来控制数据流量。
这些原理的组合可以实现可靠数据传输。在实现可靠数据传输时,需要考虑网络中的各种问题,如延迟、拥塞和丢包。实现可靠数据传输的算法有很多种,其中一种常见的算法是停止等待协议
以太网工作原理
- 以太网使用一种称为CSMA/CD(Carrier Sense Multiple Access with Collision Detection,带冲突检测的载波侦听多路访问)的协议来管理数据传输。当一个计算机想要发送数据时,它会首先检测网络上是否有其他计算机正在传输数据,如果没有则可以开始传输,否则它会等待一段时间再次尝试发送数据。
- 当两个或多个计算机同时尝试在同一时间发送数据时,可能会发生碰撞。此时,所有正在发送数据的计算机都会停止传输,并等待一段随机的时间再次尝试发送数据,以避免再次发生碰撞。
- 以太网使用一种称为MAC(Media Access Control,媒体访问控制)地址的标识符来识别每个计算机。每个网络接口卡都有一个唯一的MAC地址,用于在网络上识别该计算机。
- 以太网使用帧(Frame)作为数据的基本单位。帧是一种数据包,其中包含发送者和接收者的MAC地址,以及数据本身。帧还包括一些用于错误检测和纠正的校验码。
- 以太网使用集线器(Hub)或交换机(Switch)来将数据从一个计算机传输到另一个计算机。集线器是一种广播设备,它将数据发送到网络上的所有计算机,而交换机则只将数据发送到目标计算机。
- 以太网支持不同的传输速度,包括10 Mbps、100 Mbps、1 Gbps等。速度越快,传输数据的能力越高,但成本也会相应增加。
总的来说,以太网的工作原理是通过CSMA/CD协议、MAC地址、帧以及集线器或交换机等组件来实现的,可以快速、可靠地在局域网中传输数据。
TCP的流量控制
TCP流量控制的原理是通过动态调整发送方发送数据的速率来避免接收方的缓冲区溢出,从而保证数据传输的可靠性。TCP流量控制是基于滑动窗口协议实现的,即发送方和接收方通过协商确定一个窗口大小,发送方每次发送数据后,等待接收方确认后再发送下一段数据。
具体来说,TCP流量控制的过程如下:
- 接收方在TCP头中的窗口字段中告诉发送方自己的可用缓冲区大小。
- 发送方根据接收方的窗口大小来决定发送数据的量。
- 接收方收到数据后,会发送确认消息给发送方,同时在确认消息中告诉发送方自己的可用缓冲区大小。
- 发送方根据接收方的确认消息来调整窗口大小,从而控制自己发送数据的速率。
如果发送方发送数据的速率过快,接收方的缓冲区可能会被填满,导致数据丢失。TCP流量控制可以避免这种情况的发生,从而保证数据传输的可靠性。
A向B发送文件,经过了3个链路,3个速率不一样,求吞吐量,时间,主页下载速率
为了计算A向B发送文件的吞吐量、时间和主页下载速率,我们需要知道以下信息:
- 文件大小:假设文件大小为F(以比特为单位)。
- 三个链路的传输速率:假设它们分别为R1、R2和R3(以比特/秒为单位)。
- 假设在传输过程中没有数据包丢失或重传,也没有其他网络延迟或阻塞等因素。
基于这些假设,我们可以按照以下步骤计算吞吐量、时间和主页下载速率:
- 计算总的传输速率:将三个链路的速率相加得到总的传输速率R,即R = R1 + R2 + R3。
- 计算传输时间:将文件大小F除以总的传输速率R,得到传输时间T,即T = F / R。
- 计算吞吐量:将文件大小F除以传输时间T,得到吞吐量,即吞吐量 = F / T。
- 计算主页下载速率:假设主页大小为H(以比特为单位),下载时间为t,则主页下载速率为主页大小除以下载时间,即主页下载速率 = H / t。
需要注意的是,上述计算结果都是理论值,实际情况中可能会受到各种网络因素的影响,所以实际吞吐量、时间和主页下载速率可能会略有偏差。
请简述 Link-State 路由算法的工作过程及其特点
Link-State(链路状态)路由算法是一种网络路由算法,它的工作过程如下:
- 发现邻居节点和链路状态:每个节点需要发现自己的邻居节点,并获取到每个邻居节点的链路状态信息。链路状态信息包括链路的带宽、延迟、可靠性等参数。
- 构建链路状态数据库:每个节点将收集到的邻居节点的链路状态信息组合成一个链路状态数据库(Link-State Database,LSDB)。
- 计算最短路径树:每个节点将自己的链路状态信息广播给整个网络。接收到链路状态信息后,每个节点将使用 Dijkstra 算法计算出到达网络中其他节点的最短路径,并构建出一个最短路径树。最短路径树将告诉每个节点如何转发数据包到目的节点。
- 更新链路状态信息:每个节点定期广播自己的链路状态信息,同时接收并更新来自邻居节点的链路状态信息。
Link-State 路由算法的特点包括:
- 集中式计算:每个节点需要计算到达其他所有节点的最短路径,因此计算复杂度较高。计算结果被存储在每个节点的最短路径树中,因此需要较多的存储空间。
- 全局状态信息:每个节点需要存储整个网络的链路状态信息,因此链路状态数据库的大小会随着网络规模的增大而增大。
- 快速收敛:当网络拓扑发生变化时,每个节点将重新计算到达其他节点的最短路径,最终收敛到新的最短路径树。因此,Link-State 路由算法具有快速收敛的特点。
- 可靠性高:由于链路状态信息被频繁地广播和更新,因此算法具有很高的可靠性和容错能力。
总的来说,Link-State 路由算法适用于需要快速收敛、可靠性高、网络规模不大的场景。
Web页面请求的大致历程:
- DNS解析:浏览器首先需要确定所请求的网站的IP地址。它会查询浏览器缓存中的DNS记录,如果找不到,就会向本地DNS服务器发起请求。如果本地DNS服务器没有该网站的DNS记录,它将向其他DNS服务器发送请求,直到找到对应的IP地址。
- TCP连接:浏览器使用HTTP协议与Web服务器建立TCP连接。这个过程需要进行三次握手,确保浏览器和服务器之间的连接稳定。
- 发送HTTP请求:一旦TCP连接建立,浏览器将向Web服务器发送HTTP请求。请求消息包含所需的网页URL、请求方法(GET、POST等)、请求头等信息。
- 服务器处理请求并发送响应:一旦Web服务器收到请求消息,它将使用HTTP协议返回响应消息。响应消息包含HTTP状态码(200、404、500等)、响应头和响应主体。如果请求成功,响应主体将包含所请求的网页内容。
- 接收响应:浏览器接收到响应消息后,会根据响应头中的信息对响应进行解析。这些信息可能包括响应内容的类型、字符集等。如果响应中包含了网页内容,浏览器将开始渲染网页。
- 渲染页面:浏览器将解析HTML、CSS和JavaScript代码,并将其渲染成可视化的网页。渲染过程包括解析HTML结构、构建DOM树、计算CSS样式、生成渲染树、布局和绘制。
- 断开连接:一旦浏览器完成了页面的渲染,它将关闭与Web服务器的TCP连接。
CSMA/CD算法的思想
CSMA/CD(Carrier Sense Multiple Access with Collision Detection,带冲突检测的载波侦听多路访问)是一种在以太网中用来解决多台主机共享同一物理介质时的冲突问题的协议。
其思想可以简述为:
- 载波侦听:在发送数据前,发送方首先要侦听物理媒介上是否有其他主机正在发送数据。如果物理媒介上没有其他信号,那么发送方就可以开始发送数据。
- 冲突检测:如果两台主机同时开始发送数据,它们的信号会在物理媒介上发生冲突。当发送方检测到冲突时,它会立即停止发送数据,并发送一个jam信号来通知其他主机发生了冲突。
- 退避算法:当发送方发现发生了冲突,它会立即停止发送数据,并等待一段随机的时间再重新尝试发送数据。如果再次发生冲突,则会再次停止发送数据,等待更长的时间后再尝试发送,以此类推。
- 多点接入说明是总线型网络,计算机以多点接入的方式连接在一根总线上,协议的实质是“载波监听”和“碰撞检测”。
- 载波监听就是利用电子技术检测总线上有没有其他计算机也在发送。载波监听实际上就是检测信道。在发送前,每个站不停地检测信道,是为了获得发送权;在发送中检测信道,是为了及时发现有没有其他站的发送和本站发送的碰撞,这就是碰撞检测。总之,载波监听是全程都在进行的。
- 碰撞检测就是边发送边监听。就是网卡边发送数据边检测信道上的信号电压的变化情况,以便判断自己在发送数据的时候其他站是否也在发送数据。当几个站同时在总线上发送数据时,总线上的信号电压变化幅度将会增大(互相叠加),当网卡检测到的信号电压超过一定的门限值时,说明总线上至少有两个站同时在发送数据,表明产生了碰撞(冲突),所以也称为冲突检测。这时,由于接收的信号已经识别不出来,所以任何一个正在发送的站就会立即停止发送数据,然后等待一段随机事件以后再次发送。传播时延对碰撞检测的影响:因为网卡只有在接收到电压幅度不正常的信号以后才能判断是否产生了冲突,所以它在接收到信号之前会认为信道是空闲的。
TCP拥塞控制原理
TCP拥塞控制是一种网络拥塞控制技术,用于在网络中防止数据包拥塞并保证网络传输的可靠性和效率。TCP拥塞控制的基本原理可以概括为以下几点:
- 慢启动:TCP连接刚建立时,发送方将初始窗口设置为一个很小的值,然后逐渐增加窗口大小,直到网络开始出现拥塞为止。这个过程被称为“慢启动”。
- 拥塞避免:一旦慢启动完成,发送方会开始进入“拥塞避免”阶段,此时窗口大小将以一定的速率增加。如果网络出现拥塞,TCP会自动降低窗口大小,然后重新开始慢启动。
- 快重传:如果接收方收到的数据包不连续(即缺少某些数据包),它将发送一个重复确认(Duplicate ACK)。如果发送方接收到三个连续的重复确认,它会认为某些数据包丢失,然后立即重传这些数据包,而不必等待超时重传。
- 快恢复:如果发送方接收到重复确认,它会将窗口大小减半,然后进入“快恢复”状态,以尝试恢复正常的传输速率。
这些机制的组合可以有效地控制网络拥塞,并使TCP连接在网络中具有良好的性能和稳定性。
域名解析过程
域名解析是将域名转换为对应IP地址的过程,它是Internet上所有通信的基础。下面是一个基本的域名解析过程:
- 当用户在Web浏览器或其他应用程序中输入一个URL时,首先会检查本地缓存中是否有与该URL对应的IP地址。如果存在,应用程序将直接使用该IP地址,跳过后面的步骤。
- 如果本地缓存中没有对应的IP地址,应用程序会向本地域名服务器(Local DNS Server)发出查询请求。本地域名服务器通常由Internet服务提供商(ISP)提供,也可以由组织或公司自行部署。
- 如果本地域名服务器中没有缓存该URL对应的IP地址,则会向根域名服务器(Root DNS Server)发送查询请求。根域名服务器是互联网域名解析的最高级别,负责管理顶级域名服务器(例如.com、.org、.cn等)。
- 根域名服务器收到查询请求后,会根据请求中指定的顶级域名(例如.com)返回一个顶级域名服务器的IP地址列表,以及用于下一步解析的域名服务器的IP地址。
- 本地域名服务器根据根域名服务器返回的IP地址列表,向顶级域名服务器发送查询请求,请求该URL所对应的下一级域名服务器的IP地址列表。
- 本地域名服务器重复第5步,向下一级域名服务器发送查询请求,直到查询到最终的域名服务器,该域名服务器返回该URL对应的IP地址。
- 本地域名服务器将该IP地址缓存起来,并将其返回给应用程序。同时,本地域名服务器也会将该IP地址保存在本地缓存中,以便下次查询时可以直接使用,加快域名解析的速度。
需要注意的是,上述过程中每一步的响应时间都可能不同,而且每个DNS服务器都有自己的缓存策略,因此整个域名解析过程的时间也会有所不同。为了提高域名解析的速度,可以通过减少查询层数、使用本地缓存、使用高速的DNS服务器等方式来优化。
相关文章:

计算机网络 部分原理和过程
下面是一台计算机 Ping 和不在同一 IP 网络上的另一台计算机的全过程: 该计算机首先确定要 Ping 的目标 IP 地址,并检查该 IP 地址是否与本地 IP 地址在同一 IP 网络上。如果目标 IP 地址与本地 IP 地址不在同一 IP 网络上,则需要通过路由器…...

C++实现链表
C实现链表 众所周知,C/C语言实现的链表是由一个一个的结点构成,每个结点分为数据域和指针域,指针域中存储了其后继结点的地址,通过地址来访问下一个结点。 链表是一系列节点串联形成的数据结构,链表存储有序的元素集合…...

MySQL索引篇
文章目录说明:索引篇一、索引常见面试题按数据结构按物理存储分类按字段特性分类按字段个数分类索引缺点:什么时候适用索引?什么时候不需要创建索引?常见优化索引的方法:发生索引失效的情况:二、从数据页角…...

Ardiuno-交通灯
LED交通灯实验实验器件:■ 红色LED灯:1 个■ 黄色LED灯:1 个■ 绿色LED灯:1 个■ 220欧电阻:3 个■ 面包板:1 个■ 多彩杜邦线:若干实验连线1.将3个发光二极管插入面包板,2.用杜邦线…...

Leetcode.1234 替换子串得到平衡字符串
题目链接 Leetcode.1234 替换子串得到平衡字符串 Rating : 1878 题目描述 有一个只含有 Q, W, E, R四种字符,且长度为 n 的字符串。 假如在该字符串中,这四个字符都恰好出现 n/4次,那么它就是一个「平衡字符串」。 给你一个这样…...

聚类算法之K-means算法详解
文章目录 什么是聚类k-means算法简介牧师-村民模型算法步骤伪代码流程描述手动实现优缺点优点缺点算法调优与改进数据预处理合理选择 K 值手肘法Gap Statistic(间隔统计量)轮廓系数法(Silhouette Coefficient)Canopy算法拍脑袋法采用核函数K-means++ISODATA参考文献<...

电话呼入/呼出CSFB流程介绍
MO CSFB 注册的LAI跟SYS_INFO不同会触发LU流程;LU流程结束后,判断LOCATION UPDATING ACCEPT消息中的"Follow-on proceed"参数状态。(1)如果IE消息中有"Follow-on proceed",终端直接发送CM Service Request; (2)如果IE消息中没有"Follow-on procee…...

【比赛合集】9场可报名的「创新应用」、「程序设计」大奖赛,任君挑选!
CompHub 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号同时会推送最新的比赛消息,欢迎关注!更多比赛信息见 CompHub主页 或 点击文末阅读原文以下信息仅供参考,以比赛官网为准目录创新应用赛&…...

剑指 Offer 27. 二叉树的镜像
剑指 Offer 27. 二叉树的镜像 难度:easy\color{Green}{easy}easy 题目描述 请完成一个函数,输入一个二叉树,该函数输出它的镜像。 例如输入: 镜像输出: 示例 1: 输入:root [4,2,7,1,3,…...

RPC编程:RPC概述和架构演变
RPC编程系列文章第一篇一:引言1:本系列文章的目标2:RPC的概念二:架构的演变过程1:单体架构1):概念2):特点3):优缺点2:单体架构水平扩展1):水平拓展的含义2)&a…...

神经网络训练时只对指定的边更新参数
在神经网络中,通常采用反向传播算法来计算网络中各个参数的梯度,从而进行参数更新。在反向传播过程中,所有的参数都会被更新。因此,如果想要只更新指定的边,需要采用特殊的方法。 一种可能的方法是使用掩码࿰…...

Python列表list操作-遍历、查找、增加、删除、修改、排序
在使用列表的时候需要用到很多方法,例如遍历列表、查找元素、增加元素、删除元素、改变元素、插入元素、列表排序、逆序列表等操作。 1、遍历列表 遍历列表通常采用for循环的方式以及for循环和enumerate()函数搭配的方式去实现。 1ÿ…...

Python开发-学生管理系统
文章目录1、需求分析2、系统设计3、系统开发必备4、主函数设计5、 学生信息维护模块设计6、 查询/统计模块设计7、排序模块设计8、 项目打包1、需求分析 学生管理系统应具备的功能: ●添加学生及成绩信息 ●将学生信息保存到文件中 ●修改和删除学生信息 ●查询学生…...

大数据处理 - Trie树/数据库/倒排索引
Trie树Trie树的介绍和实现请参考 树 - 前缀树(Trie)适用范围: 数据量大,重复多,但是数据种类小可以放入内存基本原理及要点: 实现方式,节点孩子的表示方式扩展: 压缩实现。一些适用场景:寻找热门查询: 查询串的重复度比较高&#…...

jjava企业级开发-01
一、Spring容器演示 采用Spring配置文件管理Bean 1、创建Maven项目 修改项目的Maven配置 2、添加Spring依赖 在Maven仓库里查找Spring框架(https://mvnrepository.com) 同上添加其他依赖 <?xml version"1.0" encoding"UTF-8…...

「事务一致性」事务afterCommit
在事务还没有执行完消息就已经发出去了, 导致后续的一些数据或逻辑上的问题产生。场景如下:异步-记录日志:当事务提交后,再记录日志。发送mq消息:只有业务数据都存入表后,再发mq消息。方案1. 利用TransactionSynchroni…...

【深度学习编译器系列】2. 深度学习编译器的通用设计架构
在【深度学习编译器系列】1. 为什么需要深度学习编译器?中我们了解到了为什么需要深度学习编译器,和什么是深度学习编译器,接下来我们把深度学习编译器这个小黑盒打开,看看里面有什么东西。 1. 深度学习编译器的通用设计架构 与…...

图解操作系统
硬件结构 CPU是如何执行程序的? 图灵机的工作方式 图灵机的基本思想:用机器来模拟人们用纸笔进行数学运算的过程,还定义了由计算机的那些部分组成,程序又是如何执行的。 图灵机的基本组成如下: 有一条「纸带」&am…...

【发版或上线项目保姆级心得】
第一步:先在正式环境创建数据库/新增表格或者字段 在数据库表中增加字段/表格,不会报错。 但是切记不要过早数据库字段/表格或者删除字段/表格 第二步:修改配置文件 先将正式环境需要的配置给写好,包括但不仅限于数据库配置、…...

Python数据分析-pandas库入门
pandas 库概述pandas 提供了快速便捷处理结构化数据的大量数据结构和函数。自从2010年出现以来,它助使 Python 成为强大而高效的数据分析环境。pandas使用最多的数据结构对象是 DataFrame,它是一个面向列(column-oriented)的二维表…...

MacBook Pro 恢复出厂设置
目录1.恢复出厂设置1.1 按Command-R 键1.2 macOS 实用工具1.3 从 macOS 恢复功能的实用工具窗口中选择“磁盘工具”,然后点按“继续”1.4 在“磁盘工具”边栏中选择您的设备或宗卷。1.5 点按“抹掉”按钮或标签页1.6 抹掉OS X HD - 数据 完成1.7 抹掉 OS X HD1.8 查…...

googletest 笔记
什么是一个好的测试 1 测试应该是独立的和可重复的。调试一个由于其他测试而成功或 失败的测试是一件痛苦的事情。googletest 通过在不同的对象上 运行测试来隔离测试。当测试失败时,googletest 允许您单独运 行它以快速调试。 2 测试应该很好地“组织”,…...

MySQL修改密码的几种方式?
第一种方式: 最简单的方法就是借助第三方工具Navicat for MySQL来修改。方法如下: 1、登录mysql到指定库,如:登录到test库。 2、然后点击上方"用户"按钮。 3、选择要更改的用户名,然后点击上方的"编辑用…...

关于画一个句号--基于2022年终总结的反思与分享
没有平台鼓风造势,今年各大平台没有涌现出一批总结,非常清爽 正如同人发明了抽屉,将杂物进行整理、丢弃、收纳,才能对空间进行更合理地使用。我们也需要对知识、过往经历进行整理、丢弃、收纳,才能对大脑进行更合理地…...

学习Flask之三、模板
学习Flask之三、模板 书写易于维护的应用的关键是书写整洁和良构的代码。到目前为止你所见的例子过于简单而不能体现这点。把两个目的完全独立的Flask view 函数当作一个来写,会产生问题。view函数的一个显然的任务是对请求作出响应,如前面的例子所示。对…...

2023-02-20干活小计:
所以我今天的活开始了: In this paper, the authors target the problem of Multimodal Name Entity Recognition(MNER) as an improvement on NER(text only) The paper proposes a multimodal fusion based on a heterogeneous graph of texts and images to mak…...

LeetCode_动态规划_困难_1326.灌溉花园的最少水龙头数目
目录1.题目2.思路3.代码实现(Java)1.题目 在 x 轴上有一个一维的花园。花园长度为 n,从点 0 开始,到点 n 结束。 花园里总共有 n 1 个水龙头,分别位于 [0, 1, …, n] 。 给你一个整数 n 和一个长度为 n 1 的整数数…...

mac tcpdump学习
学习原因 工作上遇到了重启wifi后无法发出mDNS packet的情况,琢磨一下用tcpdump用的命令如下 sudo tcpdump -n -k -s 0 -i en0 -w VENDOR-DUT-INTERFACE.pcapng是在测airplay BCT认证时,官方文档的解决方法。对tcpdump很不了解,现汇总如下的学…...

【跟我一起读《视觉惯性SLAM理论与源码解析》】第二章 编程及编译工具
23.2.21终于拿到六哥的新书 感觉很是不错,打算近期写一写心得之类的 废话不多说,直接开啃 PS:我的建议是阅读完十四讲后再来看这本书,效果应该会很不错。 因为第一章都是介绍之类的我觉得没什么整理的必要,所以直接来…...

广东望京卡牌科技有限公司,2023年团建活动圆满举行
玉兔初临,春天相随,抖擞精神,好运连连。春天是一个万物复苏的季节,来自广东的望京卡牌科技有限公司,也迎来了新年第一次团建活动。在“乘风破浪、追逐梦想”的口号声中,2023望京卡牌目标启动会团结活动正式…...