面试计算机网络八股文五问五答第二期
作者:程序员小白条,个人博客
相信看了本文后,对你的面试是有一定帮助的!
⭐点赞⭐收藏⭐不迷路!⭐
1.OSI七层协议?
2. TCP和UDP传输协议的区别?
- TCP是可靠的传输协议,你知道它怎么实现的一些拥塞控制,或者说对于数据发送量的合理限制?
TCP(传输控制协议)通过拥塞控制和流量控制来实现可靠的数据传输。其中,拥塞控制是TCP用来控制网络拥塞和避免网络超载的机制,而流量控制是用来控制数据发送方与接收方之间的数据流量的机制。
拥塞控制主要通过以下几个算法来实现:
- 慢启动(Slow Start):在建立连接时,TCP发送方初始将拥塞窗口设置为一个较小的值,然后每收到一个确认,拥塞窗口指数式增加,以适应网络的容量。
- 拥塞避免(Congestion Avoidance):一旦拥塞窗口达到一个阈值(拥塞窗口大小的一半),TCP发送方就采用线性增加的方式增加拥塞窗口,以更稳定地发送数据。
- 快速重传(Fast Retransmit):如果TCP发送方连续接受到3个重复的确认(ACK),即表明网络中有一段丢失的数据,TCP发送方将立即重传这些数据,而不必等待超时。
- 快速恢复(Fast Recovery):在进行快速重传后,TCP发送方将拥塞窗口减半,并且进入快速恢复状态。在此状态下,每收到一个确认,拥塞窗口仍然线性增加,但增加的速度较慢。
对于数据发送量的合理限制,TCP使用了流量控制机制来确保接收方能够跟上发送方的发送速度。流量控制通过使用滑动窗口(Sliding Window)来限制发送方的数据发送量,确保不会使接收方无法处理大量数据。
滑动窗口的大小由接收方动态调整。每次接收方收到一定数量的数据后,会向发送方发送一个确认,确认中包含了接收方的可用窗口大小。发送方根据接收方返回的可用窗口大小来动态调整发送的数据量,以保持发送方和接收方的数据传输速度的平衡。
通过拥塞控制和流量控制的机制,TCP能够根据网络的状况和接收方的处理能力来合理地限制数据发送量,同时保证网络的稳定和可靠性。
3. 拥塞控制、超时重传的具体原理?
拥塞控制:
拥塞控制的目的是避免网络中的拥塞,保证网络的稳定性。TCP使用拥塞窗口(Congestion Window)来控制发送方的数据发送速率。
慢启动:当TCP建立连接时,发送方将初始拥塞窗口设置为一个比较小的值(一般为一个报文段的大小),然后随着收到的确认报文的增加,指数级地增加拥塞窗口的大小。这样做的目的是保守地探测当前网络的容量,避免一开始就发送大量数据造成网络拥塞。
拥塞避免:一旦拥塞窗口达到一个阈值(拥塞窗口大小的一半),TCP发送方采用线性增加的方式增加拥塞窗口,以更稳定地发送数据。即拥塞窗口的增加速率由指数增长变成线性增长,减缓拥塞窗口增长的速度。
快速重传:当接收方收到的重复确认(ACK)达到一定数量时,表示发送的数据部分被丢失,TCP发送方会立即重传对应的丢失部分数据,而不必等待超时。
快速恢复:在进行快速重传后,TCP发送方将拥塞窗口减半,并进入快速恢复状态。在这个状态下,拥塞窗口仍然线性增加,但增加速度降低。
超时重传:
当数据发送后,TCP发送方会启动一个定时器,等待接收方发送确认报文。如果在定时器时间内没有收到确认,则认为数据丢失,TCP发送方会立即重传该数据。
超时时间的选择是有一定策略的,一般会根据网络环境动态调整。如果确认报文的返回时间很短,则认为网络较好,可以采用较短的超时时间。反之,若返回时间较长,则认为网络拥塞或延迟较高,需要设置较长的超时时间。
超时重传主要用于检测丢失的数据,并尽快重新发送以保证数据的可靠传输。但超时重传容易造成网络拥塞,因此拥塞控制机制与超时重传机制相互配合,对网络拥塞进行控制与避免。
4.Http 2.0 相比 1.0做了哪些更新?
- 二进制传输:HTTP/2.0 使用二进制格式来传输数据,而 HTTP/1.1 使用文本格式。二进制格式更加紧凑和高效,减少了传输的开销,使数据传输更快。
- 多路复用(Multiplexing):HTTP/2.0 允许多个请求和响应同时在单个连接上传输,而不需要像 HTTP/1.1 那样在多个连接上传输。这提高了性能,减少了延迟,特别对于加载网页中的多个资源文件非常有益。
- 头部压缩:HTTP/2.0 使用 HPACK 算法对 HTTP 头部进行压缩,减小了头部信息的传输开销。在 HTTP/1.1 中,每次请求和响应都会包含重复的头部信息,而 HTTP/2.0 可以显著减小这种冗余。
- 服务器推送(Server Push):HTTP/2.0 允许服务器主动向客户端推送资源,而不需要客户端显式请求。这有助于加速页面加载,减少了客户端发起请求的次数。
- 优化流量控制:HTTP/2.0 提供了更好的流量控制机制,允许客户端和服务器更好地管理数据流量,避免了拥塞。
- 安全性:虽然 HTTP/2.0 不要求使用加密,但现实中,几乎所有的 HTTP/2.0 连接都使用了加密,通常使用 TLS/SSL,以提高安全性和隐私。
- 适应性:HTTP/2.0 可以更好地适应不稳定的网络条件,如高延迟或丢包率高的情况,提供更好的性能。
5.TCP 有哪些字段?
传输控制协议(Transmission Control Protocol,TCP)是一种传输层协议。TCP使数据包从源到目的地的传输更加顺畅。它是一种面向连接的端到端协议。每个数据包由TCP包裹在一个报头中,该报头由10个强制字段共20个字节和一个0到40 字节的可选数据字段组成
1.源端口号(Source Port):16bits,该字段标识发送方应用程序的端口号。
2.目标端口号(Destination Port):16bits,该字段标识接收方应用程序的端口号。
3.序列号(Sequence Number):32bits,在连接建立(三次握手)后,该字段包含一个32位随机初始序列号/起始数据位,随后增加传输的字节数。
4.确认应答号(Acknowledgement Number):32bits,接收方使用这个32位参数来请求下一个TCP段。它是下一个预测的TCP段的序列号。
5.报头长度(Header Length):4bits,该字段表示TCP报头的大小,但是是按比例缩小的版本。
6.保留位(Reserved):6bits,该字段的位设置为零。这些位保留供以后使用。
7.标志位(Flags bits):6bits,一组六个字段,每个字段长一位。TCP标志用于指示TCP会话期间的特定状态,可用于故障排除或控制特定连接的处理方式。每个标志位值为1,表示特定标志为”设置”。