郑州做网站找维诺,企业建站系统平台,wordpress选择模板没,深圳市住房和建设局住房保障服务主页文章目录 强化历程6-网络系列(2023.8.30)1 说一下OSI七层协议#xff0c;为什么要分层#xff1f;2 什么是TCP/IP协议#xff0c;与OSI七层协议两者对比#xff1f;3 什么是TCP协议#xff0c;TCP协议和UDP协议区别#xff1f;4 说一下TCP的三次握手和四次挥手5 两次握手… 文章目录 强化历程6-网络系列(2023.8.30)1 说一下OSI七层协议为什么要分层2 什么是TCP/IP协议与OSI七层协议两者对比3 什么是TCP协议TCP协议和UDP协议区别4 说一下TCP的三次握手和四次挥手5 两次握手行不行为什么6 为什么挥手的要挥四次7 全双工协议和半双工协议8 说一下TCP粘包是怎么产生的怎么解决粘包问题的9 tcp滑动窗口机制10 TCP 如何保证有效传输及拥塞控制原理11 HTTP1.01.12.0 的版本区别?12 HTTP 哪些常用的状态码及使用场景13 浏览器访问一个网址会发生什么14 说说域名解析详细过程15 在交互过程中如果数据传送完了还不想断开连接怎么办怎么维持16 HTTP 如何实现长连接在什么时候会超时17 URL编码是什么?18 什么是XSS 攻击举个例子19 简单说下 HTTPS 和 HTTP 的区别20 对称加密与非对称加密的区别21 ARP 协议的工作原理22 TCP 和 UDP 分别对应的常见应用层协议有哪些23 谈谈你对停止等待协议的理解24 什么是ARQ 协议25 什么是TIME-WAIT状态 强化历程6-网络系列(2023.8.30)
1 说一下OSI七层协议为什么要分层 答OSI七层协议是一种网络模型有物理层数据链路层网络层传输层会话层表示层应用层 这个模型的目的是为了提供一个通用的框架使得各种不同的网络技术和设备可以进行互操作。每层都有各自的功能和职责同时各层之间又通过接口相互通信。 以下是各层的主要功能 应用层为应用程序提供服务比如FTP、SMTP、HTTP等。表示层负责数据格式转换比如HTML、CSS、JPEG等。会话层建立、维护和管理会话。传输层建立和维护端到端的连接包括TCP和UDP。网络层负责数据传输线路的选择和路由选择比如IP和ICMP。数据链路层提供介质访问和链路管理比如ARP、RARP和MAC。物理层以二进制形式在物理媒介上传输数据。 分层的好处主要有以下几点 易于实现和标准化各层独立可以将大问题分解为多个小问题更容易实现和标准化。灵活性好如果某一层发生变化只要接口不变不会影响其他层。分层后用户只关心用到的应用层其他层用户可以复用。各层之间相互独立高层不需要知道底层的功能是采取硬件来实现的只需要知道通过底层的接口来获得所需要的服务。 2 什么是TCP/IP协议与OSI七层协议两者对比 答 应用层这一层负责处理特定的应用程序细节例如HTTP、FTP等协议。传输层这一层主要负责提供端到端的数据传输服务其中最主要的协议是TCP和UDP。TCP是一种可靠的传输协议它确保数据在传输过程中不丢失、不重复或无序而UDP则是一种不可靠的传输协议它不提供任何可靠性保证。网络层这一层主要负责处理网络级别的通信其中最主要的协议是IP协议。IP协议负责将数据包从一个主机发送到另一个主机它可以根据网络拓扑和路由选择最佳路径来传输数据。链路层这是最低的层次负责处理硬件级别的通信例如以太网协议。 相比之下OSI开放系统互联模型是一种网络设计和协议规范它定义了七层协议栈从高到低分别是应用层、表示层、会话层、传输层、网络层、数据链路层和物理层。OSI模型旨在提供一个通用的网络模型以便不同类型系统的互操作性。然而OSI模型在实际应用中并没有得到广泛采用而TCP/IP协议已经成为互联网的标准协议。 3 什么是TCP协议TCP协议和UDP协议区别 答TCP传输控制协议是一种面向连接的、可靠的、基于字节流的通信协议数据在传输前要建立连接传输完毕后还要断开连接。 UDP用户数据报协议是一种无连接基于数据包的通信协议它不需要在传输前建立连接也不保证数据的可靠性和顺序性。 4 说一下TCP的三次握手和四次挥手 答 序列号seq、确认号ack、同步序列号syn和结束标志fin 三次握手是指建立一个TCP连接时需要客户端和服务器总共发送3个包。SYN,ACK 第一次握手:客户端向服务端发送数据包(SYN),服务端收到。服务端知道客户端发和自己收没问题 第二次握手:服务端向客户端返回数据包(SYNACK),客户端收到。客户端知道服务端收发和自己收发没问题 第三次握手:客户端向服务端返回数据包(ACK),服务端收到。服务端知道客户端收和自己发没问题 为了保证可靠连接重要断开当然也重要所以有四次挥手。 第一次挥手:客户端向服务端发送断开信号(FIN)。 第二次挥手:服务端回答说我知道了你等会(ACK)。。。 第三次挥手:服务端说好了你断开吧(FIN)。 第四次挥手:客户端说好我断开了。(ACK) 5 两次握手行不行为什么 答如上如果只有两次握手服务端不会知道客户端能不能接收到自己的数据无法保证连接可靠 6 为什么挥手的要挥四次 答因为第二次挥手后服务端要确保自己的数据发送完毕可能出现数据传输未完成就断开连接的情况。 避免不必要的连接重置由于TCP是一个全双工协议两个方向都有数据传输。如果只进行两次挥手即客户端和服务器都只发送一个FIN报文那么会导致连接重置因为两个方向都还存在数据传输。而通过四次挥手可以等待两个方向都没有数据传输时才断开连接避免了不必要的连接重置。 7 全双工协议和半双工协议 答全双工协议是一种允许两个方向独立同时传输数据的通信方式。 半双工协议则是一种通信方式它在某一时刻只允许一个方向传输数据。 8 说一下TCP粘包是怎么产生的怎么解决粘包问题的 答TCP粘包是指当应用程序通过TCP发送数据时由于TCP的发送窗口大小和接收窗口大小不匹配以及网络状况的复杂性导致发送的数据并没有按照应用程序预期的格式被接收。 TCP 传输数据基于字节流从应用层到 TCP 传输层的多个数据包是一连串的字节流是没有边界的而且 TCP 首部并没有记录数据包的长度所以 TCP 传输数据的时候可能会发送粘包和拆包的问题 解决方法: 定长帧这是一种最简单的解决方案即规定每个数据包的长度是一定的。这样接收方每次只需读取固定长度的数据然后解析。但是这种方法的缺点是可能会浪费带宽。标志位在每个数据包的开头和结尾添加标志位如开始标志和结束标志。接收方在接收到数据后通过检查标志位来判断数据是否完整。滑动窗口协议这是一种更复杂的解决方案涉及到TCP的滑动窗口协议。具体来说发送方在发送数据时同时也告诉接收方自己的发送窗口大小。接收方根据这个信息调整自己的接收窗口大小确保每次只接收一个完整的数据包。字节流处理这种方法需要应用程序在发送数据时对数据进行适当的处理使得每个数据包都是完整的。例如可以在每个数据包的末尾添加一个校验和这样即使多个数据包粘在一起也可以通过校验和来判断数据是否完整。 9 tcp滑动窗口机制 答TCP的滑动窗口机制是一种控制数据流量和确保数据可靠传输的协议。它通过调整发送方和接收方之间的数据窗口大小来控制数据的发送和接收。 具体来说TCP的滑动窗口协议实现了以下功能 流量控制TCP的滑动窗口机制可以限制数据的发送速度以防止接收方因处理速度跟不上而造成数据丢失。接收方通过通告自己的窗口大小来控制发送方的发送速率接收方会根据网络负载和自身处理能力调整窗口大小。拥塞控制当网络出现拥塞时TCP的滑动窗口机制可以调整发送方的数据流量以减轻网络的拥塞。当接收方检测到网络拥塞时会通告发送方减小窗口大小以减少数据的发送速率。可靠传输TCP的滑动窗口机制实现了数据的可靠传输。发送方在发送数据时会根据接收方的确认ACK来确认数据是否已经被接收。如果接收方没有及时发送确认发送方会重发数据直到收到确认或者超过重传次数限制。 10 TCP 如何保证有效传输及拥塞控制原理 答TCP通过以下几种机制来保证有效传输 检验和TCP在发送数据前计算一个检验和接收方在收到数据后会再次计算检验和。如果两个检验和不一致接收方会认为数据在传输过程中发生了错误要求发送方重新发送。序列号TCP给每个字节分配一个唯一的序列号这样接收方可以按正确的顺序重新组合收到的数据。确认应答当接收方收到正确的数据时会向发送方发送一个确认应答ACK告诉发送方哪些字节已经收到。重发控制当发送方没有收到确认应答或者收到表示数据错误的确认应答时会重新发送数据。重发次数有限如果超过限制发送方 会放弃重发并通知应用层。连接管理TCP通过三次握手3-way handshake来建立连接通过四次挥手4-way handshake来关闭连接。这可以确保双方都清楚连接的状态。窗口控制TCP使用滑动窗口机制来控制发送方可以发送的数据量。窗口大小是接收方告诉发送方的已准备好接收的字节的数量。 慢开始和拥塞避免在发送方维护一个拥塞窗口cwnd大小等于发送窗口通过出现了超时来判断网络出现拥塞。慢开始的思路是一开始发送方发送一个字节在收到接收方的确认后发送的字节数量增大一倍也就是按照指数增长的速率从小到大逐步增大cwnd直到cwnd达到慢开始门限ssthresh。当cwnd ssthresh时使用慢开始算法当cwnd ssthresh时可以使用慢开始算法也可以使用拥塞避免算法当cwnd ssthresh时使用拥塞避免算法。拥塞避免算法思路是增长速率变为线性增长也就是每经过一个往返时间RTT就把发送方的cwnd加1。 快重传和快恢复快重传算法是当接收方收到一个失序的报文段后就立即发出重复确认这样可以迫使发送方早些重传失序的报文段。快恢复算法是当发送方收到三个重复的确认就执行快恢复算法而不是等待出现超时才能进行判断网络出现拥塞。快恢复的思路是先把cwnd减小一些然后转入拥塞避免算法。 11 HTTP1.01.12.0 的版本区别? 答 HTTP1.0HTTP1.1HTTP2.0TCP连接每次请求都建立新的TCP连接支持同一TCP连接发送多个请求用二进制协议支持同一TCP连接并发处理多个请求和响应缓存处理HTML标记实现缓存控制用二进制格式支持更多的缓存控制策略。网络连接优化断点续传多路复用减少连接建立和关闭的开销管道化请求不支持管道化请求只有在收到上一个请求的响应后才能发送下一个请求支持管道化请求可以在同一TCP连接内同时发送多个请求Host头处理在请求头中包含Host信息请求头中不再包含host信息而是将其移到了帧的流标识符部分。头部压缩使用HPACK算法对请求头进行压缩减少需要传输的数据量提高传输速度想· 12 HTTP 哪些常用的状态码及使用场景 答 200 OK请求成功用于表示正常的响应。201 Created请求成功并且创建了新的资源。202 Accepted请求已接收但未处理完毕。204 No Content请求成功但无内容返回。301 Moved Permanently请求的资源已被永久重定向到新的URL。302 Found请求的资源临时重定向到新的URL。304 Not Modified请求的资源未修改可以使用缓存。400 Bad Request请求格式错误。401 Unauthorized请求需要身份验证。403 Forbidden请求被拒绝。404 Not Found请求的资源未找到。500 Internal Server Error服务器内部错误。501 Not Implemented服务器不支持请求的方法。502 Bad Gateway服务器作为网关时收到无效的响应。503 Service Unavailable服务器无法处理请求。504 Gateway Timeout网关未在规定时间内收到响应。 13 浏览器访问一个网址会发生什么 答 浏览器根据输入的URL进行DNS解析以找到对应的IP地址。这包括检查浏览器缓存、系统缓存和路由器缓存以及向DNS服务器发送请求。浏览器与找到的IP地址建立TCP连接这是通过三次握手过程完成的。一旦连接建立浏览器将向Web服务器发送HTTP请求例如GET请求。服务器收到请求后会处理请求并发送响应这可能包括HTML、CSS、JavaScript和其他类型的数据。浏览器接收到响应后会解析并渲染HTML和CSS以便用户可以看到页面。浏览器还会与服务器保持连接以获取可能在未来需要的数据如页面上的动态内容。 14 说说域名解析详细过程 答域名解析是域名到IP地址的转换过程可以包括以下步骤 浏览器搜索自己的DNS缓存看是否已经有对应的域名。如果DNS缓存中没有找到浏览器会搜索操作系统中的DNS缓存如内存中的DNS缓存或者本地的hosts文件。如果仍然没有找到浏览器会使用递归查询的方式查询本地域名解析服务器。本地域名解析服务器可以手动设置未设置则使用路由器中本地DNS地址。本地域名服务器采用迭代查询的方式向根域名服务器查找根域名服务器返回com域的顶级域名服务器的地址。本地域名服务器向com域的顶级域名服务器发送请求com域的顶级域名服务器返回下一级的域名服务器的地址。本地域名服务器向下一级的域名服务器发送请求下一级的域名服务器返回负责该域名的权威域名服务器的地址。本地域名服务器向权威域名服务器发送请求权威域名服务器返回该域名的IP地址。本地域名服务器将IP地址返回给浏览器同时自己也将IP地址缓存起来。 如果本地域名解析服务器无法找到对应的IP地址则会向根域名服务器或其他上级域名服务器发送请求直到找到对应的IP地址。 15 在交互过程中如果数据传送完了还不想断开连接怎么办怎么维持 答 保持心跳在应用层面上可以设定一个心跳机制即每隔一段时间客户端向服务器发送一个心跳包表示客户端还在连接状态。服务器在收到心跳包后可以回复一个确认包以表示连接仍然有效。如果服务器长时间未收到心跳包可以认为客户端已经断开连接从而释放资源。数据交换如果客户端和服务器之间有数据需要持续交换可以设置一个数据交换机制。例如客户端向服务器发送一个请求服务器在处理完请求后可以等待一段时间等待客户端的回复。如果客户端在规定的时间内回复了数据那么服务器可以继续处理下一个请求。如果服务器在规定的时间内未收到客户端的回复可以认为客户端已经断开连接。长轮询长轮询是一种实现实时通信的技术它可以让客户端在一段时间内保持连接状态等待服务器发送数据。当服务器有新的数据时可以向客户端发送数据然后等待客户端的回复。如果客户端在规定的时间内回复了数据那么服务器可以继续等待下一个数据。如果服务器在规定的时间内未收到客户端的回复可以认为客户端已经断开连接。WebSocketWebSocket是一种实现双向通信的技术它可以让客户端和服务器之间建立持久连接并实现实时通信。WebSocket可以在HTTP协议的基础上进行通信因此它可以很好地兼容现有的Web应用。 16 HTTP 如何实现长连接在什么时候会超时 答 HTTP/1.1 引入了长连接的概念可以重用现有的连接而不是每次请求都建立新的连接。 实现长连接的基本方法是设置 HTTP 头部字段 “Connection: keep-alive”。当客户端发送带有此头部字段的请求时如果服务器能够支持持久连接它将在响应中包含相同的头部字段并保持连接开启等待客户端的下一个请求。 然而长连接并不是永远保持的。它们通常在以下情况下超时 超时时间Timeout设置服务器和客户端可能都有设置超时时间的机制。如果服务器或客户端在指定的时间内没有收到任何数据连接可能会被关闭。这个超时时间可能会在服务器的配置文件或应用程序代码中设置。保持活动数据流为了保持长连接活跃客户端需要定期发送数据。如果客户端长时间没有发送任何数据服务器可能会认为连接已经断开并关闭它。同样如果服务器长时间没有收到任何数据它可能会选择关闭连接。网络问题如果网络出现故障或不稳定可能导致连接断开。在这种情况下连接可能会在重新建立连接之前超时。 17 URL编码是什么? 答URL编码是一种将特殊字符转换为URL可接受格式的编码方式。它主要用于将表单数据作为URL参数发送到服务器。URL编码将所有字符转换为有效的URL字符集中的字符以确保数据在URL中传输时不会被误解或误处理。例如空格被编码为%20而不是普通的空格以避免在URL中产生混淆。 18 什么是XSS 攻击举个例子 XSS攻击Cross Site Scripting是一种网络安全漏洞攻击者可以利用该漏洞向受害者的网页注入恶意代码并获取受害者的敏感信息。XSS攻击的重点在于跨站即攻击者通过构造恶意的网页诱导受害者点击或访问该网页从而执行攻击者所构造的脚本。 下面是一个简单的XSS攻击的例子 假设你有一个网站用户可以在该网站上发布评论。当其他用户查看这些评论时他们会在他们的浏览器中看到这些评论。攻击者可以发布一个包含恶意脚本的评论当其他用户查看该评论时脚本就会在用户的浏览器中执行。 例如攻击者可以发布以下评论 script alert(Hello, XSS!);
/script当其他用户查看该评论时浏览器会自动执行该脚本弹出一个包含“Hello, XSS!”的警告框。 攻击者可以利用这个漏洞来执行更复杂的恶意操作比如窃取用户的敏感信息如cookie、用户名和密码等操纵用户的浏览器行为或者利用浏览器中的漏洞执行其他恶意操作。 为了防止XSS攻击我们需要对用户输入的参数进行严格的校验和转义同时对返回的数据进行相应的处理确保数据的安全性。 19 简单说下 HTTPS 和 HTTP 的区别 答 证书费用HTTPS需要向CA证书颁发机构申请证书一般免费证书较少因此需要一定费用。而HTTP不需要证书。安全性HTTPS是具有安全性的SSL加密传输协议比HTTP协议更安全。连接方式HTTP和HTTPS使用的是完全不同的连接方式用的端口也不一样前者是80后者是443。 20 对称加密与非对称加密的区别 答 对称加密和非对称加密主要在密钥、加密和解密过程以及安全性和性能方面有显著区别。 密钥 对称加密只有一个密钥既用于加密又用于解密如AES。非对称加密有两个密钥一个用于加密公钥另一个用于解密私钥如RSA。 加密和解密过程 对称加密加密和解密使用同一个密钥因此加密和解密速度较快但安全性相对较低因为密钥可能会在传输过程中被截获。非对称加密加密使用公钥解密使用私钥因此加密和解密速度较慢但安全性较高因为私钥在传输过程中需要进行加密保护不容易被截获。 安全性和性能 对称加密安全性相对较低因为密钥可能会被截获。同时由于加密和解密使用同一个密钥所以需要在安全环境下保存该密钥管理和保护成本较高。另外对称加密算法的破解难度相对较低对于大量数据的加密解密效率不高。非对称加密安全性较高因为私钥无法从公钥中推导出来所以即使公钥被截获也不能解密已经加密的数据。同时由于非对称加密使用的两个密钥公钥和私钥可以进行相互验证因此提供了更高的安全性。但是由于非对称加密算法的复杂性破解难度相对较高对于大量数据的加密解密效率也不如对称加密。 21 ARP 协议的工作原理 答ARP协议Address Resolution Protocol是一种网络协议用于将IP地址转换为MAC地址。其工作原理如下 每台主机都会在自己的ARP缓冲区ARP Cache中建立一个ARP列表以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包发送到目的主机时会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址。如果存在就直接将数据包发送到这个MAC地址如果不存在就向本地网段发起一个ARP请求的广播包查询此目的主机对应的MAC地址。网络中所有的主机收到这个ARP请求后会检查数据包中的目的IP是否和自己的IP地址一致。如果源主机一直没有收到ARP响应数据包表示ARP查询失败。源主机收到这个ARP响应数据包后将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中并利用此信息开始数据的传输。 如果源主机一直没有收到ARP响应数据包表示ARP查询失败。 22 TCP 和 UDP 分别对应的常见应用层协议有哪些 答: TCP HTTP这是最常见的基于TCP的应用层协议用于在Web浏览器和Web服务器之间进行通信。HTTPS这是安全的HTTP协议通过TCP连接在Web浏览器和Web服务器之间进行通信。FTP文件传输协议File Transfer ProtocolFTP也使用TCP。Telnet这是一种简单的远程登录协议使用TCP。SMTP简单邮件传输协议Simple Mail Transfer ProtocolSMTP用于电子邮件的传输它也使用TCP。POP3邮局协议版本3Post Office Protocol 3用于接收电子邮件它也使用TCP。IMAP互联网消息访问协议Internet Message Access ProtocolIMAP用于访问电子邮件它也使用TCP。SSH安全外壳协议Secure ShellSSH用于远程登录和远程执行命令它也使用TCP。 UDP DNS域名系统Domain Name SystemDNS用于将域名转换为IP地址它使用UDP。NTP网络时间协议Network Time ProtocolNTP用于网络时间同步它使用UDP。TFTP简单文件传输协议Trivial File Transfer ProtocolTFTP用于文件传输它使用UDP。SNMP简单网络管理协议Simple Network Management ProtocolSNMP用于网络设备管理和监控它使用UDP。DHCP动态主机配置协议Dynamic Host Configuration ProtocolDHCP用于自动分配IP和其他网络配置参数它使用UDP。VoIP语音传输协议如SIP和RTP通常使用UDP进行实时通信。Video Streaming视频流服务如RTSP和HLS通常使用UDP。Instant Messaging一些即时消息服务如XMPP和Jabber通常使用UDP 23 谈谈你对停止等待协议的理解 答停止等待协议是一种简单的自动重传请求ARQ协议用于在通信系统中保证数据可靠传输。它主要应用于两个相互通信的设备之间以确保数据不因丢包或包乱序而丢失。 该协议的关键特点如下 发送方在发送完一个数据帧后会暂时保留这个数据帧的副本等待接收方的确认。接收方在接收到数据帧后会与本地的接收状态进行比较确认是否为新的数据帧。如果是新的数据帧接收方会发送确认并丢弃重复收到的数据帧否则接收方会丢弃重复收到的数据帧但仍需向发送方发送确认。如果发送方在一段时间内未收到确认它会重传上一次未确认的数据帧。这个时间间隔被称为超时时间。 24 什么是ARQ 协议 答ARQ协议即自动重传请求Automatic Repeat-reQuest是一种错误纠正协议属于OSI模型中的数据链路层和传输层。它通过使用确认和重传这两个机制在不可靠服务的基础上实现可靠的信息传输。 具体来说ARQ协议的工作方式是接收方在收到发送方发送的数据后会发送一个确认帧ACK给发送方表示已经成功接收到了数据。如果发送方在一段时间内没有收到确认帧它会认为数据传输失败并自动重发该数据。 ARQ协议包括停止等待ARQ协议和连续ARQ协议。停止等待ARQ协议是最简单的ARQ协议每次发送完一个数据后都会停下来等待接收方的确认然后再决定是否发送下一个数据。而连续ARQ协议则可以连续发送多个数据无需等待确认从而提高了传输效率。 总之ARQ协议通过自动重传机制来纠正传输错误确保数据的可靠传输。 25 什么是TIME-WAIT状态 答 TIME-WAIT状态是TCP传输控制协议的一种状态表示TCP连接在完成数据传输后进入的一种状态。在TIME-WAIT状态中连接会保持一段时间通常是两个MSLMaximum Segment Lifetime最大报文段寿命的时间等待旧的报文段消失。 TIME-WAIT状态的作用主要有以下几点 确保最后一个确认报文段已经离开源端避免由于网络问题导致的重复报文段。防止旧的TCP连接和新的TCP连接同时存在避免数据包错误地发送给目标端。在双向连接中如果一方在连接关闭后立即重启连接而另一方仍然处于TIME-WAIT状态那么新的连接请求将被拒绝。 TIME-WAIT状态是TCP协议的一个重要组成部分它可以确保数据传输的可靠性和准确性。