计算机网络面试常见题.(一)md

计算机网络面试常见题

1.五层协议体系结构及各层作用

1.应用层

应用层的任务是通过应用进程间的交互来完成特定的网络应用。应用层协议定义的是应用进程之间通信和交互的方式,对于不同的应用程序有不同的应用层协议。常见的有域名系统DNS,万维网应用的HTTP协议

2.运输层

运输层主要负责为两台主机的进程之间的通信提供通用数据传输服务,应用进程利用该服务传递应用层报文。通用的数据传输服务指的是不针对某一特定的网络应用,而是多种网络可以使用同一个运输层服务。运输层协议主要有两种 TCP:提供面向连接的,面向字节流的可靠的数据传输服务。UDP:提供无连接,尽最大努力传输数据(但不保证数据传输的可靠性)的数据传输服务。

3.网络层

在计算机网络进行通信的两台主机之间,可能要经过很多的数据链路和通信子网,网络层的任务就是选择合适的网间路由和交换节点,保证数据能够及时传输。

网络层使用 IP 协议,因此分组也叫 IP 数据报 ,简称 数据报

4.数据链路层

两台主机间进行数据传送总是在一段段数据链路上进行的,这就需要专门的链路层协议,数据链路层将网络层交来的ip数据报组装成帧,在相邻链路节点上传送帧。每一帧包含必要的数据和控制信息。

5.物理层

物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异

2.TCP三次握手四次挥手

三次握手过程:

服务器新建套接字并绑定地址,进入listen状态,客户端新建套接字并绑定地址,调用connect,向服务器发出SYN请求建立连接并进入syn_sent状态,服务器收到客户端发来的连接请求后,就把这个连接放入内核的等待队列中,并向发送syn和确认报文段ack,并进入syn_recd状态,一旦客户端收到服务器发来的syn-ack报文段之后,客户端就向服务器发送ack确认报文段并进入established状态,服务器收到客户端的ack确认报文后也进入established状态,并开始传输数据。
在这里插入图片描述

三次握手的目的:

三次握手是为了让通信双方确认自己和对方接受和发送数据的能力,从而建立可靠的通信信道。

第一次握手:服务器知道自己接受能力正常,对方发送能力正常。第二次握手:客户端知道自己的发送接收能力正常,服务器的发送接收能力正常。第三次握手:服务器知道自己的发送接收能力正常,服务器的发送接收能力正常。

为什么不能是两次握手或者四次握手

因为三次挥手的目的就是通信双方确认自己和对方接收和发送数据的能力,从而建立起可靠的通信信道,但是只进行两次握手,服务器就不知道自己的发送能力和对方的接受能力怎么样,不能建立起可靠的通信信道。 因为三次握手就能达到目的,就没有必要进行四次握手,产生多余的资源浪费。

第 2 次握手传回了 ACK,为什么还要传回 SYN?

传回ack是为了告诉客户端我接受到的信息就是你发送的信号,表面从客户端到服务器之间的通信是正常的,传回syn是为了建立起服务器到客户端的连接。

什么是半连接队列

当服务器第一次收到从客户端发来的syn后会进入syn_rcvd状态,此时双方还没有建立起连接,此时服务器会把这种状态下的连接放入内核的一个等待队列之中,

这个队列就叫半连接队列。

四次挥手过程:

客户端主动调用close方法,并向服务器发送fin结束报文段,同时进入fin_wait1状态,服务器收到客户端发送的fin结束报文段之后,服务器返回ack确认报文段并进入close_wait状态,此时如果服务器还有数据需要发送的话,客户端依然需要接受,客户端收到服务器的确认报文段ack之后,就会进入fin_wait2状态,等服务器的fin结束报文段。当服务器的数据全部发送完毕的时候,服务器才真正调用close方法并向客户端发送fin结束报文段并进入last_ack状态,等待最后一个ack的到来。客户端收到服务器的fin结束报文段之后,向服务器发送ack确认报文段并进入time_wait状态,服务器收到客户端发来的ack之后就进入closed状态断开连接,客户端需要等待2MSL才能进入closed状态断开连接。
在这里插入图片描述

为什么握手是三次,而挥手时需要四次呢?

因为第二次握手将ack和syn同时发送了,减少了一次握手过程,但是在四次挥手中,服务器的ack和fin不能同时发送,因为当服务器收到客户端的fin请求之后,不能立马断开连接,因为服务器可能还有数据尚未传送,只能先回复一个ack报文段表示作为应答,等到数据传输完毕之后才向客户端发送fin报文段。

为什么TIME_WAIT状态需要经过2MSL才能进入CLOSED状态

MSL是报文在网络中的最大生存时间,客户端最后一次发送ack的时候,ack可能不能到达服务器,如果一个MSL之后服务器没有收到ack的话,就会提示客户端重新发送ack 这样一来一回的时间最多是2msl,如果超过2MSL客户端还没有收到服务器的重传请求的话,客户端就知道服务器已经收到了自己发出的ack就可以断开连接了。

一台主机上出现大量的CLOSE_WAIT是什么原因?应该如何处理?

可能是被动关闭一方最后忘记调用close释放资源,只需要在对应位置加上close即可解决问题

3.TCP/UDP区别

TCP提供面向连接,面向字节流的可靠的数据传输服务。TCP主要应用在需要通信数据可靠性的场景比如邮件,文件传送。TCP不支持广播。

UDP提供无连接,尽最大努力保证数据传输(但不保证传输可靠性)的面向数据报的数据传输服务。UDP的主要应用场景是一些即时性要求较高的场景比如 视频电话,语音电话,直播等。UDP支持广播。

4.TCP 协议如何保证可靠传输

1.确认应答机制:TCP接受方收到数据后会返回ack告诉发送方收到数据,并指示发送方下一次从哪里开始发送。

2.超时重传机制:如果发送方在一定时间内没有接收到接收方发来的应答,发送方就会重新发送刚才的数据。

3.连接管理机制:TCP通过三次握手四次挥手建立连接

4.流量控制:TCP连接的每一方都有一个固定大小的缓冲空间,TCP接收方只能允许发送方发送接收缓冲区能够容纳的数据,当接收方来不及处理数据的时候,就会提示发送方降低发送速率,防止丢包,TCP利用滑动窗口实现流量控制。

5.拥塞控制:TCP发送方维护了一个拥塞窗口,拥塞窗口的大小取决于网络的拥塞程度,发送方让自己的发送窗口大小等于拥塞窗口和接收方接受窗口两者的较小值。

6.TCP接收端会丢弃重复的数据。

7.TCP保证它的首部和数据的检验和,一旦这个检验和有错,TCP将丢弃这段数据并不标记收到这段数据。

4.2滑动窗口和流量控制

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

4.3拥塞控制四种算法

1.慢启动:在刚开始准备进行网络数据传输时,主机并不知道当前网络的阻塞状况,因此就先发送少量数据,然后逐渐增大发送窗口的大小,也就是增大拥塞窗口的大小。

2.拥塞避免:拥塞窗口达到一定阈值之后,将从指数增长变为线性增长,一个RRT增加1;

3.快重传和快恢复:当接收方收到一段不按顺序传来的数据段时,会立即向发送方发送一个重复确认,来指定那个数据段丢失,当发送方连续收到三个这样的重复确认时,就会重新发送丢失的那段数据,而且不影响其他数据段的传送。

和快恢复:当接收方收到一段不按顺序传来的数据段时,会立即向发送方发送一个重复确认,来指定那个数据段丢失,当发送方连续收到三个这样的重复确认时,就会重新发送丢失的那段数据,而且不影响其他数据段的传送。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信仰xinyang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值