计算机网络高频面试题集锦

问题1:谈一谈对OSI七层模型和TCP/IP四层模型的理解?

回答点:七层模型每层对应的作用及相关协议、为什么分层、为什么有TCP/IP四层模型

参考:

1、OSI七层参考模型是一个ISO组织所提出的一个标准参考分层模型,它按照数据传输过程所涉及的传输设备、方式、功能职责的不同将数据传输划分为了7层,从上到下依次:

  • 应用层:提供两个终端设备上应用程序之间信息交换的服务,HTTP、SMTP、POP3、DNS、FTP、TELNET

  • 表示层:提供各种用于应用层数据的编码和转换功能,确保能被另一个系统的应用层所识别

  • 会话层:为不同应用程序之间建立连接提供服务

  • 传输层:负责向两台终端设备进程之间的通信提供通用的数据传输服务,TCP、UDP

  • 网络层:为分组交换网络上的不同主机提供通信服务,IP

  • 数据链路层:将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧

  • 物理层:实现相邻计算机节点之间比特流的透明传输
    2、分层目的:

  • 各层之间相互独立,各司其职,与我们在开发时的分层是一样的

  • 提高整体的灵活性,与平时开发要求的高内聚、低耦合一致

  • 让大问题------》多个小问题,让复杂的计算机网络系统变得易于设计、实现
    3、但是OSI七层参考模型的设计是相对复杂的,设计成本高,是一个理想状态下的分层模型,而在实际应用中,为了简便我们的开发与设计提出了TCP/IP四层模型,它是对于OSI七层模型的一个简化。将应用层+表示层+会话层=应用层,数据链路层+物理层=网络接口层,通常实际开发中常采用传输层TCP协议+网络层IP协议故称为TCP/IP协议

问题2:谈谈TCP协议的3次握手过程?

回答点:TCP协议的特点(面向连接、可靠传输)、三次握手过程

参考:

TCP协议是一个面向连接,基于字节流可靠通信的传输层协议。在双方进行通信时需要三次握手来建立连接保证数据传输的可靠性。

第一次握手:C端------》S端发送SYN=1数据包【请求建立连接】,C端进入SYN-SENT状态;

第二次握手:S端手段C端发送的SYN=1数据包,接着C端------》S端发送SYN=1,ACK=1的数据包【同意连接并对第一次握手的数据包进行确认】,C端从listen状态进入SYN-RCVD状态。

第三次握手:C端收到S端发送的SYN=1,ACK=1的同意连接报文段后,进入ESTABLISHED状态,向S端发送ACK=1的数据包【再次对第二次握手S端发来的数据包进行确认】,S端收到后也进入ESTABLISHED状态。

当C端与S端都进入ESTABLISHED状态时,表示可靠连接以建立完成,可以进行数据的通信了。

问题3:TCP协议为什么要3次握手?2次,4次不行吗?

回答点:每一次握手的意义、2次握手确认双发网络正常、4次浪费资源

参考:

第一次握手:发起建立连接请求;"XXX,咱们去看电影吧"

第二次握手:确认并同意连接请求;"可以啊"

第三次握手:对第二次的连接进行确认;"那咱们走吧"

前两次握手完成只能确认C端与S端之间的网络是顺畅的,并不能保证建立了可靠的传输。

例如:当C端向S端第一次发送请求连接报文时,由于网络等原因,迟迟没有到S端,C端又重新向S端发送了请求连接报文,这一次很顺畅的到了S端,S端并进行了确认。若这时,C端第一次发送的请求连接报文到了S端,S端以为C端再一次进行连接就会再次发送确认报文,而C端已经收到过一次确认报文,所以此次的确认报文它会忽略,而S端发送了确认报文后会一直等待C端的回应,就会造成S端一直等待,浪费资源,甚至服务器停止响应。2次不能够保证可靠的连接,也不能避免重复连接或连接混乱问题。在经历过3次握手稳定的连接已建立,再次传输浪费资源。所有三次是最佳的既节省资源又能建立可靠连接的次数

问题4:谈谈TCP协议的四次挥手过程?

回答点:连接管理(断开连接节省资源),四次挥手传输的标志位

参考:

