计算机网络常见面试题

本文详细解释了OSI七层模型和TCP/IP四层模型的区别,重点介绍了TCP的三次握手和四次挥手过程,以及流量控制、滑动窗口和拥塞控制的概念。同时对比了TCP和UDP在面向连接、可靠传输、性能效率和首部格式上的特点。
摘要由CSDN通过智能技术生成

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

        OSI网络七层模型是ISO组织定义的一个计算机互联的分层模型,从上至下依次包括:应用层表示层会话层传输层网络层链路层物理层

        互联网实际使用的TCP/IP模型是OSI七层网络模型的简化版,一共分为4层:应用层传输层网络层网络接口层(数据链路层、物理层)

01 应用层

        应用层协议负责定义应用进程(进程:正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议,应用层交互的数据单元称为报文。在应用层中常见的协议有:

    • 域名系统 DNSDNS,Domain Name System用于将域名解析成IP地址;
    • HTTP 协议HTTP,HyperText Transfer Protocol超文本传输协议,最初的目的用于发布和接受HTML网页,是目前互联网应用最广泛的网络协议;
    • 电子邮件协议:常用的电子邮件协议有SMTPPOP3IMAP4
    • 远程登录协议:Telnet协议是Internet远程登录服务的标准协议和主要方式,基本功能是允许用户登录进入远程主机系统;
    • 文件传输协议File Transfer ProtocolFTP协议用于在网络上进行文件传输的一套标准协议,FTP允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信;

02 传输层

        传输层协议负责定义两台主机进程之间的通信,提供数据传输服务,提供端到端的可靠传输,主要使用TCP协议和UDP协议;

    • TCPTransmission Control Protocol协议:传输控制协议,提供面向连接、可靠的数据传输服务,TCP 主要提供完整性服务。
    • UDPUser Datagram Protocol协议:用户数据报协议,提供无连接、尽最大努力的数据传输服务(不保证数据传输的可靠性),UDP 主要提供及时性服务。

03 网络层

        在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。在发送数据时,网络层把传输层产生的报文段或用户数据报封装成分组和包进行传送,网络层使用的协议是IP协议。

        互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来的。互联网使用的网络层协议是无连接的网际协议(Internet Protocol)和许多路由选择协议。

04 网络接口层

网络接口层包括:数据链路层和物理层两部分

  • 数据链路层:通常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。 在两个相邻节点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻节点间的链路上传送帧。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。
  • 物理层:在物理层上所传送的数据单位是比特bit,物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,屏蔽掉具体传输介质和物理设备的差异, 使其上面的数据链路层不必考虑网络的具体传输介质。物理层仅专注01比特流和电压高低、光的闪灭之间的互换。

2.谈谈TCP协议的3次握手过程?

注意区分ACKack

  • ACK 控制位字段中的一个标志位,占 1位,代表对已接受数据的确认;
  • ack确认号字段,占4字节,告诉发送方下一个要发送的报文段数据中第一个字节的序号;

 1.TCP三次握手是客户端向服务器端建立链接,客户端先向服务器发送一个同步的数据包(STN=1,ACK=0,seq=x)

2.服务器收到数据包后,根据SYN=1ACK=0,判断出为主动建立连接的数据包。若服务器同意连接,则服务器发送一个数据包进行回应(SYN=1,ACK=1,seq=y,ack=x+1)

3.客户端收到服务器的确认之后,再给服务器发送一个数据包(SYN = 0,ACK = 1,seq = x+1

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

        三次握手的主要作用是为了避免重复连接,防止旧的重复连接引起连接混乱问题。

        通过三次握手,可以得到一个确认的可靠初始化序列号seq,用于进行可靠性传输。

        若发送两次,则无法初始化序列号,只能确定是否需要发送报文,客户端不会再向服务器发送请求,所以不能发送两次。

        所以TCP协议最少需要通过三次握手建立连接,四次或五次也是可以的,实现TCP连接的稳定性,但会浪费资源,所以三次握手是最节约资源的连接方式

4.谈谈TCP协议的四次挥手过程?

        TCP四次挥手是为了释放资源。

1.客户端服务器发送连接释放请求的报文,并停止发送数据(FIN = 1,ACK = 0

2.服务器收到连接释放的报文之后,给客户端发送确认报文。从客户端服务器这个方向上的连接就释放了,TCP连接处于半关闭状态。此时客户端无法发送数据给服务器,但是服务器还可以发送数据给客户端客户端仍可以接收(FIN = 0,ACK = 1,seq = v,ack = u+1

3.若服务器已经没有向客户端发送的数据了,其应用进程就通知TCP释放连接,并向客户端发送确认报文(ACK = 1,FIN = 1

4.客户端收到服务器的连接释放报文段后,向服务器发出确认报文(ACK = 1,FIN = 0)

5.什么是流量控制?

        流量控制是为了控制发送方发送速率,保证接收方来得及接收。

        TCP连接的每一方都有固定大小的缓冲区,TCP的接收端只允许发送端发送接收端缓冲区的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失,从而实现流量控制。

        TCP使用的流量控制是利用滑动窗口实现。

        接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。讲窗口字段设置为0,则发送方不能发送数据。

6.什么是滑动窗口?

        滑动窗口是TCP协议用于实现流量控制的一种机制。

        发送方和接收方分别维护各自的缓冲区,这个缓冲区就是窗口。发送方的窗口大小由接收方的TCP首部的窗口字段决定。

        发送方将窗口内容分为:已发送并确认,已发送未确认,未发生未超出接收方窗口范围,未发送但超出接收方窗口范围。随着接收方的确认,发送方将不断在窗口内向前滑动。

        接收方将窗口内容分为: 接受已确认,未收到但可以接受。接收方读取窗口内容,并不断确认通知发送方,窗口向前滑动。接收方通过改变窗口大小,可以控制发送方的速率,从而实现流量控制。

7.什么是拥塞控制?

        发送方需要维护一个叫做拥塞窗口( cwnd )的状态变量,来决定发送方可以同时发送多少数据包。数据包的数量多与少,将决定网络中产生拥塞的可能性大与小。 TCP 主要通过四个算法来进行拥塞控制: 慢开始、拥塞避免、快重传、快恢复
        慢开始: 拥塞窗口从 1 开始,采用加倍计算方式,由小到大逐渐增大。

        拥塞避免: 慢开始每个轮次都将 cwnd 加倍,这样会让 cwnd 增长速度非常快从而使得发送方发送的速度增长速度过快,网络拥塞的可能性也就更高。设置一个慢开始门限 ssthresh ,当 cwnd >= ssthresh 时,进入拥塞避免,每个轮次只将 cwnd 加 1,降低拥塞窗口的增长速度。

        快重传: 在接收方,要求每次接收到报文段后,都应该对最后一个已收到的报文段进行确认,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段

        快恢复: 快恢复是配套快重传使用,当执行快重传时,就执行“乘法减小( ssthresh x 0.5 )”算法,把慢开始门限 ssthresh 减半,同时执行拥塞避免,使拥塞窗缓慢地线性增大。

8.TCP和UDP有什么区别?

  • 面向连接:TCP协议需要建立连接,仅支持一对一通信;UDP协议无需建立连接,支持一对一、一对多、多对一和多对多的交互通信。
  • 可靠传输:TCP协议通过确认应答、连接管理、流量控制、拥塞控制来确保可靠性传输;UDP不保证可靠性传输。
  • 性能效率:TCP协议传输效率慢,需要较多的资源开销。UDP协议传输效率快,需要较小的资源开销。
  • 首部格式:TCP协议的首部需要20~60个字节,UDP协议需要8个字节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值