计算机网络常见面试题

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

OSI七层模型为:计算机网络常见面试题_第1张图片

TCP/IP四层模型: 

计算机网络常见面试题_第2张图片

OSI七层模型 TCP/IP四层模型 功能 协议
应用层 应用层 文件传输,电子邮件,文件服务,虚拟终端 FTP、HTTP、SNMP、SMTP、DNS、Telnet
表示层 数据格式化,代码转换,数据加密
会话层 解除或建立与别的接点的联系
传输层 传输层 提供端对端的接口 TCP、UDP
网络层 网络层 为数据包选择路由 IP、ICMP、RIP、OSPF、BGP、IGMP
数据链路层 网络接口层 传输有地址的帧以及错误检测功能 PPP、ARP、MTU、SLIP
数据层 以二进制数据形式在物理媒体上传输数据 IEEE802

总结来说,就是物理层通过物理手段把电脑连接起来,数据链路层对比特流的数据进行分组,网络层来建立主机到主机的通信,传输层建立端口到端口的通信,应用层最终负责建立连接,数据格式转换,最终呈现给用户。

二、谈谈TCP协议的三次握手过程? 

计算机网络常见面试题_第3张图片

 第一次握手:客户先向服务器发送一个请求建立链接的数据包,数据包的TCP首部内容为:(SYN=1,ACK=0,seq=x)

 第二次握手:服务器收到客户端发送的第一个数据包后,根据(SYN=1,ACK=0)判断出是主动建立链接的数据包,如果服务器同意连接,则服务器就会发送一个数据包进行回应,这个数据包的TCP首部包含(同步SYN=1,确认ACK=1,序号seq=y,确认号ack=x+1)

第三次握手:客服端收到服务器的确认后,再给服务器发送一个数据包,数据包首部包含(同步SYN=0,确认ACK=1,序号seq=x+1,确认号ack=y+1),双方已同意建立连接。

计算机网络常见面试题_第4张图片

 这个过程就像我想和你一起去吃饭,我们素不相识,我不可能一上来就叫你去吃饭,如果我一上来就叫你一起去吃饭,你可能会想:这人谁呀,神经病吧!!!哈哈哈哈哈哈哈哈哈,那我要怎么做呢?

我应该先发出想要认识你的请求“你好呀!我是何故逸”,就是第一次握手;然后你收到我的请求后,如果要同意我的请求就要返回给我一个确认信号,“你好呀!何故逸”,就是第二次握手;接下来我才叫你去吃饭,这个时候我们双方已经同意连接了,这就是第三次握手。

三、TCP协议为什么要三次握手?2次或4次不行吗?

 其实在建立TCP连接过程中的前两次握手:(1)客服端发送请求(2)服务器向客服端确认这个请求,就足以证明客户端与服务器之间的网络是通畅的。但是如果没有第三次握手的话就可能会出现重复连接,旧的重复连接引起连接混乱的现象。

并且通过三次握手可以得到一个确认的可靠初始化序列号seq,用于进行可靠性传输。而如果只有两次握手,则无法初始化序列号seq。

 当然TCP连接通过4次5次连接与可以,但是3次握手是最节省资源的连接方式。

四、谈谈TCP连接的四次挥手过程? 

计算机网络常见面试题_第5张图片

四次挥手就是释放连接的过程,

第一次挥手:首先客户端向服务器发送连接释放的请求报文(终止FIN=1,确认ACK=0),并停止发送数据。

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

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

                        此后服务器不再向客户端发送数据,但能接收数据。

第四次挥手:客户端收到服务器的连接释放报文段后,向服务器发出确认报文(ACK=1,FIN=0)。

计算机网络常见面试题_第6张图片

五、什么是流量控制? 

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

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

        TCP使用的流量控制协议是可变大小的滑动窗口协议(即TCP利用滑动窗口实现流量控制

六、什么是滑动窗口 

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

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

发送方的滑动窗口: 

发送方将窗口内容分为两部分:发送窗口可用窗口

随着不断的接收到ACK确认和数据发送,发送窗口和可用窗口将不断在向前滑动。

  • #1 是已发送并收到 ACK确认的数据:1~31 字节
  • #2 是已发送但未收到 ACK确认的数据:32~45 字节
  • #3 是未发送但总大小在接收方处理范围内(接收方还有空间):46~51字节
  • #4 是未发送但总大小超过接收方处理范围(接收方没有空间):52字节以后

计算机网络常见面试题_第7张图片

当发送方把数据「全部」都一下发送出去后,可用窗口的大小就为 0 了,表明可用窗口耗尽,在没收到 ACK 确认之前是无法继续发送数据了。

计算机网络常见面试题_第8张图片

当收到之前发送的数据 32~36 字节的 ACK 确认应答后,如果发送窗口的大小没有变化,则滑动窗口往右边移动 5 个字节,因为有 5 个字节的数据被应答确认,接下来 52~56 字节又变成了可用窗口,那么后续也就可以发送 52~56 这 5 个字节的数据了。

计算机网络常见面试题_第9张图片

你可能感兴趣的:(计算机网络,服务器,网络)