计算机网络秋招面试题

news2025/5/30 12:01:57

自己在秋招过程中遇到的计算机网络的面试题

OSI七层网络模型

image.png
在这里插入图片描述

DNS:应用层协议

根据域名查IP地址

DNS查询⽅式有哪些?

递归解析

局部DNS服务器⾃⼰负责向其他DNS服务器进⾏查询,⼀般是先向该域名的根域服务器查询,再由根域名服务器⼀级级向下查询。最后得到的查询结果返回给局部DNS服务器,再由局部DNS服务器返回给客户端。

迭代解析

迭代解析只是帮你找到相关的服务器⽽已,⽽不会帮你去查。⽐如说: baidu.com的服务器ip地址在192.168.4.5这⾥,你⾃⼰去查吧

IP

数据的分片和组装都是在IP层完成的,上层的传输层和下层的链路层并不关心。
传输层只负责为数据传送提供可靠性保证,当数据传送失败后,传输层的TCP协议可以组织进行数据重传

TCP

TCP连接中间会有什么操作

在TCP连接中,客户端和服务器之间会进行以下操作:

  • 握手阶段:客户端向服务器发送SYN包(同步包),请求建立连接。服务器收到SYN包后,向客户端发送SYN+ACK包(同步确认包),表示可以建立连接。客户端收到SYN+ACK包后,再向服务器发送ACK包(确认包),表示连接建立成功。
  • 数据传输阶段:连接建立成功后,客户端和服务器之间可以进行数据的传输。客户端向服务器发送数据包,服务器接收数据包并进行处理,然后向客户端发送响应包。客户端收到响应包后,可以再次向服务器发送数据包,以此类推。
  • 断开连接阶段:当客户端或服务器不再需要连接时,可以发送FIN包(结束包)来请求断开连接。对方收到FIN包后,也发送FIN包进行响应,表示同意断开连接。当两端都收到对方的FIN包后,连接才真正关闭。

在TCP连接中可能会出现丢包、拥塞等情况,需要进行相应的处理,例如重传丢失的数据包、调整发送窗口大小等。

三次握手

一开始,客户端和服务端都处于Closed状态,服务器端主动监听某个端口,处于listen状态

  1. 第一次握手:第一个报文,SYN报文
  • 1)客户端随机初始化序列号(client_isn),将序号填入TCP首部【序号】字段中
  • 2)SYN标志位置1,表示SYN报文
  • 3)把第一个SYN报文发给服务端,表示发起连接,不包含应用层数据
  • 4)客户端处于SYN-SENT状态
  1. 第二次握手:第二个报文,SYN+ACK报文
  • 1)服务端收到客户端的SYN报文后
  • 2)服务端随机初始化序列号(server_isn),将序号填入TCP首部【序号】字段中
  • 3)把TCP首部的【确认应答号】字段填入client_isn+1
  • 4)把SYN和ACK标志位置为1,表示SYN+ACK报文
  • 5)把该报文发给客户端,不包含应用层数据
  • 6)服务端端处于SYN-RCVD状态
  1. 第三次握手:第三个报文,ACK报文
  • 1)客户端收到服务端的报文后
  • 2)向服务端回应最后一个应答报文,该报文TCP首部ACK标志位置为1,表示ACK报文
  • 3)把TCP首部的【确认应答号】字段填入server_isn+1
  • 4)把该报文发给服务端,可以携带应用层数据
  • 5)客户端处于ESTABLISHED状态
  • 6)服务器收到客户端的应答报文后,也进入ESTABLISHED状态

总结:
1)前两次握手是不可以携带数据的,第三次握手可以
2)一旦完成三次握手,双方都处于ESTABLISHED状态,此时连接就建立完成了,客户端和服务器可以相互发送数据
3)序列号:用来解决乱序问题

