首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCP/IP发送方:传输层还是应用程序?

TCP/IP发送方:传输层还是应用程序?
EN

Stack Overflow用户
提问于 2016-09-12 08:15:59
回答 1查看 1.2K关注 0票数 0

一个新手的问题:到底是谁发送了ACK、传输层还是应用程序?我有一个带有粒子计数器的COM服务器将数据发送到我的应用程序。有时我有丢失的数据。当我检查Wireshark协议时,我发现数据包是从COM-Server发送的,但是从接收方发送的ACK失败了。我认为ACK是缺少的,因为我的程序有错误,不能正确地编辑数据。我的同事说接口(套接字)根本没有数据,不能返回ACK。谁是对的?

EN

回答 1

Stack Overflow用户

发布于 2016-09-12 08:33:11

TCP是一种传输层协议。ACK是TCP的一部分。因此,ACK是传输层的一部分并发送到那里。

请注意,可能有包括传输层(即用户空间TCP实现)的应用程序,在这种情况下,ACK是由应用程序发送的,但不是在应用层,而是仍然在传输层。但在大多数情况下,TCP是在内核中实现的,因此在应用程序之外。有关这些层的更多信息,请参见OSI或TCP/IP模型

我的同事说接口(套接字)根本没有数据,不能返回ACK。谁是对的?

假设您没有使用用户空间TCP实现:当这些数据被放入应用程序的套接字缓冲区时,操作系统内核将立即对数据进行ACK。如果未能将数据包放入套接字缓冲区,即如果套接字缓冲区由于应用程序无法读取数据而已满,它将不会对数据包进行ACK操作。在这种情况下,它还将减少窗口,以便对等方不再发送数据。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39445965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档