为什么UDP包头中有“包长度”字段而TCP包头中却没有?

金丝龙麟闪电劈 2013-09-25 01:26:46
为什么UDP包头中有“包长度”字段而TCP包头中却没有?
如题大家集思广意哈!!
...全文
1202 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
富兰克林008 2016-01-14
  • 打赏
  • 举报
回复
因为TCP里面有滑动窗口重传,每个字节都有编号,发送和对方确认了多少都有确认,窗口滑动,包头里面没必要有长度。
赵4老师 2013-10-15
  • 打赏
  • 举报
回复
引用 15 楼 wangdahu888 的回复:
[quote=引用 11 楼 zhao4zhong1 的回复:] [quote=引用 9 楼 wangdahu888 的回复:] 你们说的都有理,但是 单个TCP报文段是有长度的呀,大神们!!!
网络实现是分层的呀,码农们!!![/quote] 你就整天以调戏菜鸟取乐吧!!![/quote]
www_adintr_com 2013-10-15
  • 打赏
  • 举报
回复
引用 14 楼 wangdahu888 的回复:
[quote=引用 12 楼 adlay 的回复:] 单个 TCP 的长度根据 IP 头里面的长度就可以确定了. 严格说来“单个TCP”也是不存在的,发送端的一个 TCP 包可能被中间路由器分割成多个,接受端收到也成了多个包了。
不是有路径MTU发现机制嘛,还分割什么呀[/quote] 路径MTU发现机制并不是所有系统都支持的,一般的应用程序也不会采用。大多数的包如果经过一个 MTU 太小的网络都会被分包的。
www_adintr_com 2013-10-14
  • 打赏
  • 举报
回复
单个 TCP 的长度根据 IP 头里面的长度就可以确定了. 严格说来“单个TCP”也是不存在的,发送端的一个 TCP 包可能被中间路由器分割成多个,接受端收到也成了多个包了。
赵4老师 2013-10-14
  • 打赏
  • 举报
回复
引用 9 楼 wangdahu888 的回复:
你们说的都有理,但是 单个TCP报文段是有长度的呀,大神们!!!
网络实现是分层的呀,码农们!!!
  • 打赏
  • 举报
回复
引用 11 楼 zhao4zhong1 的回复:
[quote=引用 9 楼 wangdahu888 的回复:] 你们说的都有理,但是 单个TCP报文段是有长度的呀,大神们!!!
网络实现是分层的呀,码农们!!![/quote] 你就整天以调戏菜鸟取乐吧!!!
  • 打赏
  • 举报
回复
引用 12 楼 adlay 的回复:
单个 TCP 的长度根据 IP 头里面的长度就可以确定了. 严格说来“单个TCP”也是不存在的,发送端的一个 TCP 包可能被中间路由器分割成多个,接受端收到也成了多个包了。
不是有路径MTU发现机制嘛,还分割什么呀
赵4老师 2013-10-14
  • 打赏
  • 举报
回复
引用 12 楼 adlay 的回复:
单个 TCP 的长度根据 IP 头里面的长度就可以确定了. 严格说来“单个TCP”也是不存在的,发送端的一个 TCP 包可能被中间路由器分割成多个,接受端收到也成了多个包了。
不知道有多少前人掉在TCP Socket send(人多)send(病少)send(财富) recv(人多病)recv(少财富) 陷阱里面啊! http://topic.csdn.net/u/20120210/09/51109ed0-07b9-41f2-b487-a51597f2ca01.html
modyaj 2013-10-13
  • 打赏
  • 举报
回复
引用 9 楼 wangdahu888 的回复:
你们说的都有理,但是 单个TCP报文段是有长度的呀,大神们!!!
当然有长度 不然就不能区分所谓的单个报文段了
  • 打赏
  • 举报
回复
你们说的都有理,但是 单个TCP报文段是有长度的呀,大神们!!!
军说网事 2013-10-01
  • 打赏
  • 举报
回复
引用 7 楼 whizer 的回复:
最经典的答案去查查<<TCP-IP详解卷一:协议>>. 简单来说就是: UDP是无连接的, 你发包的时候必须要告诉对方你发了多长.要不对方不知道它应该接收多少,该处理多长.
+1
whizer 2013-09-30
  • 打赏
  • 举报
回复
最经典的答案去查查<<TCP-IP详解卷一:协议>>. 简单来说就是: UDP是无连接的, 你发包的时候必须要告诉对方你发了多长.要不对方不知道它应该接收多少,该处理多长.
max_min_ 2013-09-25
  • 打赏
  • 举报
回复
引用 1 楼 wangdahu888 的回复:
为什么要这样设计呢?


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).
赵4老师 2013-09-25
  • 打赏
  • 举报
回复
《TCP-IP详解卷一:协议》
  • 打赏
  • 举报
回复
引用 2 楼 zhao4zhong1 的回复:
流有长度吗?
话虽这么说,可单个tcp报文有长度呀
halleyzhang3 2013-09-25
  • 打赏
  • 举报
回复
一个是流一个是数据报文
赵4老师 2013-09-25
  • 打赏
  • 举报
回复
流有长度吗?
  • 打赏
  • 举报
回复
为什么要这样设计呢?

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