为什么是三次握手,不是两次,四次?

  • 1)避免重复历史连接的初始化(主要原因)
    • 1-⼀个「旧 SYN 报⽂」⽐「最新的 SYN 」 报⽂早到达了服务端;
      2-那么此时服务端就会回⼀个 SYN + ACK 报⽂给客户端;
      3-客户端收到后可以根据⾃身的上下⽂,判断这是⼀个历史连接(序列号过期或超时),那么客户端就会发送RST 报⽂给服务端,表示中⽌这⼀次连接。
  • 2)同步双方的序列号
    • 序列号是可靠传输的⼀个关键因素,它的作⽤:
      1)接收⽅可以去除重复的数据;
      2)接收⽅可以根据数据包的序列号按序接收;
      3)可以标识发送出去的数据包中, 哪些是已经被对⽅收到的;
    • 四次握⼿其实也能够可靠的同步双⽅的初始化序号,但由于第⼆步和第三步可以优化成⼀步,所以就成了三次握⼿
      ⽽两次握⼿只保证了⼀⽅的初始序列号能被对⽅成功接收,没办法保证双⽅的初始序列号都能被确认接收。
  • 3)避免资源浪费
    • 两次握⼿会造成消息滞留情况下,服务器重复接受⽆⽤的连接请求 SYN 报⽂,⽽造成重复分配资源。

**「两次握⼿」:⽆法防⽌历史连接的建⽴,会造成双⽅资源的浪费,也⽆法可靠的同步双⽅序列号;
「四次握⼿」:三次握⼿就已经理论上最少可靠连接建⽴,所以不需要使⽤更多的通信次数 **

四次挥手

第一次挥手:
客户端打算关闭连接,此时会发送⼀个 TCP ⾸部 FIN 标志位被置为 1 的报⽂,也即 FIN 报⽂,之后客户端进⼊ FIN_WAIT_1 状态。
第二次挥手:
服务端收到该报⽂后,就向客户端发送 ACK 应答报⽂,接着服务端进⼊ CLOSED_WAIT 状态。
客户端收到服务端的 ACK 应答报⽂后,之后进⼊ FIN_WAIT_2 状态。
第三次挥手:
等待服务端处理完数据后,也向客户端发送 FIN 报⽂,之后服务端进⼊ LAST_ACK 状态
第四次挥手:
客户端收到服务端的 FIN 报⽂后,回⼀个 ACK 应答报⽂,之后进⼊ TIME_WAIT 状态
服务器收到了 ACK 应答报⽂后,就进⼊了 CLOSED 状态,⾄此服务端已经完成连接的关闭。
客户端在经过 2MSL ⼀段时间后,⾃动进⼊ CLOSED 状态,⾄此客户端也完成连接的关闭

针对 TCP 应该如何 Socket 编程?
服务端和客户端初始化 socket ,得到⽂件描述符;
服务端调⽤ bind ,将绑定在 IP 地址和端⼝;
服务端调⽤ listen ,进⾏监听;
服务端调⽤ accept ,等待客户端连接;
客户端调⽤ connect ,向服务器端的地址和端⼝发起连接请求;
服务端 accept 返回⽤于传输的 socket 的⽂件描述符;
客户端调⽤ write 写⼊数据;服务端调⽤ read 读取数据;
客户端断开连接时,会调⽤ close ,那么服务端 read 读取数据的时候,就会读取到了 EOF ,待处理完数据后,服务端调⽤ close ,表示连接关闭。

超时重传:
每当遇到⼀次超时重传的时候,都会将下⼀次超时时间间隔设为先前值的两倍。两次超时,就说明⽹络环境差,不宜频繁反复发送

快速重传:
快速重传的⼯作⽅式是当收到三个相同的 ACK 报⽂时,会在定时器过期之前,重传丢失的报⽂段。

SACK重传机制:
在 TCP 头部「选项」字段⾥加⼀个 SACK 的东⻄,它可以将缓存的地图发送给发送⽅,发送⽅就可以知道哪些数据收到了,哪些数据没收到,只重传丢失的数据

D-SACK 重传机制:
其主要使⽤了 SACK 来告诉「发送⽅」有哪些数据被重复接收了

D-SACK 有这么⼏个好处:

  1. 可以让「发送⽅」知道,是发出去的包丢了,还是接收⽅回应的 ACK 包丢了;
  2. 可以知道是不是「发送⽅」的数据包被⽹络延迟了;
  3. 可以知道⽹络中是不是把「发送⽅」的数据包给复制了

