关于tcp udp 的个人理解

tcp和udp形象化的区别:


    tcp采用流式传输,数据以绝对的顺序像水流一样从发送端流到接收端,接收端就像一个小姑娘拿着水瓢一瓢一瓢地接着水(这个过程就是recv()),但是这条水流并不是平稳的小溪,而是泛着波浪,所以小姑娘每次舀出的水并不是一样多,但是因为有一条河流连接着发送端和接收端,所以可以保证通信的顺序和可靠性。

    udp与tcp不同,采用的是数据包的形式,相当于把水冻成冰块,发送端直接隔空扔给接收端,接收端接收的数据长度固定为单个数据包的长度。然而这种投掷的精准度并不理想,离得越远,扔错地方的几率就越大。因而相对与面向连接的tcp协议,udp协议的可靠性并不强。但是其优点在于udp可以以极快的速度传输,而tcp中的数据始终受传输检测机制的制约,速度并不会太快。

    所以tcp 和 udp 各有各的优点,如何选择要看具体应用的场合。

 

tcp和udp用法的区别:

 

    tcp协议的数据传输的前提是建立连接。可以把server端看作一个大户,有个叫client的远方亲戚要来投奔这个大户。试想,有钱大户肯定有那个排场,肯定不能我有钱我还求你和我往来。但毕竟是亲戚,所以server就和管家说了,要是有人来找我,就叫他见我(可以理解成 listen函数 )。然后server开始等他那个叫client的亲戚,直到client按照地址找到了server的家(理解为connect函数),server受到管家提醒停止等待(理解为 accept函数)。然后两者开始交谈,然后server给client起了个名叫 贤侄,当然也知道了client的地址(IP)。至此,叔侄二人就可以愉快的玩耍了。

server:贤侄,让管家给你买的MacBook你收到了吗?

client:  啥?并没有

server:啥情况,我催催他

client : 好的,server叔

client :server叔,电脑我收到了

server:好的,贤侄

。。。。。。。。。。。。。。。。。。。有种一脸黑线的感觉

 

    udp协议是不需要确认连接的,这个情况可以参照末世丧尸的故事背景。比如server是一名执行物资空投的飞行员,他们的职责是向有幸存者的地方空投弹药枪支以及药品食品,这些东西都是打包好的一个箱子。server从某神秘情报人员得知在192.168.1.111:800处有个幸存者需要物资投送,于是server开上小飞机,拉着补给箱,没一会就往该处投下了箱子(理解为 sendto函数) ,然后头也不回,去搭救其他人了。但是这箱子摔没摔坏,有没有被丧尸啃掉,或者幸存者能不能找到箱子谁也说不准,但是胜在速度快。而幸存者则一直在等待补给(理解为recvfrom函数),如果辛苦等来的补给摔坏了,掉水里了,那也只能忍饥挨饿眼巴巴守着 recvfrom函数 干瞪眼,等待下一次的补给。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值