![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
一百道计算机网络面试题
极客李华
CSDN,阿里社区内容合伙人、系统分析师、全网20万粉丝的技术博主,交流合作私信+。欢迎技术交流。
展开
-
TCP粘包问题与解决方案详解及Java代码演示
然而,在实际应用中,TCP协议可能会遇到粘包问题,这是由于TCP协议特性导致的,而不是协议本身的缺陷。TCP粘包问题主要表现为接收方收到的数据包含了多个发送方发送的消息,或者一个消息被分成多个数据包发送。消息定长是一种简单的解决方案,即每个消息的长度固定,接收方根据固定的长度来划分消息。在消息头中添加表示消息长度的字段,接收方先读取消息头的长度信息,然后根据长度信息读取消息内容。Nagle算法的目的是减少小分组的发送次数,提高网络传输的效率,但这也可能导致多个小包被合并成一个大包发送,从而引发粘包问题。原创 2023-11-25 22:10:24 · 360 阅读 · 0 评论 -
面试题:说下ping的原理
计算网络延迟时间(RTT):客户端接收到目标主机响应报文后,计算往返时间 RTT(Round-Trip Time),即从发出ICMP请求报文到接收到目标主机的 ICMP 响应报文所需要的时间,并且统计节点的丢包率,并将结果显示给用户。向目标主机发送 ICMP 请求报文:当我们在本地主机上执行 ping 命令时,系统将发送一个 ICMP 报文给目标主机,通过设置报文头部,包括类型码(查询请求或者差错信息等)、校验和、标识、序列号等参数。响应报文的格式和 ICMP 请求报文相同,但类型码被设置为“响应”。原创 2023-06-11 00:37:47 · 313 阅读 · 0 评论 -
面试题:什么是空 Referer,什么时候会出现空 Referer?
通常情况下,当用户直接在浏览器地址栏中输入 URL 或通过书签或外部链接等方式访问网站时,由于没有跳转来源页面,因此Referrer被设置为空。需要注意的是,对于某些高安全级别的站点(如银行、商业),管理员可能会限制请求头中 Referrer 的内容或者强制使用 HTTPS 协议,并且只允许同源站点能够获取相关信息。空 Referrer 可以用于某些攻击手段,如 CSS 攻击、URL 记录和统计等,同时也可以用于隐私保护,降低定向广告的精度分析和重复点击猪仔的威胁。原创 2023-06-11 00:37:51 · 2020 阅读 · 0 评论 -
面试题:什么是 Referer?
一般情况下,当一个用户浏览器访问一个页面时,请求头会包含 Referer 字段,告诉服务器用户从哪个网页跳转过来。例如,如果一个网站有引用一张图片,那么就需要检查该图片的 Referer 字段,只有在特定的来源页面中才允许访问。同样的,防火墙也可以使用 Referer 来辨别恶意请求和安全访问服务的请求来源等。需要注意的是,Referer 的敏感性较高,因为它可能泄露用户隐私和受到攻击者的利用,比如防止 CSRF 攻击,即攻击者可以通过篡改 HTML 中的表单提交地址,寻找可利用并导致目标应用程序漏洞等。原创 2023-06-11 00:38:16 · 955 阅读 · 0 评论 -
面试题:防盗链
防盗链(Referer Anti-Leech)是一种保护图片、音频、视频等静态媒体资源受盗取的方式,通过服务器端对请求进行检查,当请求来源不在白名单列表中时返回特定的响应内容或禁止访问。此外,还有一些其他的防范工具和技术,如切断危险域名,优化媒体资源格式,动态生成 CDN 路径等均可以辅助提升防盗链的能力。总之,防盗链技术可以为网站提供更好的内容保护和授权管理,必不可少。原创 2023-06-11 00:36:13 · 66 阅读 · 0 评论 -
面试题:什么是XSS攻击?
XSS(Cross-site Scripting)攻击是一种常见的网络安全漏洞,可以使攻击者在受害者的浏览器上执行恶意脚本,从而窃取下层网站或 web 应用的敏感信息。反射型 XSS:攻击者将恶意代码插入 URL 中,用户点击包含攻击代码的 URL 后,浏览器将联合攻击代码进行执行,在用户的浏览器和应用系统之间建立了一个通道,盗取敏感信息。存储型 XSS:攻击者将恶意代码注入数据库中,目标用户直接从被污染的服务器获取可能已经被篡改的信息,所有访问到这个服务器上的用户都将会受到攻击,非常危险。原创 2023-06-11 00:36:29 · 178 阅读 · 0 评论 -
面试题:什么是CSRF攻击,如何避免
明确数据范围:在使用HTTP协议进行请求时,为了防止 Cross-site Request,需要在 HTTP 请求头中加入一个随机的 token 作为校验码,在服务端比较 token 值与 cookie 中存储的值是否相同,若不同则拒绝请求。综上所述,为了防止CSRF攻击,我们应该养成使用 HttpOnly 属性的 cookie 以及在cookie中存储数据范围及请求随机 token 的良好习惯,此外合适地设计url结构来限制用户表单提交也是一种有效方法。原创 2023-06-11 00:36:56 · 230 阅读 · 0 评论 -
面试题:什么是DoS、DDoS、DRDoS攻击?
DDoS 攻击是指攻击发起方利用许多数以千计的计算机或网络设备向同一目标系统发动攻击,分散了攻击的来源,特别难以阻挡,同时攻击的威力非常大。DRDoS 攻击是 DDoS 的一种变体,其利用反射放大攻击技术, 利用未经配置的支持 UPnP、DNS、SNMP 等协议的服务器的开放端口,向目标服务器发起大量数据流量请求。举个例子,攻击者使用木马病毒感染了大量用户的电脑,在需要发动攻击时通过命令控制众多肉鸡发送攻击流量,将目标服务器的带宽压力加大,最终使目标服务器无法快速处理用户请求而崩溃。原创 2023-06-11 00:38:21 · 486 阅读 · 0 评论 -
面试题:ICMP协议的功能
Ping 是基于 ICMP 传输数据的,主机A 发送 ICMP ECHO_REQUEST 报文包含时间戳至 主机B 服务器上,主机B 接收到后返回 ICMP ECHO_REPLY 报文,这样主机 A 就能得知两台主机之间的延迟时间和传输速率等信息。ICMP 可以帮助诊断计算机或端口在通信过程中出现的错误,并向发送方发送错误信息。综上所述,ICMP 协议是 Internet 协议族中的一个子协议,为网络通信提供了差错处理和控制信息等功能,可用于错误报文传递、活动性测试以及提供QoS服务。原创 2023-06-11 00:38:34 · 559 阅读 · 0 评论 -
面试题:ARP协议的工作过程?
简单来说,ARP 协议通过发送广播请求,让局域网内的每个主机都能获取到目标主机的 IP 地址,进而向目标主机请求其 MAC 地址。通过这个过程,主机 A 能够成功地将 IP 地址映射到 MAC 地址并开始网络通信。需要注意的是,ARP 缓存表中存储了 IP 地址与 MAC 地址之间的映射关系,为避免 ARP 缓存被恶意攻击修改,通常需要启用 ARP 防护措施,如静态 ARP 表、动态 ARP 检测等技术。原创 2023-06-11 00:36:48 · 527 阅读 · 0 评论 -
面试题:说说 WebSocket与socket的区别
WebSocket 可以直接使用 HTTP 的握手交换数据,通过一个套接字(socket)实现全双工通信,适用于 Web 端与服务器端进行实时数据传输,如即时消息通知、在线聊天等场景。运行方式:WebSocket 使用单一 TCP 连接来进行传输,由浏览器发起,在收到响应后保持长连接,从而使服务器可以主动向客户端推送信息;综上所述,WebSocket 与 Socket 在运行方式、实现机制和应用场景等方面存在较大差异,需根据业务需求及技术特点选择合适的通信方式。原创 2023-06-12 11:31:27 · 1897 阅读 · 0 评论 -
面试题:什么是对称加密和非对称加密?
在对称加密过程中,发送者和接收者之间必须共享相同的密钥,这样发送者可以使用该密钥加密消息,而接收者则使用相同的密钥解密接收到的消息。非对称加密也称为公私钥加密,使用不同的密钥进行加密和解密。在非对称加密过程中,发送者使用接收者的公钥进行加密,接收者再使用自己的私钥进行解密。接下来,Alice 使用 Bob 的公钥对消息进行加密并发送,只有 Bob 才能使用自己的私钥解密信息。Alice 使用协商好的密钥对信息进行加密,然后将其发送给 Bob,Bob再使用相同的密钥进行解密。原创 2023-06-12 12:27:31 · 230 阅读 · 0 评论 -
面试题:什么是cookie和session?
网站可以通过在 HTTP 响应报文中添加 Set-Cookie 头信息来告知浏览器需要存储的 cookie 内容,之后浏览器会自动将对应的 cookie 存储在用户的本地计算机上。总之,Cookie 和 Session 都是常见的 Web 认证和状态管理方式,在具体使用时需注意其安全性和有效期限,以保证服务的正常运行。Cookie 和 Session 是两种常见的 Web 认证和状态管理方式,它们分别是客户端存储和服务器端存储数据的解决方案。原创 2023-06-11 00:38:26 · 102 阅读 · 0 评论 -
面试题:浏览器中输入URL返回页面过程?
总之,浏览器输入 URL 返回页面过程涉及到多个协议和技术,如 DNS 解析、HTTP(S) 协议、TCP/IP 协议等,在每一步都需要保证高效、可靠和安全的数据传输。解析渲染页面:客户端使用 HTML 页面代码、CSS 样式表和 JavaScript 程序,按照 W3C 的标准对页面进行解析处理和渲染,生成用户可视化的网页。服务器响应:服务器收到请求后,生成 HTTP 响应报文,由响应状态行、响应头部和响应正文组成。URL 解析:浏览器对输入的 URL 进行解析,分析出协议、主机名、端口号、路径等信息。原创 2023-06-12 12:27:50 · 181 阅读 · 0 评论 -
面试题:DNS 的解析过程?
本地 DNS 查询:如果该 URL 不在本地 DNS 缓存中,则向运营商的 DNS 发送查询请求。权威 DNS 返回结果:权威 DNS 返回所查询的IP地址等映射信息(也有可能返回错误消息或者没有返回结果),同时本地 DNS 具有缓存功能,可以将获取到的域名信息保存在本地缓存中,以供后续使用。权威 DNS 查询:当本地 DNS 找到负责这个域名的权威 DNS 后,会向权威 DNS 服务器发送一个查询请求,查询域名对应的 IP 地址等映射信息。原创 2023-06-12 12:29:21 · 384 阅读 · 0 评论 -
面试题:HTTPS原理
对称密钥加密方式使用会话密钥进行数据加解密,提升效率。数据通信阶段:客户端使用会话密钥对数据进行加密后发送给服务器,服务器使用相同的会话密钥进行解密并处理请求,然后将响应数据再使用会话密钥进行加密传输给客户端。总之,HTTPS 通过采用 SSL/TLS 协议建立安全通道,实现了对 HTTP 通信的加密传输和信息认证,有效保障网络数据的安全性、完整性和私密性。密钥生成阶段:如果服务器证书验证合格,客户端使用服务器公钥加密会话密钥,服务器收到并使用自己的私钥解密,获得会话密钥。原创 2023-06-12 12:29:25 · 105 阅读 · 0 评论 -
面试题:什么是数字证书?
以 HTTPS (HyperText Transfer Protocol Secure)协议为例,在建立 TLS/SSL 加密连接时,服务器会向客户端发送数字证书,确保正在连接的服务器是真正的指定服务器,而不是仿冒的中间人服务器。数字证书由第三方权威机构(Certification Authority,简称 CA机构)颁发,包含了网站域名或公钥的信息、证书颁发者等重要信息,并使用相关加密协议对这些数据进行签名和加密。通过数字证书验证,能够保证通信双方是合法的,防止中间人攻击等安全威胁。原创 2023-06-12 12:29:30 · 88 阅读 · 0 评论 -
面试题:HTTPS与HTTP的区别?
总而言之,HTTPS 在数据传输上具有更高的安全性和隐私保护性,但相应地会增加一些传输负荷和成本,需要在实际情况下根据系统需求和性能要求进行权衡。证书验证:作为一种安全通信协议,HTTPS 对网站的身份也有严格的要求,需要由第三方机构颁发数字证书,从而验证服务器是不是真正拥有该域名,确保用户访问到的是受信赖的、合法的真实网站,并且能够有效抵御中间人攻击。性能:HTTPS 增加了加密解密过程,会增加一定的处理延迟和资源消耗,会稍微降低一些网页的加载速度。原创 2023-06-12 12:29:54 · 155 阅读 · 0 评论 -
面试题:HTTP1.1和 HTTP2.0的区别?
总之,相比 HTTP/1.1,HTTP/2.0 在性能、安全和错误处理等方面有了巨大的提升。对于开发者而言,需要注意的是,在使用 HTTP/1.1 时可以通过优化头部信息减少请求次数、合理使用缓存机制、采用 CDN 等方式改善性能;而在使用 HTTP/2.0 时需要增加 TLS 的支持和对二进制帧格式的掌握等技术手段,以实现更卓越的性能体验。性能:HTTP/2.0 采用二进制协议帧,提高了多路复用,即同一个 TCP 连接可以发送多个请求和响应,减少连接和建立时间。原创 2023-06-12 12:30:07 · 264 阅读 · 0 评论 -
面试题:HTTP长连接在什么时候会超时?
Nginx 可以通过keepalive_timeout设置。合理设置 HTTP 长连接的超时时间,可以更好地平衡服务器资源和性能,提高用户体验。其他安全因素和策略限制:为了防止有恶意用户占用资源耗费系统性能,服务器常设定一些限制,例如最大连接数、请求速率控制等,这些也会影响长连接的使用和超时情况。服务器过载:长时间处于高并发请求状态下,可能导致服务器资源无法满足全部的连接请求,此时服务器也会强制结束已建立的连接。客户端关闭连接:如果客户端关闭了连接,此时服务器不会继续保持连接状态,连接相应超时关闭。原创 2023-06-12 12:28:36 · 197 阅读 · 0 评论 -
面试题:HTTP 如何实现长连接?
例如,可以通过Gzip或Deflate等算法对HTTP消息体进行压缩,然后传输到服务器或浏览器端,这样可以大大降低数据的传输量,提高系统性能。使用持久化连接时,对于同一个服务端,多个请求可以共用一个连接,在服务器返回响应后,不关闭连接,等待下一次请求直到连接超时或被显式断开。总之,在实际应用中采用长连接可以避免频繁地建立和关闭连接而浪费资源,提升系统性能和用户体验。但是,需要注意的是,实现长连接也存在一些问题和风险,如连接空闲时间过长导致占用系统资源、DoS攻击等问题,需要根据具体情况进行权衡和选择。原创 2023-06-12 12:28:14 · 1545 阅读 · 0 评论 -
面试题:HTTP长连接和短连接?
长连接:指客户端和服务器之间建立一个 TCP 连接,使多个 HTTP 请求/响应可以复用一个连接,直到连接被关闭或达到预先设定的时间上限。而且,在实际应用中,不同的 Web 请求通常会关联一起,如页面中的图片、CSS、JS 等静态资源,它们可以在同一个连续的请求链中实现载入,节省了建立连接以及断开连接的时间,提高了网站性能。对于一些低负载的web应用程序来说,短连接已经足够了,但对于高负载、高流量的Web应用程序,为了提高性能和资源利用率,更加推荐使用长连接模式。原创 2023-06-12 12:28:32 · 118 阅读 · 0 评论 -
面试题:如何理解HTTP协议是无状态的
HTTP 无状态的优势就是可扩展性,因为服务器不需要维护客户端的上下文,服务器在请求到达时只需根据当前请求所提供的所有信息执行相关操作即可。例如,当我们在浏览器中访问某个网站时,浏览器向服务器发送HTTP请求来获取资源,在处理完请求之后,服务器返回给浏览器所请求资源的内容,并关闭连接,与此同时,服务器并没有保留是否有其他请求等数据。简单来说,每个 HTTP 请求是相互独立的,服务器处理完一个请求并发送回响应后,不会保留任何关于该请求的信息。原创 2023-06-12 12:28:41 · 270 阅读 · 0 评论 -
面试题:URI和URL的区别
例如,“https://www.example.com/products/shoes.html”就是一个常见的 URL,其中,“https”是协议,“www.example.com”是域名,“products”是路径,“shoes.html”则是位于该路径中的具体资源名。总之,URI 和 URL 均用于标识互联网上的资源,但两者区别显著,URI 旨在用于标识信息资源的位置或名称,URL 则提供了获取特定资源的完整路径。例如,对于某一台服务器上传的图片,可以通过固定的URl来访问。原创 2023-06-12 12:30:48 · 112 阅读 · 0 评论 -
面试题:POST和GET的区别?
总之,GET 和 POST 是 HTTP 协议中最基本的两个请求方法,GET 方式适用于数据量小、安全性要求不高的请求,而 POST 方式适用于数据量较大、安全性要求较高的请求。例如,我们在使用搜索引擎进行搜索时,通常通过 GET 请求方式将搜索关键字包含在 URL 中,而在提交表单或上传文件时,则使用 POST 请求方式将数据打包到实体数据部分中。缓存机制:GET 请求方式支持浏览器缓存机制,再次请求时可以从缓存中提取,能够提高页面加载效率,并减轻服务器压力。POST 请求方式无法被浏览器缓存。原创 2023-06-12 12:28:58 · 126 阅读 · 0 评论 -
面试题:HTTP状态码301和302的区别?
301状态码:表示永久移动,让客户端请求的资源在未来指向新的URL,且为了避免搜索引擎等数据错误,应该使用301来告知浏览器直接自动访问新URL。换句话说,当服务器返回301状态码时,意味着所请求的静态资源已被永久性地转移到新的 URL 地址,并且一般情况下,浏览器会自动重定向到新的地址。302状态码:表示临时移动或者重定向,与301状态码相比,302状态码的效果不同,表明重定向请求是暂时性的,要求客户端定期重新检查原始地址。因此,301状态码适合进行永久性的跳转,例如网站更改域名、更改目录结构等等;原创 2023-06-12 12:31:01 · 2337 阅读 · 0 评论 -
面试题:HTTP 协议包括哪些请求?
以上是 HTTP 协议中常见的请求方法,除了上述请求方法外,在实际应用中还有许多其他请求方法的扩展,如 PROPFIND、OPTIONS、PATCH 等都是常见扩展请求方法。GET:该方法是 HTTP 协议中最常见、使用最为广泛的一种请求方法,通常用于向服务器获取资源。HEAD:该方法与 GET 方法类似,但不同之处在于,服务器不会返回响应内容,而只会返回请求头信息。POST:该方法通常用于提交表单等数据到服务器,相对于 GET 等请求方法,POST 方法能够传输更多的数据量,并且不受 URL 长度限制。原创 2023-06-12 12:29:08 · 292 阅读 · 0 评论 -
面试题:HTTP状态码有哪些?
以上是 HTTP 状态码的常见规定,当然在实际的应用场景中,HTTP 所定义的状态码还有非常多的扩展,例如新的网络技术发展或者特定的业务需求等。正确理解和处理各种状态码可以帮助开发者更加清楚地了解服务器响应和客户端请求的处理结果,以便需要时对其进行调整和优化,提高应用程序的稳定性和可靠性。HTTP(Hyper Text Transfer Protocol)状态码是在 HTTP 协议中,用于表示服务器响应和客户端请求的结果是否成功的标识,主要分为 1xx、2xx、3xx、4xx、5xx 五类。原创 2023-06-12 12:29:12 · 108 阅读 · 0 评论 -
面试题:HTTP报文格式
其中,“”和“”分别表示 HTTP 协议的版本号和状态码的描述性短语;“”则表示服务器处理后的状态码,例如 200 表示成功,400 表示客户端错误,500 表示服务器错误等;“”为响应头,包括了响应的详细信息,例如 Content-Type、Content-Length、Last-Modified 等;“”表示 HTTP 协议的版本号,常用的有 HTTP/1.0 和 HTTP/1.1;“”表示请求头,包含了请求的详细信息,例如 User-Agent、Host、Content-Type等;原创 2023-06-12 12:31:06 · 60 阅读 · 0 评论 -
面试题:HTTP协议的特点?
因此,在 HTTP/1.1 和 HTTP/2.0 版本中,都提供了非常完善的扩展机制,使其能够应对新的技术、应用场景和安全需求。综上所述,HTTP 协议是一种简单易用、灵活可靠、支持多种数据传输模式以及具有较强扩展性等特点的协议,已经广泛地应用于 World Wide Web 中,并成为了当前互联网最重要的协议之一。基于请求和响应模型:HTTP 的请求和响应模型是其最基本的工作模式,客户端向服务器发送请求消息,服务器则以响应消息作为回应。通过这种方式,HTTP 实现客户端和服务器之间的数据交互。原创 2023-06-14 15:49:52 · 88 阅读 · 0 评论 -
面试题:详细讲一下拥塞控制?
慢启动(Slow Start):在建立连接后,发送方不会立即发送大量数据,而是先发送一个数据包,如果收到了确认应答消息,那么就再发送两个数据包,然后四个、八个,以此类推。快速恢复(Fast Recovery):如果发送方收到了重复的确认应答消息,说明有些数据包已经丢失了,此时发送方可以通过快速恢复的方式,仅向接收方重新发送丢失的数据包,而不是全部重发。如果发送方持续发送大量数据包,而网络容量无法承载这样的流量,就会造成网络拥塞,此时发送方需要减少发送数据的量,从而防止拥塞继续加剧。原创 2023-06-12 12:29:32 · 159 阅读 · 0 评论 -
面试题:说说TCP是如何确保可靠性的呢?
客户端收到数据包后,如果序号有误或者缺少某个数据包,它会向服务器发送一个重传请求,服务器会重新发送丢失的数据包,从而保证了数据的可靠性。超时重传机制:TCP 保持一个计时器,如果在预设的时间内没有接收到确认应答,则重新发送相同的数据包,并重新启动计时器,能够做到在任何情况下都能保证每个数据包被正确地传送。同时也会发生加倍超时重传。序号和确认应答:TCP 把每个发送出去的数据包都编号并存储在缓存区中,接收方收到数据后会向发送方发送一个确认应答,指出已经正确接收这些数据,从而实现数据包的可靠传输。原创 2023-06-12 12:29:36 · 117 阅读 · 0 评论 -
面试题:TCP的粘包和拆包
例如,发送方向接收方传输了一个很长的字符串,但由于网络阻塞等原因并未调度到足够的缓存空间,发送方就会选择对该消息进行拆字节包传输,在接收端接收到每个字节数后,复原消息进行处理。使用固定长度的数据包:通过在每个数据包的开头或结尾添加标记,例如指定每个包的固定大小或以类似于 “\r\n” 的特殊字符作为分隔符,来划定数据包范围,避免拆包和粘包的问题。总之,TCP 的粘包和拆包问题是网络通信中常见的问题,需要根据具体情况选择合适的解决方案来进行控制,并严格按照协议规定进行传输。原创 2023-06-14 15:49:57 · 254 阅读 · 0 评论 -
面试题:TCP 和 UDP 分别对应的常见应用层协议有哪些?
SNMP(Simple Network Management Protocol):SNMP 主要用于管理和监测网络设备等,它工作在 UDP 端口号为 161 和 162 的基础上,在 SHDN之上开展添加额外的安全功能来强化安全控制。HTTPS(Hyper Text Transfer Protocol Secure):HTTPS 类似于 HTTP 协议,但使用安全套接字层协议(SSL/TLS)对数据进行加密,从而保护数据的安全性。TCP 是一种面向连接的协议,通常用于数据传输至关重要的应用程序。原创 2023-06-14 15:48:19 · 2251 阅读 · 0 评论 -
面试题:说说TCP报文首部有哪些字段,其作用又分别是什么?
总之,TCP报文首部里的各个字段是用来控制和管理TCP连接的重要信息,通过不同标识确定对应步骤从而贡献了传输控制、包头校验和其他功能。序列号Seq:表示当前传输的数据的序列号,用于保证数据的有序性和完整性。Seq 字段是TCP进行顺序分组传送时,采用的机制在不丢失的情况下使报文段到达接收端的顺序发生改变处理必要的信息。紧急指针:这个可选字段仅当 URG 标志为1才有效,表示数据中需要优先处理的部分,通常在 TCP 连接 "流量控制"的实战操作中使用。数据偏移量:表示TCP头部长度(是以4字节为单位的)。原创 2023-06-14 15:48:34 · 1374 阅读 · 0 评论 -
面试题:第四次挥手为什么要等待2MSL?
避免“旧连接”的数据混乱:如果一个新连接恰好使用了旧连接的端口和IP地址,且旧连接的某些信息没有及时清除,就可能产生数据混乱的情况。例如,如果新连接采用同样的源端口号,对于服务端而言这就是“旧连接”重新启动了,如果等待这个“旧连接”的状态信息释放完成(TCP 4分组的最大时间)才重新使用这个端口,自然可以避免数据混乱问题。在这段时间内,如果服务器还有数据需要发送,它可以通过老的连接发送,而不会被某个处于TIME_WAIT状态的TCP占用,也就避免了“旧连接”的数据混淆问题。原创 2023-06-10 10:54:20 · 1799 阅读 · 0 评论 -
面试题:四次挥手
客户端收到FIN包后,向服务器发送ACK包以确认收到请求,然后进入TIME_WAIT状态,等待两倍于最长报文段生命周期(Maximum Segment Lifetime, 简称MSL)时间(2MSL长度的时间),以确保服务器收到 ACK 包。服务器收到FIN包后,向客户端发送ACK(确认)包,表示已收到客户端的请求,同时还需要告诉客户端自己还有数据要发送,并在自己的TCP缓冲区中留下一个半关闭状态的信息(即可以接受请求,但不再发送数据)。客户端向服务器发送一个FIN(结束)包,表示客户端没有数据要发送了。原创 2023-06-10 10:52:42 · 79 阅读 · 0 评论 -
面试题:三次握手
服务器接到这个SYN包后,如果可以处理浏览器请求,则返回一个SYN + ACK包,在其中再发送一个确认序列号ack,一般是指前面收到的客户端的seq+1,并存储起来以回答客户端。当服务器发回SYN + ACK后,浏览器(客户端)接到响应包后会再次发送一个ACK报文,告诉服务器收到了它的请求,并存储这个确认序号。至此,连接已建立,双方就可以传输数据了。服务器收到SYN包后,向客户端返回SYN + ACK包(同步序列号+确认序列号),并在自己的TCP缓冲区中设置序列号seq和确认序列号ack。原创 2023-06-10 10:53:15 · 48 阅读 · 0 评论 -
面试题:网络分层结构
在客户端输入URL后,HTTP协议会将请求封装成HTTP数据报,传递给传输层协议(如TCP),再经过网络层协议(如IP)、数据链路层协议(如Ethernet)进行物理媒介的传输。服务器接收到数据包后,先经过逆向的数据链路层协议、网络层协议和传输层协议进行解封,然后交给该服务器上的应用层协议(如HTTP服务器)进行处理,最终得到所需的网页资源并发送回客户端。物理层:实现数据在物理媒介(如网线、无线电波)上的传输,包括网线、光纤、电缆等硬件设备,以及数据编码、电气特性、传输速率等。例如TCP协议和UDP协议。原创 2023-06-10 10:50:47 · 58 阅读 · 0 评论