接收窗⼝和发送窗⼝的⼤⼩是相等的吗?
答:并不是完全相等,接收窗⼝的⼤⼩是约等于发送窗⼝的⼤⼩的。
因为滑动窗⼝并不是⼀成不变的。当接收⽅的应⽤进程读取数据的速度⾮常快的话,这样的话接收窗⼝可以很快的就空缺出来。新的接收窗⼝⼤⼩,是通过 TCP 报⽂中的 Windows 字段来告诉发送⽅。那么这个传输过程是存在时延的,所以接收窗⼝和发送窗⼝是约等于的关系。

TCP流量控制

滑动窗口

流量控制主要是可以让「发送方」根据「接收方」的实际接收能力控制发送的数据量。
实现的方式,接收方会有一个接收缓冲区,如果内核接收到了数据,没有被应用读取的话,接收窗口就会收缩,然后会在tcp报文携带接收窗口的大小,发送方收到后,就会控制的发送流量。

TCP拥塞控制

在这里插入图片描述

什么是拥塞控制

网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。在计算机网络中数位链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。

TCP的四种拥塞控制算法
1.慢开始
一开始向网络注入的报文段少,然后根据接受方的反馈动态调整窗口大小,一般是2倍调整
2.拥塞避免
判断可能会出现拥塞, 线性增长窗口大小
3.快重传
1-尽快进行重传,而不等超时计数器超时再重传
2-收到3个连续的重复确认,立即重传
3-网络出现拥堵,拥塞窗口大小调整为1
4.快恢复
收到3个连续的重复确认后,快速恢复网络的传输效率,增大窗口的大小,避免启动慢开始算法
在这里插入图片描述

UDP

适合实时性要求高的场景

介绍一下TCP的三次握手和四次挥手

三次握手

1)(SYN):客户端发送SYN同步标志包,客户端请求建立连接,此时,客户端进入SYN_SENT状态
2)(SYN+ACK):服务端收到后客户端请求后,发送SYN和ACK包,服务器进入SYN_RECEIVED状态
3)(ACK):客户端收到服务器响应后,发送ACK标志的数据包,双方进入ESTABLISHED状态

四次挥手

1)(FIN):客户端发送FIN包给服务器,此时客户端进入FIN_WAIT1状态
2)(ACK):服务器收到客户端请求后,发送ACK标志数据包,服务器进入CLOSE_WAIT状态,客户端进入FIN_WAIT_2状态
3)(FIN):服务器也发送FIN数据包,服务器进入LAST_ACK状态, 客户端仍然保持在FIN_WAIT_2状态。
4)(ACK):客户端收到服务器终止请求后,向服务器发送一个ACK数据包,客户端进入TIME_WAIT状态,
服务器收到客户端确认请求后,进入CLOSED状态

总结

在TIME_WAIT状态,客户端等待一段时间(通常为2倍的最长报文段寿命,即2MSL),以确保服务器收到最后一个ACK,并在必要时重传。完成等待时间后,客户端进入CLOSED状态,连接终止。
修正后的四次挥手过程中,客户端的状态顺序为:FIN_WAIT_1 -> FIN_WAIT_2 -> TIME_WAIT -> CLOSED。

介绍一下拥塞控制和流量控制

流量控制主要关注数据发送方和接收方之间的数据传输速率,以确保接收方能够有效处理接收到的数据。通过流量控制,发送方可以根据接收方的处理能力和可用缓冲区空间来控制数据发送的速率,避免数据丢失或缓冲区溢出。
拥塞控制和流量控制在网络中起着不同的作用:

  • 拥塞控制是为了保护整个网络免受拥塞的影响,防止网络性能下降和数据丢失。它通过动态调整数据传输速率和窗口大小来适应网络负载,以确保网络的稳定性和可靠性。
  • 流量控制是为了保护接收方免受数据过载的影响,确保接收方能够有效处理接收到的数据。它通过发送方和接收方之间的协商和反馈机制,调整数据发送速率和窗口大小,以保证接收方能够及时处理数据,避免数据丢失或缓冲区溢出
    拥塞控制的不足可能导致网络拥塞,从而影响流量控制的效果。流量控制的不足可能导致接收方无法及时处理数据,进而引发拥塞

TCP的最大负载和最小负载有何意义

