根据一些书籍,TCP使用4个元组( src ip,src port,dest ip,dest port )来执行多路复用/多路分解,但我不明白为什么TCP需要dst用于执行解复用的IP地址?
我可以理解,解复用将需要src IP和端口,因为它需要标识客户端应用程序,而dest端口用于标识目标应用程序。但是什么是dst IP?
我认为底层IP层已经执行了"解复用"基于IP和提交给TCP的每个IP数据包是属于该主机的IP数据包,为什么我们仍然需要目标IP地址?
答案 0 :(得分:1)
从技术上讲,它是网络级别的5元组:协议,src ip,src端口,dst ip,dst端口。但是,由于您将问题限制在TCP,因此只有最后4个是可变的。
在源计算机上出于显而易见的原因需要目标IP /端口,因为它定义了数据包的去向。您可以关闭一个TCP连接并从同一个本地端口打开一个新的出站连接但是到另一个目的地,因此能够区分它们非常重要。
对于目标计算机,请记住它可以有多个网络接口。即使"端口空间"每个接口的IP地址也不同。可能是一样的。与一个接口的连接不同于与另一个接口的连接,即使它们访问同一个端口。
从TCP的角度来看,它的有状态会话有一些冗余。您可以从元组中省略目标IP,并且仍然唯一地标识已建立的会话。但是,元组用于在网络层进行路由,并且无法保证其他协议不需要添加消歧。
答案 1 :(得分:0)
可能有多个进程在同一端口侦听,所有进程都绑定到不同的本地IP地址。需要目的地地址来消除歧义。