TCP与UDP可靠性传输

TCP与UDP的区别:

TCP(TransmissionControlProtocol传输控制协议): 是一种面向连接的、可靠的、基于字节流的传输层通信协议。

UDP(User Datagram Protocol): 一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。可靠性由上层应用实现,所以要实现UDP可靠性传输,必须通过应用层来实现和控制。

TCP如何实现可靠性传输?

确认机制、重传机制、滑动窗口

1. 确认机制

  • 当TCP发出一个数据段后,它启动一个定时器,等待宿端收到这个报文段并确认。如果没有按时收到宿端的确认,将重发这个报文段。(TCP有延迟确认的功能)
  • TCP将保持它首部和数据的校验和,目的是检测数据在传输过程中的任何变化。如果收到数据段的校验和有差错,TCP将丢掉这个报文,不确认,希望发送端超时重发。

除此:

  • TCP可以对收到的数据进行重新排序。
  • TCP接收端丢弃重复的数据。

2. 重传机制

TCP协议用于控制数据段是否需要重传的依据是设立重发定时器。在发送一个数据段的同时启动一个定时器,如果超时前没有收到确认,则重传该数据段。

重传机制的关键: 对定时器初始值的设定。

采用的方法: 动态的不断调整超时时间间隔。

工作原理: 对每条连接TCP都保持一个变量RTT(往返时间),用于存放当前到目的端往返所需要时间最接近的估计值。当发送一个数据段时,同时启动连接的定时器,如果在定时器超时前确认信息到达,则记录实际往返时间,并修正RTT的值;如果定时器超时前没有收到确认,则将RTT的值增加1倍。

3. 窗口确认

源主机 --- 宿主机

问题:什么是窗口?

窗口:源在收到确认消息之前可以传输的数据大小称为窗口大小,用于管理丢失数据和流量控制。

TCP通过滑动窗口进行流量控制。

问题:怎么控制呢?

TCP连接的双方都有固定大小的缓冲区,TCP的接收方只允许另一方发送接收方缓冲区所能接纳的数据。

如果接收方缓冲区满了,发送方就会定时询问滑动窗口的容量(自己可以发送数据的大小)。

这将防止较快主机致使较慢主机的缓冲区溢出。

执行的过程: 宿的TCP服务对接收到的数据进行确认,并向源发送确认信息,确认信息中带有确认号,指示接收设备期待接收到的下一字节。

问题:宿端对接收到的数据怎么进行确认呢?

使用数据报头序列号以及确认号来确认已收到包含在数据段的相关的数据字节。

UDP为什么要可靠?

有人会说:那直接用TCP不就行了?TCP是个基于公平性的可靠通信协议,在一些苛刻的网络条件下TCP要么不能提供正常的通信质量保证,要么成本过高。

为什么要在UDP之上做可靠保证,原因是: 在保证通信的时延和质量的条件下尽量降低成本。

UDP如何实现可靠性传输?

关键在于两点,从应用层角度考虑:

1. 提供超时重传,能避免数据包丢失。

2. 提供确认序列号,可以对数据包进行确认和排序。

发送:包的分片、包确认、包的重发

本端:首先在UDP数据包定义一个首部,首部包含确认序列号和时间戳,时间戳是用来计算RTT(数据包传输的往返时间),

接收:包的调序、包的序号确认

对端:
接收到一个数据包后取下该数据包首部的时间戳和确认序列号,并添加本端的确认数据包首部之后发送给对端。
根据此序列号对已收到的数据包进行排序并丢弃重复的数据包。

有如下开源程序利用UDP实现了可靠的数据传输:

1. RUDP

RUDP提供一组数据服务质量增强机制,如拥塞控制的改进、重发机制及淡化服务器算法等。

2. RTP

实时传输协议(RTP) 为数据提供了具有实时特征的端对端传送服务,如在组播或单播网络服务下的交互式视频音频或模拟数据。

  • RTP本身没有提供按时发送机制
  • RTP不提供服务质量(QoS)保证
  • RTP实行有序传送,RTP中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置。例如:在视频解码中,就不需要顺序解码。

3. UDT

基于UDP的数据传输协议(UDP-basedData Transfer Protocol,简称UDT)是一种互联网数据传输协议。

UDT的主要目的是支持高速广域网上的海量数据传输,而互联网上标准数据传输协议TCP在高带宽长距离网络上性能很差。

UDT建于UDP之上,并引入新的拥塞控制和数据可靠性控制机制,是面向连接的双向的应用层协议,同时支持可靠的数据流传输和部分可靠的数据包传输。

应用: 点到点技术(P2P),防火墙穿透,多媒体数据传输等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • 传输层提供的服务 传输层的功能 从通信和信息处理的角度看 ,传输层向它上面的应用层提供通信服务,它属于面向通信部分...
    CodeKing2017阅读 3,627评论 1 9
  • 原文地址:RFC3550 RTP 中文版 英文版原文:RFC3550英文版 - RTP: A Transport ...
    云上听风阅读 13,098评论 0 13
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,060评论 6 174
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,053评论 0 8
  • 1.1 TCP/IP协议组 TCP/IP协议(传输控制协议)由网络层的IP协议和传输层的TCP协议组成 IP层负责...
    F麦子阅读 2,786评论 0 25