从我所读过的内容来看,TCP位于应用程序和IP之间的层上,处理设置数据包,检查错误,订购等等,因此应用程序本身并不需要这样做。
然而,当我看到TCP标题时,我感到困惑。从我理解的方式来看,一些数据从应用程序传递给TCP,并被赋予一个发送数据的目标地址。 TCP层将其打包,并将其发送到IP层,IP层又将其一直关闭,直到物理层。
但是看TCP header on Wikipedia,没有提到目的地地址!只有一个目的端口号,我很确定它不是一个地址。
所以我的问题是,TCP如何获取地址?和/或,如果TCP没有将IP传递给它,IP如何获取地址?
答案 0 :(得分:1)
在传输层之上运行的应用程序会选择所有内容。
如果在设计应用程序时考虑到可靠性,它将选择面向连接的协议,例如TCP。
同一应用程序告诉TCP源端口和目标端口应该是什么,仅TCP不能决定这一点。
示例:如果要访问网站,则您的应用程序就是浏览器,因为访问网站通常是通过HTTP / HTTPS进行的,并且HTTP / HTTPS被设计为可靠的,所以它选择TCP。端口80(HTTP)或443(HTTPS)是用于访问网站的标准端口,因此在“目标端口”字段中将使用这些端口中的任何一个,而“源端口”可以是任意随机的更高编号的端口。
此组合用于识别称为传输层VC(虚电路)的东西。
使用IP时,同一应用程序会告诉您目标IP地址是什么,而源IP是运行浏览器的机器。
网络层中的IP和传输层中的TCP无法选择任何东西,它是由应用程序告诉他们要选择的内容,并考虑到它们是被选择的。