
计算机网络
文章平均质量分 60
甜瓜瓜哥
这个作者很懒,什么都没留下…
展开
-
跨域资源共享(CORS)
跨源资源共享(Cross-Origin Resource Sharing)的英文单词首字母缩写。它是一种基于HTTP头的机制,该机制通过允许服务器标示除了它自己以外的其他源,使得浏览器允许这些域加载自己的资源。CORS就是一种使得服务器能够在浏览器的配合下,控制来自不同域的网页对自己资源的访问的一个机制。原创 2025-04-26 23:31:19 · 360 阅读 · 0 评论 -
太多TIME_WAIT的原因
在 C/S 模型(客户端-服务器)中,通常是客户端发起请求,服务器处理后再主动关闭连接。如果服务器短时间内处理大量短连接(如 HTTP/HTTPS、RPC),那么服务器会进入大量的 TIME-WAIT 状态。:HTTP 短连接模式(Connection: close),每次请求都重新建立和关闭 TCP 连接,导致服务器不断进入 TIME-WAIT。原创 2025-03-22 16:15:04 · 251 阅读 · 0 评论 -
CLOSE-WAIT和TIME-WAIT的区别
如果你的系统里有大量 CLOSE-WAIT,说明应用层代码没有正确关闭 socket。如果有大量 TIME-WAIT,说明短连接过多,可能需要优化连接复用策略。原创 2025-03-22 15:54:18 · 497 阅读 · 0 评论 -
TCP为什么可靠
奇校验:如果数据中“1”的个数已经是奇数,则校验位为0;如果“1”的个数是偶数,则校验位为1,以确保“1”的总数为奇数。偶校验:如果数据中“1”的个数已经是偶数,则校验位为0;如果“1”的个数是奇数,则校验位为1,以确保“1”的总数为偶数。校验和需一致才能传输成功,它有奇校验、偶校验等等。在TCP进行传输时,会进行确认应答和数据编号。会像探路一样发送小数据,防止阻塞。超过指定时间未收到应答,则重传。根据接收端能力进行发送。原创 2025-03-22 15:38:31 · 341 阅读 · 0 评论 -
TCP头部
源端口(Source Port):发送端的端口号目的端口(Destination Port): 接收端的端口号序列号(Sequence Number):用于可靠数据传输,表示数据流中的字节偏移量。确认号(Acknowledge Number):仅在ACK标志位有效时,表示期望接收的下一个序列号。URG标志位:表示紧急数据,紧急指针字段有效ACK标志位:置为1的时候表示确认号字段有效。PSH标志位:立即交付数据到应用层。SYN标志位:用于建立连接。FIN标志位:终止连接。原创 2025-03-21 00:42:55 · 321 阅读 · 0 评论 -
端口号,IP,MAC地址
MAC 地址用于局域网通信,IP 地址用于跨网段通信,端口号用于标识同一设备上的不同应用。原创 2025-03-20 23:17:22 · 462 阅读 · 0 评论 -
OSI七层模型 & TCP/IP五层模型
而IP协议依赖于链路层的协议,因此外层还会再包裹一层链路层的协议相关内容;Nginx它主要工作在七层的时候,这里的七指的是OSI七层模型里面的七。同样道理,TCP协议依赖于IP协议,因此外层还会再包裹IP协议相关内容;为了把用户名和密码传送给对方服务器,外层会包裹HTTP协议相关内容;HTTP协议依赖于TCP协议,因此外层还会再包裹TCP协议相关内容;链路层:mac地址就是属于链路层的一个协议存在。应用层:HTTP协议、FTP协议。传输层:TCP协议和UDP协议。再包裹物理层的协议相关内容。原创 2025-03-03 16:08:03 · 215 阅读 · 0 评论 -
什么是拆包和粘包怎么解决?
拆包是把一个完整的数据包拆分成多个小包进行发送。而接收端无法一次性接收所有的小包,导致接收的数据不完整。粘包指的是把多个数据包粘合在一起,一次性发送。而接收端可能无法正确的去区分每个数据包,导致接收到数据出现错位或者混乱。接收端可以根据这个长度来解析数据包,来保证消息的完整性。最后,基于定长消息,发送端的消息长度是固定的,服务端按照固定长度来解析。参考资料【java常问面试题】这题你理解吗:什么是拆包和粘包怎么解决?原创 2025-02-23 17:50:06 · 317 阅读 · 0 评论 -
第三次握手的时候能携带信息么?
在TCP 三次握手过程中,第三次握手是可以携带数据的(客户端发送完 ACK 确认包之后就进入 ESTABLISHED 状态了),这一点在 RFC 793 文档中有提到。也就是说,一旦完成了前两次握手,TCP 协议允许数据在第三次握手时开始传输。如果第三次握手的 ACK 确认包丢失,但是客户端已经开始发送携带数据的包,那么服务端在收到这个携带数据的包时,如果该包中包含了 ACK 标记,服务端会将其视为有效的第三次握手确认。这样,连接就被认为是建立的,服务端会处理该数据包,并继续正常的数据传输流程。原创 2025-02-23 13:32:20 · 376 阅读 · 0 评论 -
HTTPS密钥交换的过程
HTTPS(超文本传输安全协议)密钥交换过程是确保客户端和服务器之间通信安全的关键环节。原创 2025-02-22 11:05:32 · 299 阅读 · 0 评论 -
TIME_WAIT状态
如果没有TIME_WAIT状态,主动关闭一方(客户端)就会收到对端(服务器)的FIN并回复ACK后,直接从FIN_WAIT_2进入CLOSED状态,并释放连接。此时如果最后一条ACK丢失,那么服务器重传的FIN将无人处理,最后导致服务器长时间的处于LAST_ACK状态而无法正常关闭(服务器只能等到达到FIN的最大重传次数后关闭)。如果此时新建一个连接,源随机端口如果被复用,在connect发送SYN包后,由于被动方仍认为这条连接【五元组】还在等待ACK,但是却收到了SYN,则被动方会回复RST;原创 2025-02-14 10:19:29 · 1084 阅读 · 0 评论 -
TCP的流量控制(滑动窗口)
一般我们都希望发送数据尽可能快,但我们总得考虑下接收方的消化速度。如果接收方来不及处理发送来的数据就会导致数据丢失和溢出。TCP为它的应用程序提供了流量控制服务来避免发送方因为发送速率过快而导致接收方缓存溢出数据丢失的问题。原创 2025-02-13 16:28:02 · 419 阅读 · 0 评论 -
HTTPS秘钥交换的过程
TLS(Transport Layer Security)是SSL(Secure Sockets Layer)的继任者。SSL/TLS的目的是在不安全的网络上为应用层协议(如HTTP、SMTP、IMAP等)提供安全通信保障。加密:保证数据在传输过程中不被窃听。数据完整性:防止数据在传输过程中被篡改。身份验证:确保通信双方的身份是合法的,防止中间人攻击。HTTPS密钥交换过程中的重要环节是公钥加密和私钥解密,它们确保即便有恶意攻击者在传输过程中截获数据,也无法获得共享的会话密钥。原创 2025-02-09 15:01:56 · 374 阅读 · 0 评论 -
滑动窗口体现的上层应用有哪些
滑动窗口(Sliding Window)在计算机网络和通信中是一种常用的技术,它在数据传输和流控制中有广泛的应用。原创 2025-02-07 13:29:45 · 306 阅读 · 0 评论 -
URL输入发生了什么
由字母组成的URL只是方便记忆,实际上每个网址都会有相应的IP地址,但IP地址不方便人们记忆,所以我们这里需要进行DNS解析。当我们和服务器建立起连接之后,浏览器是会发送HTTP请求报文给服务器,报文的格式就由。其实DNS就是一个数据库,这个数据库中记录着很多URL和对应的IP地址。请求头部: 一些关于浏览器的信息,由键值对组成,一行一对。浏览器解析HTML、CSS和JS等前端文件,渲染页面。通过DNS解析URL中域名对应的服务器主机IP地址。请求行:请求方法 + 请求地址 + HTTP协议版本。原创 2025-02-07 13:18:03 · 348 阅读 · 0 评论 -
WebSocket的替代方案
WebSocket 是一种网络通信协议,旨在通过单一的TCP连接提供全双工(双向)通信。它通常用于实时应用程序中,如在线聊天、游戏、股票交易平台等,可以在客户端和服务器之间建立持久的连接。如果同意建立WebSocket连接,则会将协议从HTTP升级为WebSocket。WebSocket传输的数据通过数据帧进行组织。WebSocket 连接可以通过两种方式关闭:客户端或服务器可以发起关闭请求,或双方正常通信后关闭连接。原创 2025-02-07 12:41:16 · 781 阅读 · 0 评论 -
DFI和DPI两种网络流量分析技术的对比
范围不同:DPI 关注单个数据包的内容,而 DFI 关注整个网络流的行为特征。粒度不同:DPI 对数据包进行深入分析,包括头部和有效载荷;DFI 对整个流量的行为进行分析,包括数据包的顺序、大小、频率等。应用场景不同:DPI 主要用于流量管理和网络安全,而 DFI 主要用于网络安全领域,特别是识别和应对复杂的网络攻击。原创 2024-05-06 11:41:44 · 1673 阅读 · 2 评论 -
NAT和SOCKS4、SOCKS5的区别
NAT 是一种网络地址转换技术,用于将私有网络中的多个主机映射到单个公共IP地址。SOCKS4 和 SOCKS5是代理服务器协议,用于在客户端和服务器之间传输数据。SOCKS5比SOCKS4更安全,并且功能更丰富,包括TCP和UDP支持以及身份验证。原创 2024-05-06 10:47:32 · 725 阅读 · 1 评论 -
网站如何对访问者进行鉴别和授权以及面临的威胁
这些是用于授权的开放标准。OAuth用于授权第三方应用访问用户的资源,而OpenID Connect用于身份验证,使用户能够通过其提供商(如Google、Facebook等)进行登录。用户也应当采取良好的安全实践,如使用强密码、定期更改密码、不在不可信的网络上登录等。网站会将这些凭据与其数据库中存储的用户信息进行比对,以确认用户的身份。如果网站没有正确加密用户的密码或会话数据,攻击者可以通过拦截流量或访问数据库来获取这些信息。攻击者可能截获用户的登录信息或会话令牌,从而能够模拟用户并访问其账户。原创 2024-05-06 10:30:12 · 1204 阅读 · 1 评论 -
访问给定网站所涉及的网络协议
在Wireshark中,会看到HTTP或HTTPS的请求和响应,包括页面内容、图像、脚本等。如果你在Wireshark中捕获了电子邮件应用的流量,你会看到SMTP(用于发送邮件)、IMAP(用于收取邮件)或POP3(用于收取邮件)等协议的使用。在Wireshark中,会看到DNS请求和响应,显示了域名解析的过程。在Wireshark中,会看到TCP连接的建立、数据传输和连接的关闭过程。如果你访问的是一个HTTPS网站,你会看到TLS/SSL协议的使用。但具体的协议结构可能是加密的,难以直接解析。原创 2024-05-06 10:12:20 · 1429 阅读 · 1 评论 -
使用域名会经过的协议
HTTP协议在建立连接后,发送HTTP请求,请求页面内容。服务器收到请求后,返回HTML页面及相关资源。首先,浏览器会将输入的域名发送给本地DNS服务器,或者DNS缓存服务器,以获取该域名对应的IP地址。一旦浏览器获得目标服务器的IP地址,它会使用TCP协议与服务器建立连接。这是通过三次握手来完成的。如果使用的是HTTPS协议,浏览器和服务器会进行SSL/TLS握手,以建立加密连接,保护通信安全。HTTPS协议在建立连接后,还会进行SSL/TLS握手,确保通信安全。原创 2024-05-05 21:29:45 · 275 阅读 · 0 评论 -
为什么TCP需要重传以及流量控制
流量控制的原因在于确保发送方不会发送过多的数据,以免超出接收方的处理能力。在数据传输之前,TCP通过三次握手建立连接,确保双方都准备好进行通信。当发送方发送数据后,如果在一定时间内没有收到确认,就会认为数据丢失,触发超时重传机制。即使网络状况良好,由于拥塞控制机制,TCP可能会减缓发送速率,导致需要进行重传。数据包在传输过程中可能会被乱序交付,接收方可能需要提醒发送方重传丢失的数据。,它会立即发送重复确认,告诉发送方需要重传的数据,而不必等到超时。,以防止发送方发送过多的数据导致接收方无法处理。原创 2023-12-04 13:13:34 · 464 阅读 · 0 评论 -
OSI七层模型
主要关注数据传输的物理媒体,如电缆、光纤、无线信道等。原创 2023-11-22 21:01:57 · 56 阅读 · 0 评论 -
RPC调用和一般调用的区别
RPC: 通常使用接口定义语言(IDL)来描述服务接口,例如Protocol Buffers的.proto文件或者Thrift的IDL文件。这些IDL文件可以用于生成客户端和服务器端的代码。一般调用:通常使用HTTP接口,通过定义URL路径和参数来进行通信。RPC和一般的远程调用都是用于实现分布式系统中不同服务之间的通信的技术,但它们在通信协议、数据序列化、接口定义、错误处理和性能等方面有一些不同。选择使用哪种技术取决于你的具体需求、技术栈以及对性能和功能的要求。原创 2023-11-04 14:10:13 · 274 阅读 · 0 评论 -
计网复习题
将网络映射为链路层相应地址的协议是ARP解析:地址解析协议(ARP)模块将IP地址映射为链路层相应地址,映射是动态的,当网络结构变化的时候,ARP自动重新映射。以下IP地址中属于私网地址的是()A. 172.30.60.1B. 9.9.9.1C. 172.33.61.1D. 192.128.2.1答案:A解析:私有IP地址范围:1)172.16.0.0 到 172.31.255.255 2)192.168.0.0 到 192.168.255.255在配置防火墙时允许IMAP协议通过则需要原创 2023-11-02 23:14:27 · 95 阅读 · 0 评论 -
C类地址的特点
C类地址是IPv4地址的一种分类方式之一,用于将IP地址范围分成不同的类别以便于管理和分配。总的来说,C类地址适合中小型网络,可以容纳比B类地址更多的主机,但仍然提供了相对较大的灵活性和地址空间。原创 2023-10-30 10:28:47 · 1103 阅读 · 0 评论 -
视频会议通信可能同时使用TCP和UDP协议
UDP的一种英文全称说法是User Datagram Protocol,也就是用户数据报协议。原创 2023-10-23 16:24:07 · 1513 阅读 · 0 评论 -
HTTP中get和post的十点区别和一点共性
post相对get更安全,因为数据在地址栏上是不可见的;但两者都是不安全的,因为都是明文传输,只要抓包,就能获取完整的数据报文。因此想要安全传输,就需要使用 HTTPS。原创 2023-04-05 11:03:22 · 602 阅读 · 0 评论 -
反向代理服务器
反向代理服务器(Reverse Proxy Server)是一种可以代表一个或多个服务器向客户端提供服务的网络设备。反向代理服务器提供了一种有效的方式来管理和分发客户端的请求,以保证后端服务器的稳定性、安全性和性能。原创 2023-10-09 09:05:27 · 108 阅读 · 0 评论 -
什么是RestClient API调用框架
RestClient 是一个用于发起 HTTP 请求的 Ruby 库,它简化了与 RESTful API 进行交互的过程。RestClient 提供了一种简单的方式来进行 HTTP 请求,而不需要手动构建 HTTP 请求、处理响应等繁琐的细节。使用 RestClient之后可以通过简单的方法调用来创建 GET、POST、PUT、DELETE 等类型的 HTTP 请求,并且能够方便地处理请求头、请求体、响应等内容。原创 2023-08-28 19:08:00 · 565 阅读 · 0 评论 -
HTTP协议中一个完整的请求由三部分组成
请求行包含了请求方法目标资源和HTTP协议版本;请求头部包含了额外的请求信息;而请求体用于传递请求相关的数据。这三个部分共同构成了一个完整的HTTP请求。原创 2023-07-24 14:14:56 · 5810 阅读 · 0 评论 -
什么是高并发
通常我们会把一些静态资源,如音乐app的音频、歌词以及没有那么重要的动态资源,比如热门的评论,存放在缓存服务器上。缓存是解决高并发的一个有效手段。因为磁盘读写速度较慢,所以我们常常用读写速度更快的内存,来防止流量达到磁盘。通过把不同的业务模块部署到不同的服务器上。或者把同一个业务模块分拆成多个子业务来解决高并发的问题。把一台服务器承担的压力分担到一堆服务器上。提升硬件,但是硬件的提升是有天花板的。这种方法不仅可以削峰限流,提升用户体验,还能很好的保护系统。只要定期去做更新,就能大大减少磁盘的压力。原创 2023-07-13 23:46:54 · 57 阅读 · 0 评论 -
DNS域名解析过程
于是我们就直接和这个权威域名服务器对话,输入server 129.211.176.212,也就是刚刚记录的地址,然后设置type=a,输入www.bilibili.com., 也就是向权威域名服务器咨询www.bilibili.com.域名服务器的IPv4地址。答案就是任播,采用这种技术,当我们向根域名服务器进行联系时,就能找到离我们最近的根域名服务器了,那么根域名服务器会管理com,cn和net这些域名服务器,这些域名服务器称为顶级域名服务器,也就是Top Level Domain,简写TLD。原创 2023-07-08 16:16:33 · 164 阅读 · 0 评论 -
HTTP请求的路线(网页到后端服务)
需要注意的是,上述步骤中还可能包括一些中间环节,例如HTTP重定向、负载均衡和缓存等,这些环节可以根据具体的网络架构和配置进行调整和扩展。如果响应的内容是其他类型的数据,浏览器可能会以不同的方式进行处理,例如下载文件或展示图片等。建立TCP连接后,浏览器向服务器发送HTTP请求报文,包括请求方法、URL、请求头和请求体等信息。服务器接收到HTTP请求后,根据请求的URL和方法等信息,找到对应的后端服务来处理请求。浏览器接收到服务器返回的HTTP响应后,根据响应的状态码和响应头等信息进行处理。原创 2023-07-08 14:24:34 · 574 阅读 · 0 评论 -
SSL加密过程
客户端先从密匙库中拿出一个密匙对,通过网络传输到我们的服务端这边,然后服务端收到了,它就需要验证一下对端是否是可以信任的。对我们的消息进行加密。变成密文后,这样在传输的过程中,即使这些密文被别人劫持,别人也是无法获取到有用的信息的。而双向验证就是我们服务端再从密匙库中取出一个密匙对,通过网络传输到客户端这边,客户端采取同样的方式对服务端进行验证。这个时候,我们的客户端就可以利用我们的密匙,把我们已经编码好的数据流进行加密成密文,然后传送到服务端这边。首先我们的客户端有两个库,一个密匙库,一个信任库。原创 2023-07-07 19:57:47 · 714 阅读 · 0 评论 -
TCP如何应对丢包情况的出现
如果最后一次握手的确认包丢失了,TCP会尝试重新发送确认包。在确认包丢失的情况下,发送方会等待一段时间(称为重传超时时间),然后重新发送确认包。这个重传超时时间是根据网络延迟和拥塞等因素动态调整的。原创 2023-07-07 19:25:07 · 1753 阅读 · 0 评论 -
为什么TCP需要三次握手而不是两次
在网络中,可能存在延迟、丢包或网络拥塞等问题。如果只进行两次握手,而没有第三次确认,那么在第一次请求发送后,如果出现延迟或丢包,服务端无法区分是一个新的连接请求还是一个已失效的连接请求,从而可能导致资源浪费。TCP是面向连接的协议,它提供可靠的数据传输。三次握手提供了一种机制,确保双方都愿意建立连接并准备好进行数据传输。TCP连接的每个数据包都包含一个序列号,用于确保数据包的有序传输和重组。通过三次握手,双方可以交换彼此的初始序列号,从而确保后续的数据传输能够正确地进行。确保可靠的连接建立和双方的同步。原创 2023-07-07 19:17:15 · 157 阅读 · 0 评论 -
TCP vs UDP
这个机制和三次握手一样,也是为了保证在不可靠的网络链路中进行可靠的连接断开确认。tcp传输数据稳定可靠,适用于对网络通讯质量要求较高的场景。需要准确无误的传输给对方。比如传输文件、发送邮件、浏览网页等。原创 2023-07-04 14:46:09 · 86 阅读 · 0 评论 -
面向连接与面向无连接的简介
面向连接与无连接指的都是网络协议,而非物理介质本身,它们是用来说明两台或者更多的计算机们是怎样在物理介质上传输数据的,二者往往会共用一种物理介质。打电话是建立连接的过程,通话是数据传输的过程,挂电话是释放连接的过程。缺点是数据传输是无序的,它的传输是无可靠的数据传输。它的特点是灵活、方便以及迅速。仅有一个传输数据阶段。寄快递是无连接的过程。原创 2023-07-04 13:48:55 · 447 阅读 · 0 评论 -
Http和Rpc以及Http1.0/1.1/2.0之间有什么区别
rpc适用于公司内部的调用,传输效率比较高,但是不建议去传一些文本、视频或者是图片。他默认自己也实现了负载。他适用于公司里面,大家都使用相同的技术栈。如果我们的http适用于对外的这种环境,比如说我和其他项目组之间的、或者说我和其他公司之间的,像这些层面,我们可以考虑用到http或者是WebService。如果是一个系统或者我们公司上下内部的,这种情况下我们可以通过kafka或者RocketMQ等来构造一个消息的传输。像这种情况下,我们能做到第三方调用的接口实现起来比较简单,而且相对来说比较灵活。原创 2023-07-04 11:19:01 · 145 阅读 · 0 评论