- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在从客户端到主机(或反之亦然)的消息传输中,消息实际上是在哪个点被分割成数据包?
根据我目前的理解,应用程序将整个文件放入套接字并将其完全交给 TCP。 TCP 首先缓冲文件/消息,然后在合适的时候(什么时候合适?)切割缓冲区数据 block (创建数据包)并添加 TCP header 以将 block 转换为段。
如果应用层根本没有数据包,为什么还要讨论应用层的数据包呢?只是整个文件...这不正确。
谁能证实我的理解?
最佳答案
基于 TCP 的应用程序有一个消息要发送。消息是什么取决于应用程序——它可能只是一个小请求,也可能是整个文件。它将消息传递到传输层 (TCP),后者将消息分成段,然后将它们一个接一个地传递到网络层(Internet 协议(protocol))。网络层为每个数据包添加一个 header ,并将其传递给处理帧的链路层(以太网)。
因此,原则上,我们有:
然而,在实践中,人们并没有那么迂腐,而且往往会混淆这些概念。你会经常听到人们谈论 TCP 数据包(正确的术语应该是带有 TCP 负载的 IP 数据包),他们甚至会谈论发送数据包的应用程序(正确的表述是应用程序将消息传递给传输层)。大多数时候,不准确的术语不是问题,因为上下文可以消除歧义。
关于networking - 究竟什么时候创建网络数据包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37746596/
Feel free to skip straight to TL/DR if you're not interested in details of the question 简短的序言: 我最近决定
我一直在阅读 A Tour of Go学习Go-Lang到目前为止一切顺利。 我目前在 Struct Fields类(class),这是右侧的示例代码: package main import "fm
Last time I got confused顺便说一下PowerShell急切地展开集合,基思总结了它的启发式如下: Putting the results (an array) within a
我是一名优秀的程序员,十分优秀!