常问问题(计算机网络版)

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

:(1)OSI七层模型

为了增强通用性和兼容性,计算机网络被设计成层次结构,每一层都遵守一定的规则。在OSI七层模型中,每个分层都接受由它的下一层所提供的特定服务,并且为它的上一层提供特定的服务。按照这个标准是计算机网络系统可以相互连接。OSI七层模型从上到下依次包括:

应用层:为计算机用户提供服务;

表示层:数据处理,比如编解码、加密解密等;

会话层:负责建立和断开连接;

传输层:为两台主机进程之间的通信提供通用的数据传输服务;

网络层:路由和寻址(决定数据在网络中的游走路径)。IP协议属于网络层协议;

数据链路层:管理相邻节点直接的数据通信;

物理层:利用传输介质为数据链路层提供支持,实现相邻节点之间比特流的直接传送。

(2)TCP/IP四层模型

互联网实际使用的是TCP/IP模型,它是OSI模型的简化版,共分为4层:

应用层:包含了OSI模型中的应用层、表示层和会话层,定义了正在运行的程序间的通信和交互的规则。常见的协议有FTP、SMTP、HTTP等;

传输层和网络层与OSI模型中的一样;

网络接口层:包含了OSI模型中的数据链路层和物理层,负责将两台主机连接起来。

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

:TCP协议通过3次握手建立客户端与服务器端的连接。

第一次握手:

客户端向浏览器发送一个TCP数据包,首部格式为:SYN=1,ACK=0,表示这是一个请求建立连接的数据包;

第二次握手:

服务器收到客户端发送的数据包后,根据SYN=1,ACK=0判断出为主动请求建立连接的数据包;若服务器同意连接,则向客户端发送一个确认建立连接的数据包,首部格式为:SYN=1,ACK=1;

第三次握手:

客户端收到服务器的确认后,再给服务器端发送一个数据包进行回应,首部格式为:SYN=0,ACK=1。

经过三次握手的过程,客户端与服务器便成功建立TCP连接。

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

答:TCP协议的3次握手的作用是为了在建立连接时,避免重复连接,防止引起连接混乱问题;

同时通过三次握手可以得到一个确认的可靠初始化序列号seq,用于进行可靠性传输。如果是2次握手则无法的到初始化序列号seq;

TCP协议通过4次握手也可以建立稳定的连接,但相对与3次握手来说比较消耗资源。

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

答:TCP协议通过4次挥手释放客户端与服务器之间的连接。

第一次挥手:

客户端向服务器发送释放连接的请求数据包,并停止发送数据,首部格式为:FIN=1,ACK=0;

FIN=1是指客户端主动释放与服务器之间的连接;

第二次挥手:

服务器接收到释放连接的数据包后,向客户端发送确认释放连接的数据包,首部格式为:FIN=0,ACK=1;

通过2次挥手,客户端与服务器之间的连接就释放了,此时TCP连接处于半关闭状态,也就是客户端无法发送数据给服务器,但服务器还是可以给客户端发送数据,客户端也可以接收;

第三次挥手:

当服务器不再给客户端发送数据后,再次向客户端发送确认释放连接的数据包,首部格式为:FIN=1,ACK=1;

第四次握手:

客户端收到服务器的释放连接数据包后,再向服务器发送确认释放连接的数据包,首部格式为:FIN=0,ACK=1。

通过4次挥手的过程,客户端与服务器间的TCP连接就释放了。

5. 什么是流量控制?

答:流量控制就是控制发送方发送数据的速率,确保接受来得及接收。

TCP连接的两方都有固定大小的缓冲区,TCP的接收端只允许发送端发送接收端缓冲区所能容纳的数据数量,一旦超出,则会提示发送方降低发送速率,防止丢包,实现流量控制。

TCP是利用滑动窗口实现流量控制的。接收方发送的确认报文中的窗口字段可以用来控制发送方窗口的大小,从而影响发送方的发送速率。将窗口字段设置为0,则发送方不能发送数据。

6. 什么是滑动窗口?

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

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

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

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

7. TCP和UDP有什么区别?

答:TCP和UDP的区别:

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

(2)可靠性传输:TCP协议通过确认应答、流量控制、拥塞控制等来确保可靠性传输;UDP协议是不可靠性传输。

(3)性能效率:TCP协议传输效率慢,资源开销大;UDP协议传输效率快,资源开销小。

(4)首部格式:TCP协议受首部需要20-60个字节;UDP协议首部需要8个字节。

8. TCP协议如何保证传输过程的可靠性?

答:(1)校验和:发送方在发送数据之前计算校验和,接收方收到数据后同样计算,如果不一致,那么传输有误;

(2)确认应答、序列号:TCP协议在进行传输时对数据进行了编号,每次接收方通过首部ACK字段进行确认序列号;

(3)超时重传:如果发送方发送数据一段时间后没有收到ACK确认,那么就重发数据;

(4)连接管理:三次握手和四次挥手的过程;

(5)流量控制:控制发送方发送数据的速率,确保接收方来得及接收;

(6)拥塞控制:通过慢开始、拥塞避免、拥塞发生和快速恢复等四个算法进行拥塞控制,降低整个网络的拥塞程度,控制网络中发送的数据包数量。 

9. 浏览器请求一个网址的过程。

答:首先浏览器会通过HTTP协议,产生请求报文,通过DNS域名解析器将服务器域名解析成IP地址, 然后会把HTTP的传输工作交给协议栈,在传输层添加TCP头部,网络层添加IP头部,数据链路层添加MAC头部,最后数据经过路由器、交换机转发,到达目标服务器,服务器同样解析数据,拿到HTTP报文,按照对应程序的逻辑做出响应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值