예를 들어 postgres는 lsof -i에 표시된 대로 다음을 수행합니다.
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
postgres 29200 postgres 8u IPv6 470362 0t0 UDP localhost.localdomain:53152->localhost.localdomain:53152
postgres 29202 postgres 8u IPv6 470362 0t0 UDP localhost.localdomain:53152->localhost.localdomain:53152
postgres 29203 postgres 8u IPv6 470362 0t0 UDP localhost.localdomain:53152->localhost.localdomain:53152
postgres 29204 postgres 8u IPv6 470362 0t0 UDP localhost.localdomain:53152->localhost.localdomain:53152
postgres 29205 postgres 8u IPv6 470362 0t0 UDP localhost.localdomain:53152->localhost.localdomain:53152
postgres 29206 postgres 8u IPv6 470362 0t0 UDP localhost.localdomain:53152->localhost.localdomain:53152
첫째, 이것이 멀티캐스트입니까(어떻게 알 수 있습니까)? 그렇다면 다른 애플리케이션도 UDP 포트에 연결하여 해당 포트를 통과하는 데이터를 구독할 수 있습니까? 저는 네트워킹을 처음 접했고 이것이 가능한지 완전히 확신할 수는 없지만 보안을 고려하면 궁금할 뿐입니다.
EDIT 8/30/13: 네트워크나 동일한 시스템의 어느 곳에서나 일부 프로세스가 포트(예: 위의 경우 53152)로 들어오고 나가는 데이터를 관찰할 수 있습니까? 그리고 어떤 권한이 있습니까? 어떻게?
답변1
localhost.localdomain
연결되어 있다는 사실은 localhost.localdomain
멀티캐스트가 불가능하다는 것을 의미합니다. 다음은 IPv6의 멀티캐스트에 대한 설명입니다.http://en.wikipedia.org/wiki/IPv6#멀티캐스팅
달성하려는 목표를 설명하면 도움을 주기가 더 쉬울 것입니다. 멀티캐스트를 사용하시겠습니까? 그렇다면 어떤 구체적인 목적으로? 아니면 멀티캐스트가 되지 않도록 하는 것이 목표입니까?
답변2
다른 애플리케이션도 UDP 포트에 연결하여 해당 포트를 통과하는 데이터를 구독할 수 있습니까?
포트 번호는 고유합니다. 예를 들어 여러 프로세스가 특정 포트를 열어 수신 대기하도록 할 수 없습니다. 그러나 설정할 수 있는 연결 수에는 제한이 없습니다.도착하다포트. 포트를 제어하는 프로세스는 이러한 연결을 허용합니다.
그러니까 어떤 의미에서는 하나의 데이터 흐름만 존재하지만 여러 개의 연결로 구성될 수도 있고, 포트를 제어하는 프로세스만이 모든 데이터를 볼 수 있는 것입니다. 그러나 포트는 트래픽을 라우팅(기본적으로 주문)하는 데 사용되는 주소일 뿐이므로 실제로 안전하거나 비공개적이지는 않습니다. 네트워크의 본질은 사실 이것이다.모두네트워크 트래픽('로컬 루프백' 포함)모두해당 네트워크의 머신(루프백의 경우 로컬 머신이 하나만 있지만), 적어도 *nix에는 올바른 권한을 가진 프로세스가 이를 관찰할 수 있도록 하는 방법이 있습니다.모두의. 그러나 관찰자는 이러한 의미에서 참여자가 아니기 때문에 의사소통 기술로 사용되지 않습니다(어떤 것과도 연결을 설정하는 것을 포함하지 않음).