读书人

为何UDP包头中有“包长度”字段而TCP包

发布时间: 2013-10-17 17:26:17 作者: rapoo

为什么UDP包头中有“包长度”字段而TCP包头中却没有?
为什么UDP包头中有“包长度”字段而TCP包头中却没有?
如题大家集思广意哈!!



tcp: sock_stream;
Provides sequenced, reliable, two-way, connection-based byte streams.
An out-of-band data transmission mechanism may be supported

udp: sock_dgram
Supports datagrams (connectionless, unreliable messages of a fixed maximum length).



[解决办法]
最经典的答案去查查<<TCP-IP详解卷一:协议>>.

简单来说就是:
UDP是无连接的, 你发包的时候必须要告诉对方你发了多长.要不对方不知道它应该接收多少,该处理多长.
[解决办法]
引用:
最经典的答案去查查<<TCP-IP详解卷一:协议>>.

简单来说就是:
UDP是无连接的, 你发包的时候必须要告诉对方你发了多长.要不对方不知道它应该接收多少,该处理多长.


+1
[解决办法]
引用:
你们说的都有理,但是
单个TCP报文段是有长度的呀,大神们!!!

当然有长度 不然就不能区分所谓的单个报文段了
[解决办法]
单个 TCP 的长度根据 IP 头里面的长度就可以确定了.
严格说来“单个TCP”也是不存在的,发送端的一个 TCP 包可能被中间路由器分割成多个,接受端收到也成了多个包了。
[解决办法]
引用:
单个 TCP 的长度根据 IP 头里面的长度就可以确定了.
严格说来“单个TCP”也是不存在的,发送端的一个 TCP 包可能被中间路由器分割成多个,接受端收到也成了多个包了。

不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!
http://topic.csdn.net/u/20120210/09/51109ed0-07b9-41f2-b487-a51597f2ca01.html

[解决办法]
引用:
Quote: 引用:

单个 TCP 的长度根据 IP 头里面的长度就可以确定了.
严格说来“单个TCP”也是不存在的,发送端的一个 TCP 包可能被中间路由器分割成多个,接受端收到也成了多个包了。

不是有路径MTU发现机制嘛,还分割什么呀

路径MTU发现机制并不是所有系统都支持的,一般的应用程序也不会采用。大多数的包如果经过一个 MTU 太小的网络都会被分包的。

读书人网 >C++

热点推荐