7

在接收到从传输层 (TCP) 到网络层 (IP) 的段后,结果数据单元将是一个数据包,这是真的吗?而当从传输层(UDP)接收用户数据报时,生成的数据单元将是一个数据报?

4

4 回答 4

17

您正在陷入细节中……数据包数据报的定义并不完全明确。我也认为你也在倒着看事情。在传统网络中:

  1. 链路层(例如,802.3“以太网”或 802.11“Wi-Fi”)将呈现给网络层(例如,IP、ICMP)
  2. 网络层将帧组装成数据包,然后传递到堆栈中的下一层——传输
  3. 反过来,传输层将字节传递给应用层。应用层 API 真正区分 TCP 中的数据流和 UDP 中的数据报

OSI 堆栈不再在实践中真正使用。在大多数情况下,它已被Internet Protocol Suite取代。了解网络堆栈如何工作的最简单方法是购买一份“TCP/IP 图解:第 1 卷”,下载一个不错的网络捕获实用程序,然后查看一些 Internet 流量。您可以看到数据包是如何从物理层向上组装的。

于 2012-12-25T01:16:35.347 回答
1

术语数据报通常被认为是数据包的同义词,但有一些细微差别。术语数据报通常保留给不可靠服务的数据包,如果交付失败,它无法通知发送者,而术语数据包适用于任何数据包,无论是否可靠。数据报是像 UDP 一样提供快速和不可靠服务的 IP 数据包,所有 IP数据包都是数据报;[4] 然而,在 TCP 层,所谓的 TCP 段是数据报有时必要的 IP 分段 [5 ] 但那些被称为“数据包”。[6]

[强调补充]

维基来源

于 2018-02-21T14:20:14.817 回答
0

您绝对需要熟悉“7 层网络堆栈”。

它并不完全适用于 TCP/IP,但它是理解任何“网络”协议(包括 TCP/IP)的极好基础:

简短的回答:

  • “数据包”是通过网络发送的东西。

  • 对于 TCP/IP,接收主机将数据包组装成“流”。

  • 另一方面,对于 UDP,接收主机将相同的数据包(或实际上是数据包)组装成“数据报”。

“数据包”是第 3 级(“网络层”)的东西。

“流”和“数据报”是第 4 级(“传输层”事物)。

在 TCP/IP 的情况下,“流”和“数据报”都由第 7 层直接访问(“应用层”:包括 HTTP/web、SMTP/电子邮件、FTP/文件传输等)。

于 2012-12-25T00:56:14.793 回答
-1

在接收到从传输层 (TCP) 到网络层 (IP) 的段后,结果数据单元将是一个数据包,这是真的吗?

不。

客户端可以看到的 TCP 中唯一的接收单位是一个字节。TCP 段由一个或多个 IP 数据包组成,但应用程序只能看到一个字节流。在应用程序看到任何数据之前,所有的段和数据包边界都会丢失。你发送一些字节,你接收一些字节,并且分别发送和接收的字节数之间不一定有很强的相关性,除了它们都加起来是同一个流。

相比之下,在 UDP 中,发送和接收的单位都是数据报。您发送一个数据报,如果它完好无损地到达,您将收到包含相同字节和相同字节数的相同数据报。

于 2012-12-26T08:40:57.210 回答