TCP、UDP over IP

TCP、UDP over IP

TCP、UDP over IPTCP、UDP over IPT C P / I P协议族分为四层:链路层、网络层、运输层和应用层,每一层各有不同的责任。
在T C P / I P中,网络层和运输层之间的区别是最为关键的:网络层( I P)提供点到点的服务,
而运输层( T C P和U D P)提供端到端的服务。

TCP、UDP over IP


TCP、UDP over IP


U D P数据与 T C P数据基本一致。唯一的不同是 U D P传给 I P的信息单元称作 U D P数据报( UDP datagram),而且U D P的首部长为8字节。


TCP、UDP over IP



TCP、UDP over IP




TCP、UDP over IP


1TCP数据传输不存在边界 -- 是面向连接的数据传输方式 -- 传送带传递物品
这表示“数据传输过程中调用I/O函数的次数不具有任何意义”。
它是可靠的、按顺序的、基于字节的面向连接的数据传输方式。

TCP、UDP over IP


266000 -- 是数据包的“边界” - send(26600)


TCP、UDP over IP


而TCP接收是没有这个边界的概念,越过了 - recv()。


所以需要对接收的TCP流找到边界,做分包处理。



2.UDP是具有数据边界的协议 -- 是面向消息的数据传输方式 -- 高速移动的摩托车快递
  传输中调用的I/O函数的次数非常重要。因此,输入函数的调用次数应和输出函数的调用次数完全一致,这样才能保证接收全部已发送数据。
它是不可靠的、不按顺序的、以数据的高速传输为目的面向消息的数据传输方式





流控制是区分UDP和TCP的最重要的标志。如果从TCP中除去流控制,所剩内容也屈指可数。也就是说,TCP的生命在于流控制。与对方套接字连接及断开过程,也属于流控制的一部分。
UDP的可靠性比不上TCP,但UDP在结构上比TCP更简洁。UDP不会发送类似ACK的应答信息,也不会想SEQ那样给数据包分配序号。因此,UDP的性能比TCP高出很多。
因此,在注重性能而非可靠性的情况下,UDP是个很好的选择。


通过网络实时传输视频或音频的情况,丢失一部分也没有太大问题。这只会引起暂短的画面抖动,或出现细微的杂音。但因为需要提供实时服务,速度就成为非常重要的因素。这时流量控制就显得
有些多余,此时需要考虑使用UDP。


TCP比UDP慢原因:
1.收发数据前后进行的连接设置及清楚过程
2.收发数据过程中为保证可靠性而添加的流控制


TCP、UDP over IP

rtp包头部有不包含长度信息 -- 通过UDP传输,每个UDP包含有一个RTP包,所以不需要长度信息来解包。


RTP增加SQ和timestamp等, 解决了UDP可靠性问题。


TCP、UDP over IP


TCP、UDP over IP


TCP、UDP over IP


TCP、UDP over IP



TCP、UDP over IP



编写软件过程中,需要根据程序特点决定服务端和客户端之间的数据传输规则(规定),这便是应用层协议。比如:RTP(UDP),RTMP(TCP)等等。
网络编程的大部分工作内容就是设计并实现应用层协议。


TCP、UDP over IP


如果你设计的传输规则足够合理高效,就有可能成为标准协议:)