TCP面向连接的可靠传输过程,建立连接来发送数据保证数据的可靠性,这条连接是占用资源的。当双方通信完成后,会通过四次回收来释放连接,对资源进行回收。四次回收过程如下:

第一次挥手:C端------》S端发送FIN=1的数据包,请求释放连接

第二次挥手:S端收到释放连接数据包,S端------》C端发送ACK=1数据包,进行确认

此时双方的连接状况:C端不能再向S端传输数据了,S端仍可以继续向C端传数据,C端也可接收

第三次挥手:当S端不在向C端发送数据时,会再次向C端发送ACK=1,FIN=1数据包【释放连接】

第四次挥手:C端收到S端的释放连接数据包,再次进行确认向S端发送ACK=1数据包,S端接收

经历四次握手后,双方断开连接,梳理一下双方每次挥手的状态:

第一次:C端------》等待1

第二次:C端------》等待2,S端------》等待关闭

第三次:C端------》超时等待,S端------》最后确认

第四次:C端------》CLOSED,S端------》CLOSED

问题5:什么是流量控制?

回答点:含义、如何实现

流量控制是指接收方根据窗口大小对于发送方所发送数据包的限制,通过流量控制,让发送方所发送的数据接收方能够有效的全部接收,避免丢包引起的重传机制而带来不必要的消耗。

流量控制需要通过滑动窗口来实现,接收方发送的确认报文中的窗口字段可以控制发送方窗口的大小,从而影响发送方的发送速率,若窗口字段设置为0,则不能发送数据

问题6:什么是滑动窗口?

回答点:概念、作用

滑动窗口通过拥塞窗口值指定发送方每次能发送数据包的个数。发送方和接收方分别维护了各自的缓冲区,也称窗口。发送方窗口的大小由接收方中TCP首部的窗口字段决定。发送方将窗口内容分为:已发送已确认、已发送未确认、未超出发送窗口范围的未发送数据,已超出发送窗口范围的未发送数据。随着接收方确认,发送方的窗口不断向前滑动

问题7:什么是拥塞控制?

回答点:含义、作用、实现

拥塞控制是指对整个网络中传输的数据包多少进行控制,控制的目的就是避免「发送方」的数据填满整个网络,控制「发送方」的数据发送量。拥塞控制主要通过4个算法来实现:

1、慢启动:刚来时发送数据包个数少,"试探性"发送,依次呈指数增长,直到超过慢启动门限,发生拥塞的可能性就变大了,会利用拥塞避免处理

2、拥塞避免:超过慢启动门限后,不再呈指数增长,能发送的数据包数逐次+1,当发生丢包触发重传机制后,会使用拥塞发生处理

3、拥塞发生:重传机制有2种

当使用超时重传机制:

(1)将门限值ssthresh设为拥塞窗口值cwnd的一半【ssthresh=cwnd/2】

(2)拥塞窗口值cwnd设为1,回到慢启动【cwnd=1】

使用快速重传机制:

(1)将门限值ssthresh设为拥塞窗口值cwnd的一半【ssthresh=cwnd/2】

(2)拥塞窗口值cwnd设为原来的一半+3【cwnd=cwnd/2+3】

4、快速开始:在拥塞发生时采用快速重传机制就会快速开始

快速开始是在拥塞情况并不那么严重,很快就能恢复网络的通信状况的一个算法

问题8:TCP和UDP有什么区别?

回答点:是否连接、可靠、首部长度、使用场景

|-----|-------|-----|-----------|----------|
| TCP | 面向连接 | 可靠 | 首部20-60字节 | 数据传输要求严格 |
| UDP | 面向无连接 | 不可靠 | 首部8字节 | 视频(即时传输) |

相关推荐
龙哥说跨境1 小时前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
懒大王就是我1 小时前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
Elaine2023911 小时前
06 网络编程基础
java·网络
海绵波波1072 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
热爱跑步的恒川5 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面6 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
音徽编程8 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust
幺零九零零10 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
23zhgjx-NanKon10 小时前
华为eNSP:QinQ
网络·安全·华为
23zhgjx-NanKon10 小时前
华为eNSP:mux-vlan
网络·安全·华为