在TCP(传输控制协议)中,最大负载和最小负载是指TCP报文段中所携带的数据的大小的范围。最大负载表示一个TCP报文段中可以携带的最大数据量,而最小负载表示一个TCP报文段中可以携带的最小数据量。
这些值的意义如下:

  1. 最大负载:
    • 网络应用程序通常将数据分割成较小的块,并使用TCP传输。最大负载定义了TCP报文段的最大数据量,这对应于网络应用程序一次性传输的最大数据量。
    • 最大负载的限制由TCP协议和底层网络的最大传输单元(MTU)决定。MTU是指在网络中可以传输的最大数据块的大小。
    • 确定最大负载的大小对于性能和吞吐量的评估很重要。较大的最大负载可以提高数据传输的效率,减少传输的开销。然而,如果数据块过大,可能会增加延迟和丢包的风险。
  2. 最小负载:
    • 最小负载定义了TCP报文段的最小数据量,即报文段中必须包含的最小数据量。这是由TCP协议规定的,确保TCP连接的正常运行。
    • 最小负载的大小通常很小,例如,在TCP报文段中至少要包含一个字节的数据。这个字节可以是控制信息、应用层协议的头部或其他必要的信息。
    • 最小负载的定义是为了确保TCP连接的可靠性和稳定性,以及确保传输的数据按照正确的顺序传递。即使没有有效的应用层数据,TCP报文段仍然需要包含一些必要的信息。
      最大负载和最小负载的定义对于TCP协议的实现和网络应用程序的设计都很重要。它们有助于限制数据块的大小,以适应网络传输的特性和要求,并确保TCP连接的正常运行。同时,根据具体的网络环境和应用需求,合理地设置最大负载和最小负载可以优化数据传输的效率和性能。

TCP 如何保证可靠?

  1. 应用数据的分段与重组:TCP 将应用层数据分割为合适大小的数据段,并在接收端将这些数据段重新组装成完整的应用数据。这样可以确保即使网络传输过程中发生丢包或乱序,TCP 也能正确重组数据,保证应用层接收到的数据与发送端一致。
  2. 序列号与确认机制:TCP 在每个数据段上添加序列号和确认号,用于标识数据段的顺序和确认收到的数据。接收端通过确认号告知发送端自己已成功接收到哪些数据段,发送端在接收到确认后才会发送下一批数据。如果发送端在一定时间内没有收到确认,则会重新发送相应的数据段,确保数据的可靠传输。
  3. 超时与重传机制:TCP 使用超时与重传机制来处理丢失的数据段。如果发送端发送了一个数据段但没有收到确认,它会假定该数据段丢失,然后在一定时间内等待确认。如果超过一定时间还没有收到确认,发送端会重新发送该数据段。接收端在接收到重复的数据段时会丢弃重复的数据。
  4. 流量控制与滑动窗口:TCP 使用滑动窗口机制来进行流量控制。发送端和接收端都有一个滑动窗口大小,用于限制发送和接收的数据量。接收端可以根据自身处理能力和可用缓冲区大小来调整滑动窗口的大小,告知发送端可以发送多少数据。这样可以避免发送端发送过多的数据导致接收端无法及时处理,从而实现流量控制和可靠性。
  5. 拥塞控制:TCP 通过拥塞控制算法来避免网络拥塞,并确保数据的可靠传输。拥塞控制算法根据网络的拥塞程度动态调整发送端的发送速率。当网络拥塞时,发送端会减小发送速率,防止进一步加剧拥塞。拥塞控制算法包括慢启动、拥塞避免和快重传等机制。

介绍一下OSI七层协议,各层协议都有哪些

应用层:DNS、 HTTP、 FTP
提供网络应用程序与用户之间的接口,实现特定的网络功能。
表示层: ASCII、JPEG、MPEG
处理数据的表示和编码,确保不同系统间的数据格式兼容性
会话层: SSH 、 TLS
建立、管理和终止会话(连接)
传输层:TCP,UDP
提供端到端的数据传输服务,确保数据可靠传输
网络层:IP、 ICMP
处理数据的路由和转发,为数据包选择合适的路径
数据链路层: Ethernet、 Wi-Fi
提供可靠的数据传输,通过将数据分割成数据块
物理层:USB、光纤、RS-232
负责传输比特,处理物理接口和传输媒介

TCP粘包和消息头

什么是粘包

1)数据大小不固定,多个小数据在接收端合并成一个大的
2)数据发送速率不同,接受端混合数据
3)发送接收的时候使用操作系统缓冲区

