35.TCP协议与UDP协议
TCP协议是属于传输层协议,上层为应用层,基于TCP协议的应用层协议有最常见的HTTP协议,还有FTP、DNS等。
# TCP如何保证可靠传输
TCP协议建立的是面向连接的可靠传输,而UDP面向的是无连接的,尽可能多的传输数据,但是不能保证数据的可靠性。而TCP为了保证可靠传输,传输速率就比UDP协议要慢,TCP协议通过如下方式保证可靠传输:
- 应用数据被分割为TCP认为最合适发送的数据块;
- TCP给发送的每个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层;
- **校验和:**TCP将保持它的首部和数据的校验和。这是一个端到端的校验和,目的是检测数据在传输过程中的任何变化,如果收到段的校验和有差错,TCP将丢弃这个报文段,并不确认收到此报文段;
- TCP的接收端会丢弃重复的数据;
- **流量控制:**TCP连接的每一方都有固定大小的缓存空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方数据,可以提示发送方降低发送的速率,防止包丢失。TCP使用的流量控制协议是可变大小的滑动窗口协议。
- **阻塞控制:**当网络阻塞时,减少数据的发送;
- **ARQ协议:**为了实现可靠传输,原理是每发完一个分组就停止发送,等待对方确认,再收到确认后再发下一个分组;
- **超时重传:**当TCP发出一个段后,它启动一个定时器,等待目的端确认收到报文段,如果不能及时收到一个确认,将重发这个报文段。
# ARQ协议 -- 自动重传请求
自动重传请求(Automatic Repeated-request),它是数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送后低端时间之内没有收到确认帧,通常会重新发送。
停止等待ARQ协议:
特点:
- 每发完一个分组就停止发送,等待对方确认(回复ACK);如果过了一段时间超时后,就是没有收到ACK确认,说明没有发送成功,需要重新发送,直到收到确认后再发下一个分组;
- 在停止等待协议中,若接收方收到重复分组,则丢弃该分组,但同时还要发送确认;
优点:简单 缺点:信道利用率低,等待时间长
情况:
- 无差错情况:接收方在规定时间内收到,并回复确认;发送方再次发送下一个分组。
- 出现差错情况:只要超过等待时间仍然没有收到确认,就重传前面发送过的分组;因此发送完一个分组需要设置一个超时计时器,重传时间应比数据在分组传输的平均往返时间更长一些。若收到重复分组,则丢弃该分组,但同时还要发送确认。
- 确认丢失:确认消息在传输过程丢失,此时接收方已经接收到分组了,但是发送发会重发分组,接收方再次收到分组会:丢弃重复分组,不向上层交付;向发送端发送确认消息。
- 确认迟到:确认消息在传输过程中迟到,发送方发送分组,接收方收到并发生确认,因此超时没有收到确认消息,则发送方重传消息,接收端又收到并继续发送确认消息。则发送方收到两份确认信息,接收方收到两份分组:发送方收到重复的确认后,直接丢弃;接收方收到重复的也直接丢弃。
# 滑动窗口和流量控制
TCP利用滑动窗口实现流量控制,流量控制是为了控制发送发的发送速率,保证接收方来得及接收。原理是:接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。(将窗口字段设置为0,则发送发不能发送数据)
# 阻塞控制
编辑 (opens new window)
上次更新: 2022/04/26, 21:54:00