计算机网络常见面试题总结

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

1.1 OSI七层模型

七层模型的目的是为了简化网络各层的操作,提供标准接口便于实现和维护,从下到上依次包括:物理层,数据链路层,网络层,传输层,应用层,表示层,会话层

\bullet 第一层:物理层,实现相邻计算机之间比特流的的传输

\bullet 第二层:数据链路层,管理相邻节点的数据通信

\bullet 第三层:网络层,路由和寻址

\bullet 第四层:传输层 ,为两台主机进程之间通信提供数据传输服务

\bullet 第五层:会话层,管理会话之间的重连

\bullet 第六层:表示层,用于处理数据

\bullet 第七层:应用层,为用户提供服务

1.2 TCP/IP四层模型

OSI七层模型十是理想化模型,互联网实际使用的是TCP/IP四层模型,是七层模型的简化版,分为:应用层(会话层,表示层,应用层),传输层,网络层,网络接口层(数据链路层,物理层)

1.2.1 网络接口层

把电脑连接起来

1.2.2 网络层

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

1.2.3 传输层

\bullet TCP协议:传输控制协议,提供面向连接、可靠的数据传输服务,提供完整服务; 

\bullet UDP协议:用户数据报协议,提供无连接、尽最大努力的数据传输服务(不保证数据传输的可靠性),主要提供及时性服务;

1.2.4 应用层

应用层协议负责定义应用进程间的通信和交互的规则,对于不同网络应用需要不同的应用层协议。在应用层常见协议:

\bullet 域名解析协议 DNS:用于将域名解析成IP地址;

\bullet HTTP协议:超文本传输协议,目的用于发布和接受HTML网页,是目前互联网应用最广泛地协议;

\bullet 电子邮件协议:常见的电子邮件协议有SMTP、POP3、IMAP4;

\bullet 远程登录协议:Telnet协议是Internet远程登录协议的标准协议和主要方式,基本功能是允许用户登录进入远程数计系统;

\bullet 文件传输协议 FTP:用于在网络上进行文件传输的一套标准协议,FTP允许用户以文件操作的方式,与另一台主机相互通信;

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

TCP协议通过三次握手建立连接。

\bullet 第一次握手

        \circ 客户端向服务器发送一个同步数据包(报文段)

        \circ 数据包的TCP首部内容:同步SYN=1,确认ACK=0,序号seq=x

        \circ 根据TCP首部内容,表示这是一个请求建立连接的数据包,其中seq=x为所传送的第一个字节的序号。

\bullet 第二次握手

        \circ 服务器收到客户端发送的第一个数据包后,根据SYN=1,与ACK=0,判断出为主动建立连接的数据包。

        \circ 若服务器同意连接,则服务器发送一个数据包进行回应。

        \circ 数据包的TCP首部内容:同步SYN=1,确认ACK=1(代表同意建立连接),序号seq=y,确认ack=x+1;

\bullet 第三次握手

        \circ 客户端收到服务器的确认之后,再给服务器发送一个数据包

        \circ 数据包的TCP首部内容:同步SYN=0(表示双方已同意建立连接),确认ACK=1(表示收到服务器的确认数据包),序号seq=x+1,确认号ack=y+1;

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

\bullet TCP协议的3次握手的作用是为了建立连接时,避免重复连接,防止旧的重复数据连接引起的连接混乱问题。

\bullet 用于进行可靠性传输,而如果有2次握手,测无法初始化序列号seq。

总上所述,TCP协议至少通过3次握手建立连接。当然,也可以通过4次或5次握手建立连接,实现TCP的稳定性,但3次握手是最节省资源的连接方式。

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

 TCP协议通过4次挥手释放连接

\bullet 第一次挥手

        \circ 首先客户端向服务器发送连接释放的请求报文,并停止发送数据。

        \circ 在连接释放报文的TCP首部中:终止FIN=1(意味着客户端要主动释放客户端到服务器的TCP连接),确认ACK=0;

\bullet 第二次挥手

        \circ 服务器收到连接释放的报文之后,给客户端发送确认报文。从客户端到服务器这个方向的连接就释放了,TCP连接处于半关闭状态。此时客户端无法发送数据给服务器,但是服务器还可以发送数据给客户端,客户端仍可以接受。

        \circ 在服务器发送给客户端确认报文的TCP首部中:终止FIN=0,确认ACK=1(表示收到了客户端发送的数据包,统一客户端释放连接),序号位seq=v,确认号ack=u+1;

\bullet 第三次挥手

        \circ 若服务器已经没有向客户端发送的数据了,其应用进程就通知TCP释放连接,并向客户端发送确认报文。

        \circ 确认报文首部:确认ACK=1(表示服务器已经把数据发完了),终止FIN=1(表示服务器要释放服务器到客户端的连接)

\bullet 第四次挥手

        \circ 客户端收到服务器的连接释放报文后,向服务器发出确认报文。

        \circ 报文首部:确认ACK=1(表示收到服务器的确认报文,并同意服务器释放连接),终止FIN=0

5. 什么是流量控制

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

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

TCP使用流量控制是用滑动窗口实现,接收方发送的确认报文中的窗口字段可以控制发送窗口大小,从而影响发送方的发送速率。

6. 什么是滑动窗口

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

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

发送方窗口分为:已发送并确认,已发送未确认,未发送未超出接收方窗口范围,未发送但超出接收方窗口范围

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

7. 什么是拥塞控制

发送方需要维护一个叫拥塞窗口(cwnd)的状态变量,来决定发送方同时可以发送多少数据包。数据包的数量,将决定网络中产生拥塞的可能性。TCP主要通过四个算法进行拥塞控制:慢开始、拥塞避免、快重传、快恢复

\bullet 慢开始:拥塞敞口从1开始,采用加倍计算方式,有小到大逐渐增大。

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

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

\bullet 快恢复:快恢复是配套快重传使用,当执行快重传时,就实行“ssthresh x 0.5”算法,把慢开始门限ssthresh减半,同时执行拥塞避免,使拥塞窗口缓慢的现行增大。

8. TCP和UDP有什么区别

\bullet 面向连接:TCP协议需要建立连接仅支持一对一通信;UDP协议无需建立连接,支持一对一一对多,多对一,多对多的交互通信。

\bullet 可靠传输:TCP协议通过确认应答、连接管理、流量控制、拥塞控制来确保可靠性传输;UDP不保证可靠性传输。

\bullet 性能效率:TCP协议传输效率慢,需要较多的资源开销。UDP协议传输效率快,需要较少的资源开销。

\bullet 首部格式:TCP协议的首需要20-60个字节,UDP协议需要8个字节。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值