当前位置: 技术问答>linux和unix
tcp和udp的区别
来源: 互联网 发布时间:2016-08-11
本文导语: 今天看《unix网络编程》有段话不是很理解 每个udp数据报都有一定的长度,我们认为一个数据包就是一个记录。如果数据报最终正确到达目的地(即分组到达目的地且校验和正确),那么数据报的长度将传递给接收方...
今天看《unix网络编程》有段话不是很理解
每个udp数据报都有一定的长度,我们认为一个数据包就是一个记录。如果数据报最终正确到达目的地(即分组到达目的地且校验和正确),那么数据报的长度将传递给接收方的应用进程。我们提到了一字节流协议,无记录边界,这与udp不同。
1.udp数据包有一定的长度。难道tcp数据包没有一定的长度吗?
2.一个数据包一个记录,这个里面“记录”怎么理解?
3.数据报的长度传递个接收方的应用进程,怎么将长度传递个应用进程?
4.无记录边界是什么?
望大家多多帮忙。
每个udp数据报都有一定的长度,我们认为一个数据包就是一个记录。如果数据报最终正确到达目的地(即分组到达目的地且校验和正确),那么数据报的长度将传递给接收方的应用进程。我们提到了一字节流协议,无记录边界,这与udp不同。
1.udp数据包有一定的长度。难道tcp数据包没有一定的长度吗?
2.一个数据包一个记录,这个里面“记录”怎么理解?
3.数据报的长度传递个接收方的应用进程,怎么将长度传递个应用进程?
4.无记录边界是什么?
望大家多多帮忙。
|
事实上你不能write成功的。
A UDP socket has a send buffer size (which we can change with the SO_SNDBUF socket option), but this is simply an upper limit on the maximum-sized UDP datagram that can be written to the socket. If an application writes a datagram larger than the socket send buffer size, EMSGSIZE is returned.
A UDP socket has a send buffer size (which we can change with the SO_SNDBUF socket option), but this is simply an upper limit on the maximum-sized UDP datagram that can be written to the socket. If an application writes a datagram larger than the socket send buffer size, EMSGSIZE is returned.
|
有个很形象的比喻。
如果把TCP/UDP传送的数据比喻成水,
TCP传输数据就好像水通过自来水管送到各家各户。
UDP传输数据就好像送水师傅送桶装水。
如果把TCP/UDP传送的数据比喻成水,
TCP传输数据就好像水通过自来水管送到各家各户。
UDP传输数据就好像送水师傅送桶装水。
|
tcp也有长度啊
数据包里有记录数据的一些东西吧
数据包中不是有相应的位来记录长度的么
最后一个不清楚
数据包里有记录数据的一些东西吧
数据包中不是有相应的位来记录长度的么
最后一个不清楚
|
不错,就是这个理
|
我自己的理解
TCP好像打电话,要拨号、接听建立好连接,语音在线路上是连续的(TCP流),人们用自然语言语法去区分消息边界(应用层)。
UDP好像寄包裹,事先不需要建立连接,一个包裹要打包(UDP包),而且它很有可能丢失(不可靠)。
TCP好像打电话,要拨号、接听建立好连接,语音在线路上是连续的(TCP流),人们用自然语言语法去区分消息边界(应用层)。
UDP好像寄包裹,事先不需要建立连接,一个包裹要打包(UDP包),而且它很有可能丢失(不可靠)。
|
用形象的东西来理解抽象的东西是再好不过的学习方法了。
TCP没有消息边界,也可以理解成TCP流是可以分割的。而UDP是不可分割的,你给别人寄东西,肯定不会打破成若干份发过去了,而TCP是可以的。注意UNP里有这样一个例子:
With a byte-stream protocol, these 26 bytes can be returned in numerous ways: a single TCP segment containing all 26 bytes of data, in 26 TCP segments each containing 1 byte of data, or any other combination that totals to 26 bytes.
TCP没有消息边界,也可以理解成TCP流是可以分割的。而UDP是不可分割的,你给别人寄东西,肯定不会打破成若干份发过去了,而TCP是可以的。注意UNP里有这样一个例子:
With a byte-stream protocol, these 26 bytes can be returned in numerous ways: a single TCP segment containing all 26 bytes of data, in 26 TCP segments each containing 1 byte of data, or any other combination that totals to 26 bytes.