我应该如何映射发送的数据包及其相应的响应?

时间:2012-01-13 11:06:03

标签: tcp network-programming

如何映射发送的数据包及其来自服务器的响应?使用port安全吗?

例如,我从X.X.X.X:45621到Y.Y.Y.Y:993捕获了一个tcp数据包,很快又有另一个tcp数据包,来自Y.Y.Y.Y:993,以及X.X.X.X:45621。

可以说,第二个数据包是第一个数据包的响应吗?

以下两种情况是否会导致问题?

1)重新使用端口

2)如果(可能吗?)多个请求从一个端口到同一个远程机器怎么办?

1 个答案:

答案 0 :(得分:3)

TCP连接(或UDP伪连接)由4个内容标识:本地IP地址,本地端口号,远程IP地址和远程端口号。如果从一个数据包到下一个数据包中的所有4个相同,则它们是相同的连接。如果任何不同,那么它就是一个不同的连接。请注意,“本地”IP地址和端口显示为传出数据包的源IP地址和端口,并显示为传入数据包的目标IP地址和端口,反之亦然“远程”。

所有这些在连接的生命周期内都有效。关闭连接后,可能会重新使用相同的4元组进行新连接。

1)问:端口重新使用 A:许多连接可以使用相同的端口。连接将由至少4个元组的其他3个成员中的一个来区分。

2)问:如果多个请求从一个端口到同一台远程计算机怎么办? A:如果多个连接到达同一个IP地址的同一个端口,而且它们具有相同的源端口,只要它们来自不同的源主机就可以了:源IP地址会有所不同。对于来自相同主机的多个连接,这种情况不会发生在相同主机上的相同端口,因为没有两个套接字相同的源主机可能已绑定到同一源端口。