计算机网络面试真题总结(三)

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

文章收录在网站:http://hardyfish.top/

TCP 和 UDP 分别对应的常见应用层协议有哪些?

TCP 对应的应用层协议

FTP:

  • 定义了文件传输协议,使用 21 端口。
    • 常说某某计算机开了 FTP 服务便是启动了文件传输服务。
      • 下载文件,上传主页,都要用到 FTP 服务。

Telnet:

  • 它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上

SMTP:

  • 定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。

POP3:

  • 它是和 SMTP 对应,POP3 用于接收邮件。

HTTP:

  • 从 Web 服务器传输超文本到本地浏览器的传送协议。

UDP 对应的应用层协议

DNS:

  • 用于域名解析服务,将域名地址转换为 IP 地址。DNS 用的是 53 号端口。

SNMP:

  • 简单网络管理协议,使用 161 号端口,是用来管理网络设备的。
    • 由于网络设备很多,无连接的服务就体现出其优势。

TFTP(Trival File Transfer Protocal):

  • 简单文件传输协议,该协议在熟知端口 69 上使用 UDP 服务。

什么是ICMP协议?

ICMP(Internet Control Message Protocol)是一种网络协议

  • 它用于在 IP 网络中传递错误信息和控制消息。
    • ICMP 是在 IP 协议的基础上构建的协议,它是在网络层进行通信的。

ICMP 主要有两个作用:

提供网络的错误报告机制:

  • 当在网络通信中发生错误或故障时,ICMP 可以生成错误报告,并将报告发送给源主机。
    • 比如,在路由选择失败、目标主机不可达或传输超时等情况下,会发送 ICMP 错误报告给源主机,通知发生了问题。

支持网络的控制消息:

  • ICMP 还支持网络中的控制消息传递。
    • 例如,ICMP 可以用于执行网络探测和诊断,如发起 Ping 命令(Echo 请求和 Echo 响应)进行网络连通性测试。

常见的 ICMP 消息类型包括:

  • Echo 请求和 Echo 响应:用于网络探测和连接测试。
  • 目标不可达:当一个数据包无法到达目标时,发送此消息通知源主机。
  • 超时:当数据包经过一定时间后未能到达目标,发送此消息通知源主机。
  • 重定向:用于告知主机优化数据包的传输路径。
  • 时间戳请求和时间戳响应:用于进行时间同步。

ICMP 是一种非常重要的网络协议,在 IP 网络中起着诊断和通信的作用。

  • 它协助网络管理员调试和定位问题,在网络通信中起到检测和响应错误的作用,提高网络的可靠性和效率。

谈谈你对 ARQ 协议的理解?

ARQ 全称 Automatic Repeat reQuest,中文意思是 自动重传请求,然后这个其实有好几种

  • 比如你可能听说过停等ARO,连续ARQ,回退N步ARO,容易混淆,所以下面先说一下他们的一个概念。

自动重传请求分成为三种:

  • 即停等式(stop-and-wait)ARQ,回退n帧(go-back-n)ARQ,以及选择性重传(selective repeat)ARQ

后两种协议是滑动窗口技术与请求重发技术的结合

  • 由于窗口尺寸开到足够大时,帧在线路上可以连续地流动,因此又称其为连续ARQ协议

所以我们又可以简单分成两种:

  • 停止等待协议和连续 ARQ 协议

停止等待协议 是一种简单的 ARQ 协议,每当发送方发送一个数据包后,就会停止发送并等待接收方的确认信号。

  • 只有收到确认信号后,发送方才会继续发送下一个数据包。
  • 该协议的缺点是会浪费大量的时间在等待确认信号上。

连续 ARQ 协议 是一种改进的 ARQ 协议,它可以在等待确认信号的同时,继续发送其他的数据包,可提高信道利用率。

大概就是:发送方维持一个发送窗口,凡位于发送窗口内的分组可以连续发送出去,而不需要等待对方确认。

  • 接收方一般采用累计确认,对按序到达的最后一个分组发送确认,表明到这个分组为止的所有分组都已经正确收到了。

TCP 协议是如何保证可靠传输的?

