博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
传输层协议UDP和TCP
阅读量:6035 次
发布时间:2019-06-20

本文共 1275 字,大约阅读时间需要 4 分钟。

hot3.png

UDP和TCP的比较:

UDP TCP

UDP是无连接的

UDP提供不可靠服务

UDP同时支持点到点和多点通信

UDP是面向报文的

UDP首部8个字节

TCP是面向连接的

TCP提供可靠服务

TCP只能进行点到点通信

TCP是面向字节流的

TCP首部20个字节

TCP连接管理:

连接建立(三次握手):

注意:TCP报文首部SYN和FIN置位的时候需要消耗一个序列号,而仅有ACK置位时不需要消耗序列号。

连接释放(四次握手):

TCP可靠传输

TCP是可靠的传输层协议,主要通过确认机制和超市重传机制实现可靠传输。

确认机制:

连接的建立和释放用的就是确认机制。

TCP和确认是对接收到的最高序号表示确认。但返回的确认序号是已收到的数据的最高序号加一。也就是说确认序号表示下次希望收到的数据字节的序号。确认具有累计确认效果。

超时重传机制:

超时重传机制最关键的因素的重传定时器的定时设置,但确定合适的往返时延RTT是相当困难的事情。

TCP采用了一种自适应算法。算法思想描述如下:记录每一个报文段发出的时间以及收到相应的确认报文段的时间,这两个时间差就是报文段的往返时延。将各个报文段的往返时延样本加权平均,就得到报文段的平均往返时延RTT。

  • RTT新值 = RTT样本(第一次测量)
  • RTT新值 = α*RTT旧值 + (1-α)*新的RTT样本

TCP有三种定时器:重传定时器、持续定时器、保活定时器。

TCP流量控制

通过接收方的接收窗口rwnd实现。在通信过程中,接收方可以根据自己的接受情况动态地调整自己的接收窗口,然后告诉发送方,让发送方的发送窗口和自己的接收窗口一致。

TCP拥塞控制

拥塞控制的基本功能是避免网络发生拥塞。TCP/IP的拥塞控制机制主要集中在传输层实现。拥塞控制的前提条件是网络能够承受现有的网络负荷。

拥塞控制通过拥塞窗口cwnd实现。注意:发送窗口的取值依据拥塞窗口和接收窗口中的较小值,即Min[rwnd,cwnd]。发送方控制拥塞窗口的原则是:只要网络没有出现阻塞,拥塞窗口就可以再大一些;但只要出现阻塞,拥塞窗口就减小一些。

为了更好的进行拥塞控制,用到四种技术:慢启动、拥塞避免、快速重传、快速恢复。

  • 慢启动:在TCP刚建立连接或当网络发生拥塞超时时,将拥塞窗口设置为一个报文段大小,并且当cwnd<=ssthresh时,指数方式增大cwnd。
  • 拥塞避免:当cwnd>=ssthresh时,为避免网络发生拥塞,进入拥塞避免算法,这时线性增大cwnd(每次增大一个报文段)。当网络发生拥塞时,就要把门限值ssthresh设置为出现拥塞时发送方cwnd的一半(但不能小于2),然后把拥塞窗口重置为1,执行慢启动算法。
  • 快速重传:发送方如果连续收到对同一报文段三个重复确认ACK, 则立即重传该报文段,而不必等重传定时器超时后重传。
  • 快速恢复:当采用快速重传算法时,直接执行拥塞避免算法。这样可以提高传输效率。

转载于:https://my.oschina.net/HuoQibin/blog/1631921

你可能感兴趣的文章
TFS 2012研发管理能力(5)
查看>>
四种LaunchMode及其使用场景
查看>>
通过vbs脚本备份数据-本地到异地
查看>>
tomcat介绍和安装
查看>>
UIButton的titleLabel不同状态字体判断
查看>>
我的友情链接
查看>>
杨泽业:wordpress在Nginx/Apache/IIS中的伪静态规则
查看>>
Python 中使用 MongoDB 存储爬虫数据
查看>>
WindowsServer 2008 AD搭建FTP隔离用户
查看>>
lmdb
查看>>
大文件如何传输,大文件的传输方式有哪些?
查看>>
docker的持久化存储和共享存储和网络架构
查看>>
撕掉普通程序员的标签,这才是真正的大数据工程师!
查看>>
Windows下安装Sqlmap过程及遇到的问题
查看>>
BSD常见分支
查看>>
开挂了!这5个Word技巧真的是超级实用,值得收藏!
查看>>
三分钟了解实时流式大数据分析
查看>>
留与后人一段面试的总结
查看>>
Spring基于XML方式配置事务
查看>>
T-MBA学习营 | 寒窗十数载,我们原来并不会学习?
查看>>