怎么解决粘包

1)定长消息
2)消息头部标识:根据头部划分消息
3)分割符分割消息
4)每个消息加上唯一的序列号,接收端使用序列号辨别

跨域问题

前后端分离的项目中,前端服务跑在8080端口,后端服务跑在9002端口,那么前端请求后端接口就会出现跨域问题,主要由于浏览器的同源策略隔离
1)使用Nodejs 代理,对8080端口下的前端请求进行代理,同时接受9002端口下的服务端响应

对称加密和非对称加密

对称加密:发送方和接收方使用相同的密钥来加密和解密数据,速度快,不安全AES,DES
非对称加密:使用一对密钥,公钥和私钥,公钥用于加密,私钥用于解密,速度慢,安全,发送方只需要知道接收方的公钥,而不需要知道私钥,rsa和ECC

UDP如何像TCP那样保证实时性

1)数据包的大小控制:TCP通常1500,UDP自己设计
2)抗丢包的设计,重复包的处理
3)实现自己的拥塞控制,可以通过调整发送速率或采用自适应的机制来适应网络状况。
4)差错处理,FEC前向纠错,FEC冗余包设计,超时重传,NACK机制
5)应用层协议设计,包括一些特定的压缩算法、数据包合并或其他优化。

HTTP报文的结束符是什么?HTTP报文格式

HTTP报文中的头部字段之间使用回车换行符(\r\n)分隔,报文头部和主体之间有一个空行(即两个回车换行符 \r\n\r\n)来表示头部的结束和主体的开始。HTTP 报文不需要显式的结束符来标志结束。
请求报文格式
:::info
请求方法 URL HTTP版本
请求头
空行
消息体
:::
响应报文格式
:::info
HTTP版本 状态码
响应头
空行
响应体
:::

三次握手

刚开始是closed状态客户端
1)客户端主动发送SYN包,进如SYN_SEND状态,
2)服务端收到包之后,回复ACK+SYN包,进入SYN_RECEIVED
3)客户端收到后,回复ACK
都确认对方请求后,三次握手连接建立,最终进入ESTABLISHED状态
前两次握手是不可以携带数据的,第三次握手可以

四次挥手

刚开始是ESTABLISHED状态
1)客户端发送连接断开的请求FIN包,进入FIN_WAIT_1状态
2)服务端收到后回复ACK,进入CLOSED_WAIT状态,此时还可以向客户端发送数据
客户端收到服务端发的ACK之后,进入FIN_WAIT2状态
3)服务端发完数据后,也发起了请求断开连接请求FIN,服务端进入LSAT_ACK状态
4)客户端收到后回复ACK,进入TIME_WAIT状态
服务端收到ACK后,进入CLOSED状态
客户端等待2MSL自动进入CLOSED状态,为了处理延迟包

流程控制和拥塞控制的区别

流量控制是端到端的,根据接收方的能力调整发送发送方的窗口
拥塞控制是全局的,根据整个网络的拥塞情况调整拥塞窗口
其实最终取了一个最小值

TCP和UDP客户端和服务端的过程

服务端:
1)创建套接字socket
2)绑定套接字bind
3)监听套接字listen
4)接受套接字accept
5) 开始收发

客户端:
1)创建套接字socket
2)绑定套接字bind
3)TCP:connect连接
UDP直接发

4)关闭套接字

三次握手

第一次握手:你向朋友打电话并说:“喂,我想和你通话,你能听到我说话吗?”这是你发起通话的请求,并等待朋友的回应。
第二次握手:朋友接听电话后,听到你的请求并回答:“是的,我能听到你说话,我们可以通话。”这是朋友回应你的请求,并表示愿意与你进行通话。
第三次握手:你收到朋友的回应后,再次回答:“好的,我们可以开始通话了。”这是你确认朋友的回应,并表示你准备好与朋友进行通话。

1)客户端发起SYN包,随机一个初始序列号
2)服务器收到后,发送ACK和SYN响应包,在客户端发送的序列号上+1,然后服务器发送随机的初始序列号
3)客户端收到ACK和SYN包后,回复一个ACK包,在服务器的序列号上+1

两次握手可以吗

