首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCP复用、解复用

TCP复用、解复用
EN

Stack Overflow用户
提问于 2014-01-08 13:43:58
回答 1查看 1.2K关注 0票数 0

据我所知,TCP需要四个值才能在客户端进行TCP复用和在服务器端进行解复用:

  • 源-IP-nr,源-端口-nr
  • 远程-IP-nr,远程-端口-nr

端口号是TCP报头的一部分,但是IP地址不是TCP报头的一部分,它们属于IP报头。

问题:

在每个主机端的TCP实现是如何被告知必要的IP地址的?

在创建TCP套接字Socket mySocket = new Socket(remoteIPNr,remotePortNr)时,需要指定远程IP地址.但是这种情况发生在应用层。那么套接字如何将远程IP地址传输到传输层呢?此外,TCP是如何被告知源IP地址的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-08 23:11:02

套接字如何将远程IP地址传输到传输层?

它到达传输层的方式与任何系统调用参数进入内核的方式相同。这就是系统调用参数的用途。这里并不神秘,仅仅是因为它是一个IP地址。例如,目标端口号也是如此。

如果您在问TCP如何查看IP报头,您将错误地假设它不能,它可以。

此外,TCP是如何被告知源IP地址的?

源IP地址要么由应用程序在bind()调用中定义,要么由TCP在发出connect():时默认提供,然后查询IP路由表以确定哪个本地IP地址是到达目标地址的最便宜的路由,并且该地址成为套接字的源地址。

对于您没有问的下一个问题,关于源端口,要么是应用程序在bind()调用中指定了源端口,要么是系统找到了一个空闲端口号并使用它作为源端口。

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

https://stackoverflow.com/questions/20997533

复制
相关文章

相似问题

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