数据传输层重点
端口和套接字的意义 UDP 和 TCP 的区别以及两者的应用场景 在不可靠的网络上实现可靠传输的工作原理,停止等待协议和 ARQ 协议 TCP 的滑动窗口,流量控制,拥塞控制和连接管理 TCP 的三次握手,四次挥手机制
TCP和UDP的区别
特点和性能: TCP:面向连接,可靠传输,以字节流的方式传输,传输效率较慢,有复杂的三次握手建立连接,四次挥手关闭连接,校验和,拥塞避免,流量控制,ARQ、超时重传等手段,提供了报文的无差错、无重复、不丢失和有序到达传输。 UDP:无连接的不可靠传输,以数据包的方式传输,传输效率较快,所需资源较少,提供了最大努力交付传输的服务。 适用性: TCP适用于要求通信数据可靠的传输,比如文件传输,邮件传输等 UDP适用于要求通信速度高的情况,如视频传输,直播,语音等。
TCP 协议如何保证可靠传输
- 分块:应用数据被分割成 TCP 认为最适合发送的数据块。
- 序列号:TCP 给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。
- 校验和: TCP 将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP 将丢弃这个报文段和不确认收到此报文段。
- 丢弃重复:TCP 的接收端会丢弃重复的数据。
- 流量控制: TCP 连接的每一方都有固定大小的缓冲空间,TCP 的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。TCP 使用的流量控制协议是可变大小的滑动窗口协议。 (TCP 利用滑动窗口实现流量控制)
- 拥塞控制: 当网络拥塞时,减少数据的发送。
- ARQ 协议: 也是为了实现可靠传输的,它的基本原理就是每发完一个分组就停止发送,等待对方确认。在收到确认后再发下一个分组。
- 超时重传: 当 TCP 发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
TCP和UDP头
TCP头部 20个字节 UDF头部 8个字节
流量控制
NetWork——TCP的流量控制和拥塞控制:(讲的很好)https://blog.csdn.net/seu_calvin/article/details/53198282
https://www.cnblogs.com/wxgblogs/p/5616829.html 定义:所谓的流量控制就是让发送方的发送速率不要太快,让接收方来得及接受。 TCP的流量控制是利用滑动窗口机制实现的,接收方在返回的ACK中会包含自己的接收窗口的大小,以控制发送方的数据发送。 TCP的窗口单位是字节,不是报文段,发送方的发送窗口不能超过接收方给出的接收窗口的数值。
TCP报文段发送时机的选择
TCP报文段发送时机主要有以下几种选择途径。
1)TCP维持一个变量,它等于最大报文段长度MSS,只要缓存中存放的数据达到MSS字节就组装成一个TCP报文段发送出去。
2)由发送方的应用程序指明要求发送报文段,即TCP支持的推送操作
3)是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段发送出去。
拥塞控制
使用慢开始、拥塞避免、快开始、快恢复 设置一个门限ssthresh,当前窗口小于门限值时,采用慢开始算法,大于时,采用拥塞控制算法。
- 慢开始:指开始发送数据时,并不清楚网络的负荷情况,会先发送一个1字节的试探报文,当收到确认后,就发送2个字节的报文,继而4个,8个以此指数类推。
- 拥塞避免让拥塞窗口缓慢地增大,线性增大窗口。
- 快重传:如果发送端接收到3个以上的重复ACK,不需要等到重传定时器溢出就重新传递,比如报文M3丢失,接收端就立即发送三个M2重复确认,发送方就立即重传M3。
- 快恢复:收到3个重复ACK确认时,拥塞门限值ssthresh降为原来的一半,拥塞窗口也降低为原来的一半,并执行拥塞避免算法,拥塞窗口线性增加。
快重传图片
拥塞控制和流量控制的差别
所谓拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。 流量控制往往指的是点对点通信量的控制,是个端到端的问题。流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。
|