据我所知,TCP需要四个值才能在客户端进行TCP复用和在服务器端进行解复用:
端口号是TCP报头的一部分,但是IP地址不是TCP报头的一部分,它们属于IP报头。
问题:
在每个主机端的TCP实现是如何被告知必要的IP地址的?
在创建TCP套接字Socket mySocket = new Socket(remoteIPNr,remotePortNr)时,需要指定远程IP地址.但是这种情况发生在应用层。那么套接字如何将远程IP地址传输到传输层呢?此外,TCP是如何被告知源IP地址的?
发布于 2014-01-08 23:11:02
套接字如何将远程IP地址传输到传输层?
它到达传输层的方式与任何系统调用参数进入内核的方式相同。这就是系统调用参数的用途。这里并不神秘,仅仅是因为它是一个IP地址。例如,目标端口号也是如此。
如果您在问TCP如何查看IP报头,您将错误地假设它不能,它可以。
此外,TCP是如何被告知源IP地址的?
源IP地址要么由应用程序在bind()调用中定义,要么由TCP在发出connect():时默认提供,然后查询IP路由表以确定哪个本地IP地址是到达目标地址的最便宜的路由,并且该地址成为套接字的源地址。
对于您没有问的下一个问题,关于源端口,要么是应用程序在bind()调用中指定了源端口,要么是系统找到了一个空闲端口号并使用它作为源端口。
https://stackoverflow.com/questions/20997533
复制相似问题