计算机网络-传输层

传输层提供了进程间的逻辑通信,向高层用户屏蔽了网络层的细节。

1.TCP三次握手和四次挥手

1.1 三次握手

在这里插入图片描述

1.1.1 流程

  • 客户端—发送连接请求报文SYN=1,ACK=0,初始序号seq=x—服务端
  • 服务端—发送连接确认报文SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y—客户端
  • 客户端—发出连接确认报文,ACK=1,确认号ack=y+1,序号seq=x+1

1.1.2 为什么要三次握手

答:确保可靠的通信通道,让双方都确认对方和自己的接收和发送功能是正常的。比如:Client发送的连接请求A在网络中滞留,Client就重传请求B,若没有三次握手,Server会打开两个连接,反之,Server会忽略滞留的请求A。

1.1.3 为什么Server要传回SYN

答:Server传回SYN是为了告诉Client,我接收到的信息是你发送的信息,证明Client到Server通信通道无问题

1.1.4 为什么Server传了SYN,还要传ACK

答:传了SYN,证明Client到Server通信通道无问题,还需要ACK验证Server到Client的通信通道。

1.2 四次挥手

在这里插入图片描述

1.2.1 流程

ACK在连接建立后都为1。

  • 客户端—发送连接释放报文FIN=1,初始序号seq=u—服务器
  • 服务器—发出确认收到报文ACK=1,确认序号ack=u+1,初始序号seq=v—客户端
  • 服务器—关闭连接,发送连接释放报文FIN=1,确认序号ack=u+1,初始序号seq=w—客户端
  • 客户端—发回确认收到报文ACK=1,确认序号seq=w+1,初始序号ack=u+1—服务器

1.2.2 为什么要四次挥手

答:Client发出连接释放通知,Server确认收到后,Client就进入半关闭状态(Client只能收消息不能发送),Server把未发完的数据发送完毕后,发送连接释放通知,Client确认后就关闭连接。

1.2.3 为什么Client要等待2msl

答:MSL(Maximum Segment Lifetime)最大报文生存周期,Client发送ACK进入Time_Wait状态,等待2MSL是为了防止最后一次ACK没有正确传给Server,Server会再发送FIN信号,等待结束进入Close状态。

2. TCP可靠传输

2.1 超时重传

答:若一个已经发送的报文段在超时时间内没有收到确认,就重传这个报文段。超时时间RTO略大于加权往返时间RTTs。往返时间RTT指一个报文段从发送再到接收到确认所经过的时间。

2.2 ARQ自动重传

答:ARQ包括停止等待ARQ和连续ARQ。

  • 停止等待ARQ协议:基本原理是每发完一个分组就停止发送,等待对方确认,收到确认后再发送下一组,没有收到就重传。优点是简单,缺点是信道利用率低。总结:发完一个就停止,确认后再发下一个
  • 连续ARQ协议:维持一个发送窗口,在窗口内的分组可以连续发送不用等待确认,接收方对到达的最后一个分组发送确认。优点是信道利用率高,缺点是发送方无法知道接收方正确收到的分组信息,重传需要回退N。总结:不用确认就能发,对last one确认,失败需要回退N

2.3 滑动窗口

答:发送方的滑动窗口大小根据接收方来设置,接收方通过tcp告知自己的滑动窗口大小。
发送窗口的最左部为已发送但未收到确认的第一个字节,接收窗口的最左部为已发送确认并交付主机。
接收窗口只对最后一个按序到达的字节进行确认。如:收到31,34,35,只对31进行确认。
在这里插入图片描述

2.4 流量控制

答:流量控制是为控制发送方发送速率,保证接收方能及时接收。通过滑动窗口实现流量控制。

2.5 拥塞控制

答:拥塞控制是为了防止过多数据注入网络,导致网络过载。TCP的拥塞控制采用四个算法实现:慢开始、拥塞避免、快重传、快恢复。
发送方维护一个拥塞窗口(cwnd)的状态变量。
在这里插入图片描述

  • 慢开始:cwnd初始值为1,每个轮次cwnd加倍
  • 拥塞避免:慢开始门限ssthresh,当cwnd>ssthresh时,进入拥塞避免,让cwnd每个轮次+1。出现超时,就令ssthresh = cwnd/2,重新进行慢开始。
  • 快重传:接收方只对最后一个收到的有序报文段进行确认,若发送方介绍重复确认,就判断下一个报文段丢失,执行快重传,即立即重传下一报文段。
  • 快恢复:若丢失个别报文段,执行快恢复,令ssthresh = cwnd/2, cwnd = ssthresh,直接进入拥塞避免。
    在这里插入图片描述

3. TCP和UDP区别

3.1 两者区别

在这里插入图片描述
答:总结下:

  • TCP:面向连接的可靠交付,以字节流传输,效率低,耗费资源少,适用于对通信数据严格的场景,如文件传输。首部20-60字节。
  • UDP:无连接的尽最大努力交付,以数据报文段传输,速度快,耗费资源少,适用于对通信速度要求高的场景,如在线视频。首部8个字节。

3.2 UDP首部格式

答:UDP首部只有8个字节,包括源端口、目的端口、长度、检验和。
在这里插入图片描述

3.3 TCP首部格式

答:包含如下:

  • 序号:对字节流编号。
  • 确认号:期望收到的下一个报文段序号。eg.B收到A的序号201,长度100,则B发给A的确认报文段的确认号为301。
  • 数据偏移:指首部的长度。
  • 确认ACK:当ACK=1时,确认号字段有效,否则无效。连接建立后,ACK都为1
  • 同步SYN:在建立连接时用来同步序号。当SYN=1 ACK=0时,为请求连接报文,SYN=1 ACK=1为建立连接的响应报文。
  • 终止FIN:释放连接。当FIN=1时,为此报文端的发送方数据发送完毕,请求关闭连接。
  • 窗口:作为接收方让发送方设置其发送窗口的依据。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值