不行
**客户端并没有确认服务器的初始序列号,因此连接的建立并不可靠 **
如果有恶意主机发送具有相同初始序列号的SYN包给服务器 , 服务器将无法区分是客户端发送的请求还是恶意主机发送的请求,从而可能导致连接建立错误。

如果网络情况非常好百分百不会发生拥塞,不会重传SYN,不会有历史连接的问题,可以两次握手吗?

不可以
在仅使用两次握手的情况下,攻击者可以伪造客户端请求并向服务器发送伪造的SYN包。服务器将接受该请求并发送确认包给攻击者,导致建立了一条无意义的连接。这种情况下,服务器将浪费资源和处理能力,而攻击者可以利用这种方式来进行拒绝服务攻击。

如何防止SYN攻击

1)端口过滤
2)利用防火墙,路由器过滤
3)加强TCP/IP协议栈

什么时候用tcp什么时候用udp

tcp:需要安全性,数据不丢,数据有序,数据量大分片传输
udp:需要实时性,数据量小,节省带宽

此时此刻的视频面试用的udp还是tcp

两者结合的RUDP,既有UDP的实时性,又有TCP的可靠性

udp丢包会有什么现象?

  1. 图像和声音的断续或卡顿
  2. 数据乱序
  3. 视频和音频质量下降
  4. 数据传输延迟
  5. 数据丢失

http和https的区别

  1. 安全性:
    • HTTP是明文传输协议,数据在传输过程中不进行加密。这意味着数据可以被攻击者窃听和篡改,存在安全风险。
    • HTTPS使用SSL(Secure Socket Layer)或TLS(Transport Layer Security)协议对数据进行加密传输。通过使用证书和密钥,HTTPS确保数据的机密性和完整性,提供更高的安全性。
  2. 端口号:
    • HTTP使用默认的端口号80进行通信。
    • HTTPS使用默认的端口号443进行通信。
  3. 证书:
    • HTTPS需要使用数字证书来验证服务器的身份。证书由可信任的证书颁发机构(CA)签发,用于确保通信双方的身份验证和数据的完整性。
    • HTTP不需要使用证书,通信双方的身份验证和数据的完整性无法得到保证。
  4. 使用场景:
    • HTTP适用于对数据安全性要求不高的场景,如公开信息的传输,例如网页浏览、普通的数据传输等。
    • HTTPS适用于对数据安全性要求较高的场景,如登录页面、支付页面、敏感信息传输等。

证书是绿色的是什么意思?

通常指的是浏览器地址栏中显示的网站安全标识。这个标识通常是一个绿色的锁形状或绿色的字母“https”,表示当前网站正在使用HTTPS协议进行安全加密通信。

自己随便编一个证书可以吗?需要去什么地方注册

不可以自己随意编写一个证书。证书的发行需要由可信任的证书颁发机构(CA)进行。证书颁发机构是经过认可和信任的第三方机构,负责验证和确认网站身份,并为其签发数字证书

百度搜索www.baidu.com到页面出现百度,这中间发生了什么

1)首先DNS通过这个域名解析到IP地址,本地缓存有直接返回,否则向上层DNS服务器发出查询请求
2)递归查询会依次向根域名服务器、顶级域名服务器(.com),权威域名服务器(baidu.com)发送查询请求,直到找到对应的IP地址
3)建立TCP连接,与目标服务器80( HTTP默认端口**)**端口建立连接
4)发送HTTP请求, 请求中的资源路径为 “/”,表示请求首页
5)服务器处理请求:服务器会查找并返回对应的资源
6)浏览器接受响应并开始渲染页面, 会解析HTML、CSS和JavaScript,并加载页面所需的资源
7)所有资源都加载完毕,用户就能看到百度的页面了

baidu.com默认用什么端口

HTTP的默认端口是80 , HTTPS使用的默认端口号是443

tcp四次挥手,可以合并为三次吗,一定可以吗

被动关闭方在接收到主动关闭方的FIN报文后,立即发出自己的FIN报文
在合并为三次挥手时,需要确保:

  1. 数据传输已经完成,双方都没有数据需要发送。
  2. 能够保证合并挥手不会导致乱序的问题,确保对方能够正确处理这种情况。
  3. 对方能够正确处理快速的关闭连接,而不依赖于等待TIME_WAIT状态的确认

