计算机网络常见问题

目录

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

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

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

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

什么是流量控制?

什么是滑动窗口?

什么是拥塞控制?

TCP和UDP有什么区别?


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

七层模型和四层模型这样的层次结构都是为了增强通用性和兼容性,每一层都遵守一定的规则,然后为上一层提供相应服务。比如发快递,快递员将快递送到快递驿站,快递驿站再根据快递上的地址揽件分发,再送到各个地方的中转站,中转站再将快递送到周边的地方。发快递就是一个层次结构,每个层次都做自己该做的事。

七层模型组成:

1.物理层:利用传输介质为数据链路层提供支持,实现相邻计算机节点之间的比特流的透明传送。

2.数据链路层:对比特流的数据进行分组。

3.网络层:定义了IP和子网掩码,区分哪些MAC地址属于同一个子网,然后对IP和子网掩码进行与运算就知道是否是同一个子网,再通过路由器和交换机进行传输。(IP协议属于网络层)

4.传输层:有了网络层的MAC和IP地址后,需要端口号确定数据包从哪个进程发送过来,然后通过端口号建立两台主机通信,提供数据传输服务。(TCP协议UDP协议属于传输层)

5.会话层:负责建立和断开连接。

6.表示层:将数据转换成另一种格式,比如文字、图片、视频等,便于其他计算机理解。

7.应用层:最高层,面向用户,最终呈现给用户的界面。

然而OSI七层模型仅仅是一个理想的模型,再互联网中,实际使用的则是TCP/IP四层模型,他是七层模型的简化版。

1.数据链路层:也叫网络访问层、网络接口层,他将OSI的物理层和数据链路层进行了合并,用于将电脑连接起来。

2.网络层:也叫IP层,处理IP数据包的传输、路由,建立主机间的通信。