应答机制

  • TCP协议采用应答机制,即发送端每发送一个数据包就会等待接收端的确认应答。
  • 如果发送端在规定时间内没有收到确认应答,就会重新发送数据包,直到接收到确认应答为止。

超时重传

  • 当发送端发送数据包后,在规定时间内没有收到确认应答,就会进行超时重传,重新发送该数据包。

数据校验

  • TCP协议使用校验和机制对数据包进行校验,以保证传输的数据包没有被篡改。
  • 接收端在接收到数据包后,会对其进行校验,如果发现校验和错误,则会丢弃该数据包,并通知发送端进行重传。

滑动窗口

  • TCP协议采用滑动窗口机制来控制发送端的发送速度,以避免发送过快导致接收端处理不过来。
  • 发送端根据接收端的反馈,动态调整发送窗口的大小,以达到最优的传输速率。

流量控制

  • TCP协议通过流量控制机制来限制发送端的发送速度,以避免网络拥塞。
  • 接收端可以通过发送窗口的大小来告诉发送端自己的接收能力,从而控制发送端的发送速度。

拥塞控制

  • TCP协议通过拥塞控制机制来避免网络拥塞。发送端根据网络的拥塞程度来调整发送速度
    • 以避免过多的数据包在网络中造成拥塞。
  • 同时,TCP协议还支持快速恢复和快速重传机制,以更快地适应网络拥塞的变化。

什么是流量控制?

TCP流量控制是一种内置于TCP协议的机制,用于防止发送方把接收方的缓冲区塞满,以避免数据丢失。

  • 简单地说,就是保证发送者不会将数据发送得过快,导致接收者无法接收。

TCP流量控制的工作方式是每个TCP段都有一个窗口大小字段,这个字段告诉发送者接收端的可用缓冲区大小。

  • 接收方通过更改这个窗口大小值来告诉发送方他还能接收多少数据。
  • 如果接收方的缓冲区被填满了,它就会将窗口大小设置为0,这时发送方就会停止发送数据,直到接收方再次更新其窗口大小。

TCP 是如何实现流量控制的?

TCP实现流量控制主要依赖于滑动窗口机制。

滑动窗口不仅是一种流量控制手段,也是一种可靠传输的手段。

  • 它的基本思想是:
    • 每个TCP连接都有两个窗口,一个是发送窗口,另一个是接收窗口。
      • 窗口大小是动态变化的。

发送窗口的大小由自己和接收方协商得出,不能超过接收窗口的大小。

  • 当发送方发送数据时,会根据窗口的大小来确定可以发送的数据量。
  • 当数据发送出去后,发送窗口就会向右滑动。

接收方在接收到数据后,会向发送方发送确认,确认号表示的是接收方期望接收的下一个数据字节的序号

  • 同时还会告诉发送方自己的接收窗口大小。

如果接收方处理数据的速度慢,那么接收窗口的大小就会减小,甚至变为0

  • 此时发送方就不能再发送数据,这样就实现了流量控制。

举个例子,假设你正在下载一个大文件,当你的硬盘写入速度跟不上网络下载速度时

  • 你的计算机会告诉发送方减小发送窗口的大小,减慢发送数据的速度,这样你的硬盘就有足够的时间来处理这些数据。
相关推荐
前端双越老师19 分钟前
前端面试常见的 10 个场景题
前端·面试·求职
Lee川16 小时前
优雅进化的JavaScript:从ES6+新特性看现代前端开发范式
javascript·面试
Lee川20 小时前
从异步迷雾到优雅流程:JavaScript异步编程与内存管理的现代化之旅
javascript·面试
晴殇i1 天前
揭秘JavaScript中那些“不冒泡”的DOM事件
前端·javascript·面试
绝无仅有1 天前
Redis过期删除与内存淘汰策略详解
后端·面试·架构
绝无仅有1 天前
Redis大Key问题排查与解决方案全解析
后端·面试·架构
AAA梅狸猫1 天前
Looper.loop() 循环机制
面试
AAA梅狸猫1 天前
Handler基本概念
面试
Wect1 天前
浏览器缓存机制
前端·面试·浏览器
掘金安东尼1 天前
Fun with TypeScript Generics:玩转 TS 泛型
前端·javascript·面试