接收/发送窗口,拥塞控制

窗口都是用来管理缓冲区的概念
接收窗口的大小表示接收方愿意接受的数据量
发送窗口的大小表示发送方可以发送的数据量

拥塞控制:拥塞控制通过动态调整发送窗口的大小来控制数据的发送速率

I/O多路复用

I/O多路复用(I/O Multiplexing)是一种高效处理多个I/O任务的机制,它允许一个单独的线程同时监听多个文件描述符(sockets或其他I/O事件),并在其中任何一个文件描述符就绪时进行相应的I/O操作。I/O多路复用的主要目的是提高系统的并发性和效率,减少对线程和进程的依赖

epoll

select最大连接数1024,poll能多一点,都是基于轮询的方式
epoll是基于事件驱动的,事件来了来通知

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1224959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++之map容器

C之map容器 map构造和赋值 #include<iostream> #include<string> using namespace std; #include<map>void printMap(map<int,int>&m) {for (map<int,int>::iterator it m.begin();it ! m.end();it){//cout <<"key is: "&l…

macbook ntfs能读不能复制 c盘ntfs拒绝访问怎么解决

如果你是一位Mac用户&#xff0c;你可能会遇到这样的问题&#xff1a;你的Mac能够读取NTFS格式的移动硬盘或U盘&#xff0c;但是不能往里面复制或者修改文件。或者&#xff0c;你的Windows电脑出现了C盘NTFS拒绝访问的错误&#xff0c;导致你无法正常使用系统。这些问题都是由于…

Spring 设计模式-简洁版

Java 中包括以下设计模式&#xff1a; 其中Spring 用到的设计模式 1.简单工厂-BeanFactory 2.工厂方法FactoryBean 3.单例模式Bean实例 4.适配器模式SpringMVC中的HandlerAdatper 5.装饰器模式BeanWrapper 6.代理模式_AOP底层 7.观察者模式-spring的事件监听 8.策略横式exclud…

Unity在Windows选项下没有Auto Streaming

Unity在Windows选项下没有Auto Streaming Unity Auto Streaming插件按网上说的不太好使最终解决方案 Unity Auto Streaming插件 我用的版本是个人版免费版&#xff0c;版本号是&#xff1a;2021.2.5f1c1&#xff0c;我的里边Windows下看不到Auto Streaming选项,就像下边这张图…

Clickhouse初认识

技术主题-clickhouse 一什么是clickHouse 1&#xff09;本质上就是一款数据库管理系统&#xff0c;能提供海量数据的存储和检索 2&#xff09;基于列存储&#xff0c;数据是按照列进行存储的&#xff08;数据格式一样&#xff0c;方便进行压缩&#xff09; 3&#xff09;具备…

数据结构-插入排序+希尔排序+选择排序

目录 1.插入排序 插入排序的时间复杂度&#xff1a; 2.希尔排序 希尔排序的时间复杂度&#xff1a; 3.选择排序 选择排序的时间复杂度&#xff1a; 所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的…

Gem5模拟器学习之旅——翻译自官网

文章目录 安装并使用gem5 模拟器支持的操作系统和环境依赖在 Ubuntu 22.04 启动(gem5 > v21.1)Docker获取代码用 SCons 构建用法首次构建 gem5gem5 二进制类型调试opt快速 常见错误错误的 gcc 版本Python 位于非默认位置未安装 M4 宏处理器Protobuf 3.12.3 问题 安装并使用g…

Pandas中loc和iloc函数(提取某几列或者行的数据)

loc函数&#xff1a;通过行索引&#xff08;列名、行名&#xff09; 中的具体值来取行数据&#xff08;如取"Index"为"A"的行&#xff09; iloc函数&#xff1a;通过行号&#xff08;数字&#xff09;来取行数据&#xff08;如取第二行的数据&#xff09;…

JAVA刷题之字符串的一些个人思路

感谢您的阅读&#xff01; ꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯…

【Spring总结】基于配置的方式来写Spring

本篇文章是对这两天所学的内容做一个总结&#xff0c;涵盖我这两天写的所有笔记&#xff1a; 【Spring】 Spring中的IoC&#xff08;控制反转&#xff09;【Spring】Spring中的DI&#xff08;依赖注入&#xff09;Dependence Import【Spring】bean的基础配置【Spring】bean的实…

