南宁有多少家网站建设推广的公司,网络营销专业背景,制作一个营销型网站,wordpress多功能模板1. TCP超时重传机制是为了解决什么问题
因为TCP是一种面向连接的协议#xff0c;需要保证数据可靠传输。而在数据传输过程中#xff0c;由于网络阻塞、链路错误等原因#xff0c;数据包可能会丢失或者延迟到达目的地。因此#xff0c;若未在指定时间内收到对方的确认应答需要保证数据可靠传输。而在数据传输过程中由于网络阻塞、链路错误等原因数据包可能会丢失或者延迟到达目的地。因此若未在指定时间内收到对方的确认应答ACK则认为数据包可能丢失此时会触发超时重传机制重新发送该数据包以确保数据的可靠到达。 扩展 1. TCP ACK确认号 TCP的可靠性是靠确认号的比如我发给你1、2、3、4这4个包你告诉我现在要5那说明前面4个包都收到了。不过这里要注意、SeqNum和ACK都是以字节数为单位的。也就是说假设收到了1、2、4但是3没有收到此时不能ack 5如果回了5那么发送方就以为5之前的都收到了。所以只能回复确认最大连续收到的包也就是3. 2. 超时重传的时间RTO RTO是指TCP数据报文段发出去后经过一定时间没有收到其确认报文就会重新发送该报文段的时间阈值。TCP协议通过采样RTT(往返时延)的时间和波动范围不断更新动态调整RTO的值。 2. TCP有超时重传为什么还需要快速重传机制
因为超时重传局限性他是按时间来驱动的如果是网络状况真的不好的情况下超时重传没问题但是如果网络状况好的时候只是恰巧丢包了那么等长时间就没必要。
所以引入了数据驱动的重传叫快速重传他的设计初衷是为了在检索到丢包的情况下尽快重传丢失的数据包而不必等待超时计时器的触发。
他通过检测三个或者更多的重复的ACK认为数据包丢失 从而触发立即重传。 通过快速重传TCP能够更快的恢复丢失的数据包减少重传等待时间。提升数据传输的整体效率特别是在网络条件良好的情况下。
3. TCP的SACK的引入是为了解决什么问题
传统的TCP使用累计确认ACK机制只能确认到达的连续数据段无法有效告知发送方中间某些数据段的丢失或者乱序。结果是发送方只能依赖超时或者重复ACK来重传数据。这可能导致不必要的重传浪费带宽、降低效率。
SACK(选择性确认)他的引入是为了解决发送方不知道该重传哪些数据的问题。使接收方能够告知发送方已收到的非连续数据段。这样发送方只需重传确实丢失的数据段而不是整个发送窗口从而提高传输效率。 SACK就是接收方会回传他已经收到的数据这样发送方就知道哪些数据对方已经收到了所以就可以选择性的发送丢失的数据。如上图通过ACK告知我接下来要5500开始的数据并一直更新SACK6000-6500收到了6000-7000收到了。6000-7500收到了发送方很明确的知道5500-5999的那一波数据丢失了应该重传。
4. TCP滑动窗口的作用是什么
TCP滑动窗口机制的主要作用是实现流量控制即协调发送方和接收方的数据传输速率。确保发送方不会发送超出接收方处理能力的数据量防止接收端缓冲区溢出。
滑动窗口允许发送方在未收到前一个数据包的确认前继续发送多个数据包从而提高网络吞吐量减少等待时间实现高效的数据流传输。 扩展 滑动窗口详细分析 网络是复杂多变的有时候就会阻塞住有时候又很通畅。需要根据情况来控制一下发送速率。发送方需要知道接收方的情况好控制一下发送的速率。不至于蒙着头一个劲的发然后接收方都接受不过来。因此TCP有个滑动窗口来做流量控制就是接收方告诉发送方我还能接受多少数据然后发送方就可以根据这个信息来进行数据的发送。 已经有滑动窗口了为什么还要拥塞控制 滑动窗口仅根据接收方的处理能力进行调节主要防止接收端因处理不及时导致的数据丢失或者拥塞。而拥塞控制是为了防止网络本身的拥塞情况即在网络中出现过载时网络中途路由器和链路的负载仍可能造成数据丢失或者延迟因此需要拥塞控制机制来应对。 5. 说说TCP拥塞控制的步骤
慢启动发送方在连接建立初期缓慢增加数据发送速率。初始的拥塞窗口cwnd通常为一个MSS最大报文段大小然后在每次收到ACK后成倍的增加cwnd直到达到慢启动阈值或者监测到网络拥塞。拥塞避免当cwnd达到阈值后tcp进入拥塞避免阶段拥塞窗口的增长速度从指数变为线性增长即每个RTT往返时间增加一个MSS。这一阶段旨在避免激烈的拥塞反应保持网络稳定性。快速重传发送方在收到三个重复的ACK后立即重传被认为丢失的报文段而无需等待超时。这减少了重传的延迟迅速应对数据丢失。快速恢复在快速重传后TCP不进入慢启动而是减小cwnd到阈值的一般然后开始线性增长cwnd以快速恢复到丢包前的传输速率。
6. ARP和RARP分别是什么有什么区别
ARP将IP地址转换为MAC地址工作在网络层和数据链路层之间主要 用于在局域网中确定一个特定IP地址对应的物理地址。 因为最终需要找到MAC地址才能跟具体的设备通信。
RARP用于将MAC地址转换为IP地址比如一些设备启动的时候需要根据RARO得知分配给他的ip是什么。
7. TCP/IP四层模型是什么
TCP/IP四层模型是一个分层网络通信模型将网络通信过程分为四个层次这四个层次分别是网络接口层、网络层、传输层和应用层。
网络接口层负责在计算机和网络硬件之间传输数据负责在物理网络上发送和接受数据帧包括以太网wifi等协议。网络层通过ip协议提供数据包的路由和转发传输层负责在两个主机之间提供端到端的通信服务常见的有tcp、udp应用层通过各种协议提供网络应用程序的功能如http、ftp等
8. OSI七层模型是什么
应用层用户交互界面提供网络服务如http、ftp、smtp表示层数据格式转换加密、解密如jpeg、ssl/tls等会话层建立、管理、终止会话传输层可靠传输流量控制错误检测如TCP、UDP等网络层路径选择和逻辑地址管理如ip、icmp等数据链路层物理地址MAC寻址错误检测与纠正。物理层比特流传输。
9. Cookie、Session、Token之间有什么区别
Cookie Cookie是存储在用户浏览器的一个小型数据文件用于跟踪和保存用户的状态信息。主要用于保持用户登录状态、跟踪用户行为、存储用户偏好等。 保存在浏览器端。Session Session是服务端保存用户状态的机制每个用户会话都有一个唯一的session id。主要用于跟踪用户在服务器上的状态信息例如登录状态和购物车内容。 存储在服务器端然后对应的sessionId通过Cookie保存在客户端浏览器中。Token Token本质上是一种加密的字符串用于身份验证和授权可以包含用户信息和权限用于验证用户身份或者授权访问资源。认证后后端服务会返回token存储在客户端后续客户端访问服务端需要带上这个token。
使用场景区别
Cookie主要用于客户端状态的简单存储和追踪Session用于服务器端的复杂状态管理特别是在需要存储大量会话数据时Token用于无状态的认证和授权特别是在分布式和跨域环境下。
10. JWT Token
JWT是一种用于在各方之间传递安全信息的紧凑URL安全的令牌格式。在用户登录后服务器生成JWT并返回给客户端。客户端在后续请求中通过HTTP头部通常是Authorization头发送该JWT服务器验证JWT的有效性以进行用户身份验证。
因为他的无状态性常用于分布式系统和微服务架构中。
其结构主要包括三个部分Header、Payload和Signature。
JWT的工作原理可以总结为以下几个步骤
Header描述令牌的元数据通常包含令牌的类型(JWT)和所使用的签名算法(如HMAC).Payload包含声明即传递的数据。这些数据通常包含用户信息和其他相关数据。Signature将Header和Payload用指定的算法进行签名以验证JWT的真实性和完整性。签名确保了令牌内容在传输过程中未被篡改。
JWT的优点
自包含JWT中包含了所有必要的信息因此在验证时不需要查询数据库提升了性能跨语言JWT是基于JSON的几乎所有编程语言都支持他的生成和解析。 1. 如何废除一个过期的JWT 因为JWT是无状态的一般服务器并不保存已签发的JWT所以服务器无法主动撤销一个已经签发的。不过可以通过其他方式来实现。 使用黑名单 实现思路在服务器端维护一个黑名单该列表包含所有已经被废除的JWT标识符每次服务器验证JWT时除了验证签名和其他标准信息外还需要检查该JWT是否在黑名单中。 优点可以精确废除特定的JWT不影响其他合法的JWT。 缺点需要在服务器端存储和管理黑名单违背了JWT的无状态特性增加了系统复杂度。 使用版本控制 实现思路 在用户信息中引入一个“Token版本号”的字段每次生成JWT时将这个版本号作为JWT的一部分。当需要废除某个用户的JWT时只需要将用户的版本号递增在服务器验证JWT时检查JWT中的版本号和用户当前的版本号是否匹配。 结合状态信息 实现思路在某些场景下 可以在服务器端结合一些状态信息来决定JWT是否有效。例如在用户注销或者更改密码时更新服务器上的某些状态。当用户发出请求时除了验证JWT外服务器还检查这些状态是否符合要求。 2. JWT和Session的对比 无状态认证JWT通常用于无状态认证即服务器不存储会话数据。 扩展性由于JWT不依赖服务器存储因此在分布式系统中更具扩展性。 11. 什么是DNS
DNS域名系统是一个用于将域名转换为IP地址的互联网基础服务。当用户输入一个域名时DNS服务器会查询该域名对应的IP地址并将结果返回给用户。这样用户就可以通过易记的域名访问网站而不需要记录复杂的IP地址。
除此之外DNS还有负载均衡能力通过将域名解析到多个IP地址DNS可以帮助分散流量进行负载均衡提高服务的可靠性和性能。 互联网中的域名地址分为多级结构最顶级是根域然后是顶级域如 .com、.org 接着是二级域(taobao.com)以及子域(www.taobao.com)。 DNS服务器和客户端会缓存DNS查询结果以减少查询时间和降低对DNS服务器的负载。缓存的内容会在一定时间后过期具体取决于DNS记录的生成时间TTL设置。 1. DNS的工作流程 域名解析请求用户在浏览器输入一个域名浏览器首先检查本地缓存是否有该域名的IP地址。递归DNS解析如果本地缓存中没有所需的IP地址浏览器会向配置的递归DNS服务器发送请求。查询根域名服务器递归DNS服务器会查询根域名服务器以获取顶级域的DNS服务器地址跟域名服务器负责将请求转发到对应的顶级域服务器。查询顶级域服务器跟域名服务器将请求转发到对应的顶级域服务器如.com、.net ,这些服务器负责处理特定顶级域的请求。查询权威DNS服务器顶级域名服务器将请求转发到域名对应的权威DNS服务器如taobao.com权威DNS服务器拥有该域名的最终DNS记录。返回IP地址权威DNS服务器返回与域名对应的IP地址给递归DNS服务器然后递归DNS服务器将该IP地址返回给用户的浏览器。缓存和访问浏览器缓存该IP地址以供后续请求使用并通过IP地址连接到目标服务器以访问网站。 2. DNS记录类型 A记录将域名映射到IPv4地址。AAAA记录将域名映射到IPv6地址。CNAME记录将一个域名别名指向另一个域名MX记录定义邮件服务器的地址用于电子邮件的传输。TXT记录存储任意文本信息通常用于验证和安全设置NS记录定义域名的权威DNS服务器。 12. 什么是CDN
CDN是一个由多个地理位置分散的服务器节点组成的分布式网络架构用于加速互联网内容的分发。
当用户请求内容时CDN会根据用户的地理位置将请求转发到最近的缓存服务器上这样可以减少数据传输的延迟提高用户访问速度同时减轻服务器的负载。
CDN通常用于加速静态内容的访问提高网络的性能和用户体验。 CDN的通俗理解 如果网站服务器部署在北京香港的用户访问该网站由于物理距离的缘故时延相对而言会比较大导致体验上并不是很好。并且当用户量比较大的时候全国各地所有请求都涌向北京的服务器网络的主干道就会被阻塞。这其实就是所谓的“热点”问题可以采用 分流 的操作解决这个问题。 主服务器部署在北京不变但是全国各地都建立一些缓存站这些缓存站可以缓存一些主服务器上变化不频繁的资源比如css/js/图片等静态资源。当用户访问网站的时候根据就近原则选择一个距离他最近的缓存站。 如果缓存站找不到那么就回源到源站也就是缓存站回去北京的服务器要数据然后将这些数据缓存到本地且返回给用户。 当然一些热点的数据也可以让源站主动推送给缓存站进行 缓存预热。这样就减少了回源的操作使得高峰时期服务器更加平稳。 动态数据怎么办 静态的按照上面说的路子走动态的则是根据内部的一些调度算法智能的选择最优回源路径去请求源站节省请求的时间。 2.CDN基础结构 所谓CDN缓存节点就是上面说的缓存站然后还是一个很重要的GSLB全局负载均衡器 这个GSLB实现的主要功能就是根据就近原则选择一个距离他最近的缓存站。简单来说就是请求转发转发到最近的站。 GSLB转发机制有三种实现 基于DNS解析基于HTTP重定向基于IP路由 业界实现转发的主流技术是DNS解析因为DNS有缓存以及负载均衡能力。 13. 从网络角度看用户从输入网址到网页显示期间发生了什么
浏览器解析URL浏览器会解析URL根据请求信息生成对应的HTTP请求报文。DNS解析请求需要知晓服务器域名对应的IP地址才能通信浏览器会检查本地缓存、操作系统缓存、甚至路由器缓存如果未命中缓存浏览器向配置的DNS服务器发送查询请求。DNS服务器递归查询最终返回IP地址。TCP或者UDP接着浏览器会调用socket库委托协议栈工作根据指定的情况选择TCP或者UDP。如果使用TCP需要通过三次握手建立连接需要在数据发送前通过三次握手和服务端建立连接。此时得到了封装了HTTP数据的TCP数据包。IP在TCP数据包的基础上在封装源地址IP和目标地址IP等信息得到网络包。有了IP就能在多个网络节点中确定数据包的传输路径最终找到目标服务器。MAC得到网络包后需要在IP头部的前面加上mac头部封装发送方MAC地址和接收方MAC地址。MAC用来确保子网内设备两点之间的通信寻址。网卡这个时候网络包还是存储在内存中的二进制数据需要网卡把二进制数据转换为电信号通过网线进行传输。交换机通过网线会连接到交换机交换机是二层网络设备。工作在mac层他会根据数据包的mac头找到另一个设备连接在交换机的哪个端口然后传输。如果找不到对应的端口则会向交换机上的所有端口广播。路由器路由器也是进行转发他是三层网络设备包含IP层利用路由器数据在不同网络节点之间转发最后到达服务器。层层验证服务器确认MAC地址匹配、IP地址匹配如果是TCP协议则看看序列号是否匹配若匹配根据对应的端口号找到监听进程此时服务器上对应的应用就接收到数据了。服务器处理服务器收到请求后处理相应的业务逻辑生成HTTP响应这期间可能涉及到读取数据库、访问文件系统等。最终会生成响应给客户端又是一层层的封装TCP、IP、MAC等头部数据得到最终的数据包从网卡到交换机到路由器。。。。浏览器接收响应并渲染页面经过多个路由器转发后浏览器最终会接收到服务器返回的响应进行页面渲染展示。