TCP_UDP

A进程用TCP发2个2k的包,接收方用1.5kbuffer 来recv 两次,情况会怎样;
B进程用UDP发2个2k的包,接收方用1.5kbuffer 来recv 两次,情况会怎样;



TCP虽然保证数据顺序和完整,但经过路由器之后不保证每个包的大小,所以什么情况都可能发生。
发包是从上往下,每一层都会出问题



如果包在途中不丢失,两次都是1.5k
如果包在途中不丢失,也是两次都是1.5k

虽然,tcp和udp两次都是1.5k,但是他们内容却不同
tcp第一个1.5是对方第一个2k包的前1.5k,第二个1.5是第一个2k的剩余。5加上第二个包的前面1k

udp第一个1.5是对方第一个2k包的前1.5k
udp第二个1.5是对方第二个2k包的前1.5k 
两个剩余0.5都丢弃,大部分系统下 

由于udp截断和系统有关,大部分书都建议你发udp包,在 <1400之间;
如果分片中间有丢失的情况下;
又有什么情况,出现错误,那些错误发送方A能察觉,可以重传;
那些又不能错误察觉


不保证所有观点正确,纯属记录,哥以后必然会学网络那块

你可能感兴趣的:(tcp)