这真是一个关于TCP通信的新手问题。
TCP通信是双向通信吗?
让我给出一个场景: 一个程序正在侦听TCP端口,例如端口25.外部程序使用随机传出端口连接到第一个程序的IP地址(端口25),例如端口45000
由于第一个节目只是在听,这是否意味着
非常感谢任何回复
答案 0 :(得分:6)
TCP始终是双向的。与UDP一样,没有“发送和忘记”。第一个程序必须打开服务器套接字。这意味着,它在端口25上侦听TCP SYN(一个标志,表示正在打开连接)。如果您的第二个程序在端口25(从端口45000)连接,则该连接由4个值,主机IP,主机端口,远程主机IP,远程主机端口标识。此时,在三次握手(SYN,SYN ACK,ACK)完成的情况下,第一个程序从返回的服务器套接字获取一个客户端套接字,该套接字连接到第二个程序。所以,是的,一旦建立连接,它就是双向通信,你很容易受到攻击。
防火墙主要阻止传入流量。如果您的第一个程序位于防火墙后面,并且未正确配置防火墙,则防火墙会从第二个程序中删除SYN-Packets。不会有任何联系。如果配置正确,防火墙还可以检查出站连接。
正如我所说。一旦连接到远程程序,远程程序就会像本地程序一样获得客户端套接字,通过它完成所有通信。