3.传输层:为两台主机提供端到端的通信。(TCP和UDP协议

4.应用层:包含OSI的会话层、表示层和应用层。负责建立连接,数据格式转换,最终呈现给用户的界面。(HTTP、HTTPS、FTP、SMTP、DNS协议)

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

第一次握手:客户端发送建立连接请求的数据包给服务器,首部内容为:SYN=1,ACK=0;

第二次握手:服务器接收客户端的第一个数据包,根据SYN=1,ACK=0,判断为主动建立连接请求的数据包。服务器同意链接,则发送一个数据包给客户端回应,首部内容为:SYN=1,ACK=1。

第三次握手:客户端收到服务器的确认数据包后,再给服务器发送一个数据包,首部内容为:SYN=0,ACK=1。SYN=0表示双方已同意建立连接,ACK=1表示客户端收到了服务器的确认数据包。

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

第一次握手是客户端向服务器发送的建立连接的请求,第二次是服务器向客户端确认这个请求,保证了客户端和服务器之间的网络通畅,如果没有最后一次,可能会造成重复连接引起连接混乱。

比如:客户端发送建立连接请求,由于网络原因,客户端在设定时间还没有收到服务器的确认数据包,于是发送第二次建立连接的请求,这次网络通畅,客户端收到了服务器的确认数据包,于是客户端和服务器开始传输数据,但是客户端第一次发送的建立连接请求的数据包到达了服务器,服务器以为要再次建立连接,所以又发送一个确认数据包,由于客户端已经收到一个确认数据包了,就会忽略服务器第二次的确认数据包,服务器发出数据包后要等待客户端的回复,而这时客户端永久不会回复服务器。所以服务器无效等待,造成资源浪费,如果过于频繁会导致服务器停止响应。

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

四次握手会浪费资源。

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

第一次挥手:客户端发送释放连接的请求数据包,并停止发送数据。首部格式内容:FIN=1,ACK=0。

第二次挥手:服务器收到客户端请求释放连接的数据包后,给客户端发送一个确认数据包,同意释放连接,FIN=0,ACK=1。此时客户端到服务器方向的连接释放了,TCP处于半关闭状态,客户端无法给服务器发送数据,但是服务器可以给客户端发送数据,客户端仍然可以接收。

第三次挥手:服务器没有向客户端发送的数据了,其应用进程就通知TCP释放连接,并向客户端发送确认报文。FIN=1,ACK=1。此时服务器不再向客户端发送数据,但能接收数据。

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

什么是流量控制?

流量控制就是控制发送方的发送速率,保证接收方能来得及接收,防止数据包的丢失。通常使用滑动窗口来实现流量控制,接收方发送的确认报文中的窗口字段可以来控制发送方的窗口大小,影响发送方的发送速率,当窗口大小为0时,发送方不能发送数据。

什么是滑动窗口?

滑动窗口是TCP协议用来实现流量控制的机制。发送方和接收方分别维护各自的缓冲区,这个缓冲区相当于窗口,发送方窗口大小由接收方决定,控制发送方的速率,从而实现流量控制。

发送方窗口包含:已发送并收到确认的数据、已发送未确认的数据、未发送但总大小在接收方处理范围的数据、未发送并且总大小超过接收方处理范围的数据。其中已发送未确认的数据和未发送但总大小在接收方处理范围的数据在发送窗口中,发送窗口又包含可用窗口,可用窗口中就是未发送但总大小在接收方处理范围的数据。随着接收方的确认,发送窗口不断向前滑动。

接收方窗口包含接受已确认的数据、未收到但可以接收的数据。接收方读取接收窗口中的内容,随着不断地确认通知发送方,接收窗口向前滑动。

什么是拥塞控制?

发送方通过维护拥塞窗口(cwnd)状态变量,来决定发送方可以同时发送多少数据包,数据包数量会决定网络中产生拥塞的可能性大小。拥塞控制就是为了防止过多的数据注入网络,控制的目的是为了避免发送方的数据填满整个网络,控制发送方的数据发送量。

TCP通过四个算法来进行拥塞控制:慢启动、拥塞避免、拥塞发生、快恢复

慢启动时,拥塞窗口从1开始,呈指数增长。

拥塞窗口在慢开始时增长的非常快,发送方发送的数据包也就越来越多,网络拥塞的可能性就更高。此时就要设置一个慢启动门限ssthresh,当拥塞窗口>=慢启动门限时,进入拥塞避免,这时拥塞窗口就变为呈线性增长,即每个轮次只将cwnd+1,降低了拥塞窗口的增长速度。

当拥塞窗口在拥塞避免中一直增长后,网络也会慢慢进入拥塞的状况,就会出现丢包的现象,这时就要对丢失的数据包重传,触发了重传机制,就进入了拥塞发生算法

数据包重传,重传机制主要有两种:

  • 超时重传:在特定的时间间隔内,如果发送方没有收到接收方发送的确认应答,发送方就会认为数据包丢失,然后重新发送该数据。

超时重传的拥塞发生算法:

ssthresh设为cwnd/2 ,cwnd重置为1,重新进入慢启动

慢启动是会突然减少数据流的,但是这种方式太激进了,反应也很强烈,会造成网络卡顿。

  • 快速重传:不以时间为驱动,而是以数据驱动重传。当发送端连续收到三个重复的ACK,就知道数据包丢失了,会触发快速重传机制。

快速重传的拥塞发生算法:

cwnd=cwnd/2,ssthresh=cwnd

这时候进入快速恢复算法。

 快速重传和快速恢复算法一般同时使用。快速恢复算法:cwnd=ssthresh+3(+3表示有3个ACK确认数据包收到了),重传丢失的数据包,如果收到重复的ACK,那么cwnd+1。

TCP和UDP有什么区别?

面向连接:TCP需要建立连接,只支持一对一通信;UDP不需要建立连接,支持一对一、一对多、多对一、多对多的交互通信。

可靠性传输:TCP基于字节流通过确认应答、连接管理、流量控制、拥塞控制来保证可靠性传输;UDP面向报文传输,不保证可靠交付,不保证可靠性传输。

性能效率:TCP协议传输效率慢,需要较多的资源开销;UDP协议传输效率快,需要较少的资源开销。
首部格式:TCP协议的首部需要20-60个字节;UDP协议首部需要8个字节。

应用场景:TCP要求通信数据可靠,适用于文件传输、邮件传输、远程登录等;UDP要求通信速度块,适用于音频、视频、直播等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值