计算机msvcr120.dll丢失的解决方法,分享多种亲测可靠的方法

在使用计算机的过程中&#xff0c;我们有时可能会遇到一些技术问题&#xff0c;其中之一就是提示丢失msvcr120.dll文件。当计算机提示丢失msvcr120.dll文件时&#xff0c;可能是由于某些程序无法找到这个文件&#xff0c;从而导致程序无法正常运行。那么我们需要如何解决修复好…

一文读懂:testcafe框架和页面元素交互

一、互动要求 使用 TestCafe 与元素进行交互操作&#xff0c;元素需满足以下条件&#xff1a;☟ 元素在 body 页面窗口或 iframe 窗口的元素内。如果某个元素在视口之外&#xff0c;则 TestCafe 通过滚动可以滚动到元素可见。 元素是可见的&#xff0c;具有以下属性&#…

Leetcode—剑指OfferII LCR 022.环形链表II【中等】

2023每日刷题&#xff08;三十三&#xff09; Leetcode—LCR 022.环形链表II 算法思想 参考k神的博客 实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode *detectCycle(struct List…

2.3 调用智谱 API

调用智谱 API 1 申请调用权限2 调用智谱 AI API3 使用 LangChain 调用智谱 AI参考&#xff1a; 智谱 AI 是由清华大学计算机系技术成果转化而来的公司&#xff0c;致力于打造新一代认知智能通用模型。公司合作研发了双语千亿级超大规模预训练模型 GLM-130B&#xff0c;并构建了…

Python------列表 集合 字典 推导式(本文以 集合为主)

推导式&#xff1a; 推导式comprehensions&#xff08;又称解析式&#xff09;&#xff0c;是Python的一种独有特性。推导式是可以从一个数据序列 构建 另一个 新的数据序列&#xff08;一个有规律的列表或控制一个有规律列表&#xff09;的结构体。 共有三种推导&#xff…

HUAWEI华为笔记本MateBook X 2021款i5集显(EULD-WFH9,WXX9)原装出厂Windows11系统工厂模式包

下载链接&#xff1a;https://pan.baidu.com/s/1gQ_O203SSm83Nc-zDk1iNA?pwd4exz 提取码&#xff1a;4exz 系统带F10一键智能还原功能隐藏恢复分区、所有驱动、Office办公软件、华为电脑管家等预装程序 所需要工具&#xff1a;32G或以上的U盘 文件格式&#xff1a;zip …

TensorRt推理加速框架Python API服务器部署教程以及运行Helloworld程序

一、确认cuda工具包和n卡相关驱动是否安装 在终端中输入以下命令&#xff1a; nvcc -V如果出现以下提示&#xff0c;则已经成功安装 在终端中输入以下命令&#xff1a; nvidia-smi如果出现即为成功&#xff0c;我在这里就不去介绍怎么下载cuda和驱动怎么下载了&#xff0c;…

【Linux系统化学习】进程的父子关系 | fork 进程

个人主页点击直达&#xff1a;小白不是程序媛 Linux专栏&#xff1a;Linux系统化学习 目录 前言&#xff1a; 父子进程 父子进程的引入 查看父子进程 查询进程的动态目录 更改进程的工作目录 fork创建进程 fork的引入 fork的使用 fork的原理 fork如何实现的&#…

2023-2024华为ICT大赛-计算赛道-广东省省赛初赛-高职组-部分赛题分析【2023.11.18】

2023-2024华为ICT大赛 计算赛道 广东省 省赛 初赛 高职组 部分赛题 分析【2023.11.18】 文章目录 单选题tpcds模式中存在表customer&#xff0c;不能成功删除tpcds模式是&#xff08; &#xff09;以下哪个函数将圆转换成矩形&#xff08; &#xff09;下列哪个选项表示依赖该D…

一键云端,AList 整合多网盘,轻松管理文件多元共享!

hello&#xff0c;我是小索奇&#xff0c;本篇教大家如何使用AList实现网盘挂载 可能还是有小伙伴不懂&#xff0c;所以简单介绍一下哈 AList 是一款强大的文件管理工具&#xff0c;为用户提供了将多种云存储服务和文件共享协议集成在一个平台上的便利性。它的独特之处在于&am…