什么时候创建网络数据包?

时间:2016-06-10 11:02:49

标签: networking tcp packet tcp-ip packets

从客户端到主机(或反之亦然)的消息传输中的哪一点是实际切成数据包的消息?

根据我目前的理解,应用程序将整个文件放入套接字并将其完全交给TCP。 TCP首先缓冲文件/消息,当时间正确时(时间正确?)切割缓冲区数据块(创建数据包)并添加TCP标头以将块转换为段。

如果应用程序层中根本没有数据包,为什么还要讨论应用程序层中的数据包?只是整个文件...这不会添加正确。

有人可以证实我的理解吗?

2 个答案:

答案 0 :(得分:3)

基于TCP的应用程序有消息要发送。消息的来源取决于应用程序 - 它可能只是一个小请求,也可能是整个文件。它将消息传递到传输层(TCP),传输层将消息切换为 segments 并将它们逐个传递到网络层(Internet协议)。网络层为每个数据包添加一个标头,并将其传递给处理的链路层(以太网)。

原则上,我们有:

    应用层
  • 消息;
  • 传输层
  • ;
  • 网络层的
  • 数据包;和
  • 链接层的
然而,在实践中,人们并不是那种迂腐,而是倾向于将这些概念混合在一起。你会经常听到人们谈论 TCP数据包(正确的术语是带有TCP负载的IP数据包),他们甚至会谈论应用程序发送数据包(正确的表述将是应用程序)将消息传递给传输层)。大多数情况下,不精确的术语不是问题,因为上下文消除了歧义。

答案 1 :(得分:1)

数据被传输层(UDP,TCP)中的 切片并封装。这些段由网络层(IPv4,IPv6等)通过 数据包 进行封装。数据包由数据链路层(以太网等)上的 封装。