计算机网络之传输层

运输层的任务就是负责向两台主机中进程之间的通信提供通用的数据传输服务,应用进程利用该服务来传送应用层报文。

传输层主要使用两种协议:用户数据报协议UDP传输控制协议TC

TCP

TCP三次握手的过程?为什么要三次握手?

三次握手的过程:

  1. 客户端和服务端初始都为CLOSED状态。客户端主动打开,发送连接请求报文段,将SYN标识位设置为1 (TCP规定SNY=1时不能携带数据),Sequence Number设置为a (a为随机值),此时客户端进入SYN-SENT同步已发送状态。

  2. 服务器端收到SYN报文段进行确认,将SNY标志位置为1,ASK置为1,Sequence Number置为b,Acknowledgment Number置为a+1,此时服务端进入SNY-RECV同步已接收状态。

  3. 客户端再进行一次确认,将ACK置为1,Sequence Number置为a+1,Acknowledgment Number置为b+1。此时客户端与服务器都进入ESTABLISHED状态,客户端会稍早于服务端建立连接。

  • 三次握手主要为了防止已失效的连接请求突然又传送到了服务端

TCP四次挥手的过程?为什么要四次挥手?

当客户端没有数据需要发送给服务端时,需要释放客户端的连接,四次挥手的过程:

  1. 客户端发送一个终止连接报文给服务端,FIN置为1,seq置为u (最后一次传输的序列号+1),客户端进入FIN-WAIT-1终止等待1状态。

  2. 服务器端收到请求,发送一个ACK给客户端,ack置为u+1,seq置为v,服务端进入CLOSE-WAIT关闭等待状态,客户端进入FIN-WAIT-2终止等待2状态。

  3. 服务端发送终止连接的报文,FIN置为1,ACK置为1,seq置为w,ack置为u+1,服务器端进入LAST-ACK最后确认状态。

  4. 客户端收到FIN后,发送ACK给服务端,ack置为w+1,seq置为u+1,进入TIME-WAIT时间等待状态。

  • 客户端等待2MSL(最长报文段寿命)后进入CLOSED状态,服务端收到确认后进入CLOSED状态。

  • 四次挥手两个方向需要分别断开连接

自动重传请求ARQ协议

传统自动重传请求分成为三种,即停等式(stop-and-wait)ARQ,回退n帧(go-back-n)ARQ,以及选择性重传(selective repeat)ARQ

  • 停止等待ARQ协议:每发送完一个数据包后,就停止发送,等待对方的确认,在收到确认后发送下一个数据包。一段时间没有收到确认消息,则超时重传数据包。

  • 连续ARQ协议:发送方维持一个发送窗口,位于窗口内的所有分组可以连续发送出去,中途不需要等待对方确认。接收方不必对每个分组进行确认,收到几个分组后,对按序到达的最后一个分组发送确认,表示到这个分组为止的所有分组都已经收到了。

  • 回退n帧协议:当发送方收到接收方的状态报告并显示有误的时候,发送方将重传n以及之后的帧。

  • 选择重传协议:发送方只发送那个没有被ACK的数据包。

滑动窗口

会话双方各自维护一个发送窗口和一个接收窗口,接收窗口大小取决于应用、系统、硬件的限制,发送窗口大小取决于接收窗口。

作用:提供TCP的可靠性,提供TCP的流量控制特性

发送方的数据分为以下四类:(中间为发送窗口

已经发送并得到对端ACK的、已经发送但还未收到对端ACK的、未发送但对端允许发送的、未发送且对端不允许发送。

接收方的数据分为以下三类:(中间为接收窗口

已接收、未接收准备接收、未接收且未准备接收。

  • TCP的滑动窗口的可靠性是建立在确认重传的基础上的

  • 发送窗口只有收到对端对于本段发送窗口字节的ack确认,才会移动发送窗口的左边界。

  • 接收窗口只有在前面所有段都确认的情况下才会移动左边界。当在前面还有字节未接收但收到后面字节的情况下,窗口不会移动,也不会对后续字节确认。保证对端对这些数据重传。

流量控制

TCP 通过让发送方维护一个接收窗口的变量来提供流量控制。

接收窗口用于给发送方一个指示rwnd,告诉发送方该接收方还有多少可用的缓存空间。当接收窗口 rwnd 减小到 0 时,就不再允许发送方发送数据了。但是可能存在一种情况,当发生了零窗口报文段不久后,发送方的接收缓存又有了一些存储空间,于是给发送报文说明自己的接收窗口大小,但是这个报文不幸丢失了,于是就出现发送方等接收方的通知,接收方等发送方的报文的死锁状态。为了处理这种问题,TCP引入了持续计时器(Persistence timer),当发送方收到对方的零窗口通知时,就启用该计时器,时间到则发送一个1字节的探测报文,对方会在此时回应自身的接收窗口大小,如果结果仍未0,则重设持续计时器,继续等待。

拥塞控制

网络中对资源的需求超过可用量的情况就叫拥塞。

TCP拥塞控制算法包括:慢开始、拥塞避免、快重传、快恢复

  • 慢开始:拥塞窗口cwnd的值以一个MSS最大报文开始,每当传输被确认后就增加一个MSS。因此,每经过一个RTT往返时间,拥塞窗口就会翻倍,发送速率也会翻倍。

  • 拥塞避免:当前的拥塞窗口的cwnd的值已经等于慢开始的门限值,之后改用拥塞避免算法。每个传输轮次,拥塞窗口cwnd只能线性加1。

    当出现超时时,TCP 的拥塞避免和慢启动一样,cwnd 的值将被设置为 1,然后启动慢开始算法。

  • 快重传:接收方对收到的消息立即确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。发送方一旦收到3个连续的重复确认,就将相应的报文段立即重传。

  • 快恢复:发送方收到3个重复确认,确认丢失了个别报文段,于是执行快恢复算法。将cwnd值调整为cwnd/2,进入拥塞避免状态。

TCP和UDP的区别

  1. TCP是面向连接的,UDP是面向无连接的。

  2. TCP提供可靠的服务。通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。

  3. TCP面向字节流,UDP面向报文。

  4. TCP连接是点对点的,UDP支持一对一,一对多,多对多通信。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值