TCP、UDP通信模式简介
基调
永远相信TCP数据传输的保障性,不然网络就如无根之水,错误将处处存在.以下论调都基于该信仰.
假设TCP存在错误传输数据可能,那没有人有胆量去下载一个1G的文件,因为下载该文件存在太多的TCP包.
基于应用层保障的论调:应用层如果能保障的事情,必然会有一个基本的协议来完成这个事情,以减少开发者的工作量。
如有异议,请沟通和指证.希望保持认知的一致性.
引言
注:这里讲的TCP是特指基于TCP的套接字(Socket)模式。
两个协议都是基于IP协议,都在IP包外层附加了外壳数据。IP包的最大大小由网络路由媒介决定。但是实际传输时的大小,可以动态调整,会依据网络的拥堵度动态调整当前打包的IP包的大小。
MTU(Max Translate Unit),最大传输单元。
以下是不同的路由媒介所能支持的默认最大MTU,含协议包头信息。
Network Media MTU(Bytes)
16 Mbit/Sec Token Ring 17914
4 Mbits/Sec Token Ring 4464
FDDI 4352
Ethernet 1500 Internet网络应用该媒介
IEEE 802.3/802.2 1492
X.25 576 GPRS网络应用该媒介
如果发送了超越网络当中经过媒介的MTU,可能出现两种情况,分包或者抛弃(发送失败)。TCP包头中有一位描述是否允许包再分段的标识。
在Socket层进行数据发送时,底层会自动决定每包的最大大小,如果传输在同一个网络中,绝对不会发生包再分段的情况。
当需要通信的两端进行握手时,会互相告知对方本方能支持的最大MTU,双方都将采用两者之间偏小的那个MTU。如从网关发送数据给终端,终端连接上网关时,握手过程中会交换各自能支持的最大MTU。从而避免了从网关发送数据到终端会有过大IP包的情况。
不管上述是何种过程,对于TCP交互,无需关注,只需要以流的概念去理解。而对于UDP交互,则可能需要考虑包过大而被再分段的情况。所以,在发送UDP包时,需要避免不要使用过大的UDP包数据,如果过大,则包被分段的概率高,并且丢失的概率也将高。
tcp ip协议下载安装两种协议的区别
序号 | 描述 | TCP | UDP |
1 | 有无连接状态 | 有 | 无 |
2 | 应用层使用是否需要考虑包的大小及发送情况 | 无需 | 需要 |
3 | 是否需要开启端口进行数据发送或接收 | 需要 | 需要 |
4 | IP包大小的决定者 | Socket | 应用层 |
数据组拆包及流转
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论