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


    问题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字节视频(即时传输)

     

                 

  • 相关阅读:
    后端接口的查询方式
    Android Studio 查看Framework源码
    “AI在未来”公益计划,亚马逊云科技将教育资源带到更多中西部学校
    vue多级路由,实现前台,后台,登录注册界面同级
    jdbc操作mysql
    Firefly RK3399 PC pro开发板资料
    某集团营销、制造多公司业财一体核算整体流程图(ODOO15/16)
    【数据结构】链表与LinkedList
    【计算机网络】(谢希仁第八版)第一章课后习题答案
    Ubuntu22.04 | 安装Matlab2021b
  • 原文地址:https://blog.csdn.net/weixin_53988377/article/details/133174746