为什么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是无连接的, 你发包的时候必须要告诉对方你发了多长.要不对方不知道它应该接收多少,该处理多长.
[解决办法]
+1
[解决办法]
当然有长度 不然就不能区分所谓的单个报文段了
[解决办法]
单个 TCP 的长度根据 IP 头里面的长度就可以确定了.
严格说来“单个TCP”也是不存在的,发送端的一个 TCP 包可能被中间路由器分割成多个,接受端收到也成了多个包了。
[解决办法]
不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!
http://topic.csdn.net/u/20120210/09/51109ed0-07b9-41f2-b487-a51597f2ca01.html
[解决办法]
路径MTU发现机制并不是所有系统都支持的,一般的应用程序也不会采用。大多数的包如果经过一个 MTU 太小的网络都会被分包的。