tcp端口号是否以某种方式用作指向内存的指针?

时间:2016-06-27 22:43:33

标签: tcp

我试图了解低级别的端口。我已经从SF转移到谷歌没有好处,所以希望这将是低级编程的主题(应该是)。

端口只是用于访问程序/服务的数字。我能看到这个实现的唯一方法是使用端口号将数据发送到分配给程序/服务特定用途的地址空间(堆栈?)。因此,程序/服务正在查看,例如,在该地址空间或"端口中查找特定数据(特定于协议)的#34;""这是否接近正确?

2 个答案:

答案 0 :(得分:0)

您可以将其视为数组索引。这真的是你需要深入了解细节。

答案 1 :(得分:0)

  

因此,该节目/服务正在查看该地址空间或"端口中的特定数据(特定于协议),听听"监听"

不,不是真的。这里最重要的部分是内核。当一个程序在一个端口上打开一个监听器时,实际上是在调用内核来说“#34;我想听这个端口"”。内核会记住,可能在某种查找表中。

当数据包到达时,内核的工作就是处理该数据包的接收,解析它,并将有效负载路由到正确的位置。此时,内核将查找为该端口注册的程序,并告诉它已到达的新数据。这是一个复杂的过程,因为程序可能处于睡眠状态(阻塞等待新数据)或者可能正在运行其他代码,在这种情况下,新数据需要排队。

要点拿走的主要内容是您的用户空间计划不是在倾听"。由内核决定何时运行以及是否将其唤醒。原始问题中的端口号将成为对内核保留的表的查找。