2009-12-29 3 views
2

나는 내가 내가하는 MMORPG의 포트를 전달할 필요가 없다는 것을 최근에 알아 챘다.온라인 게임/기타 서비스에 대한 포트 포워딩?

사람들이 온라인에서 게임을하고 질문을 할 수있는 게임에 대해 생각하고 있습니다.

데이터를 계속주고받는 양방향 소켓 연결이있는 이유는 무엇입니까? 나와 연결하기 위해 서버가 방화벽을 통과해야합니까?

+2

제목에 "게임"이라는 단어가 없으면 좋겠다. 이는 비즈니스 소프트웨어에도 영향을 미친다. –

답변

5

TCP 크래시 수업 : TCP는 양방향 프로토콜입니다. 문제는 적어도 하나의 호스트가 시작되어야한다는 것입니다. MMORPG에서는 컴퓨터가 서버로 작동하지 않으므로 아무도 서버에 연결하지 않아도됩니다. 게임 상태에 대한 모든 정보는 공용 IP 주소가있는 회사의 공용 서버를 통과합니다. (어쩌면 실제로 포트 전달을 사용하여 설명을 혼란스럽게 할 수는 있지만 예쁜 네트워크 내부를 볼 필요는 없습니다. , 프록시 및 기타 마법).

어쨌든 Stackoverflow에 연결하면 서버에서 데이터를 요청한 아웃 바운드 연결이 만들어지고 다시 수신되는 동일한 연결을 통해 이루어집니다. 똑같은 시나리오, 게임 대신 웹 서버 사용.

+0

솔리드 대답 남자, 감사합니다! – Travis

1

데이터가 에도 불구하고 웹에 액세스하기 위해 포트를 전달하지 않아도됩니다.

나가는 TCP 연결을 만들 때 NAT 라우터는 연결을 테이블에 넣으므로 데이터가 들어 오면 LAN의 어떤 컴퓨터로 패킷을 보낼지 알 수 있습니다.

2

UPnP을 사용하면 많은 라우터를 처리 할 수 ​​있습니다. 라우터 뒤에 있지 않은 제 3 자에게 액세스 권한이있는 경우 NAT Punch-Through도 있습니다.

어느 쪽이든 포트 포워딩은 서버 (또는 P2P 관계의 발신자)로 사용하려는 경우에만 필요합니다. 클라이언트는 포트를 전달할 필요가 없습니다.

1

모든 사람이 TCP에 대해 언급하지만 NAT는 UDP에서도 작동합니다. 첫 번째 발신 UDP 패킷은 해당 원본 포트를 내부 IP 주소와 연결하며 NAT 장치는 들어오는 트래픽을 해당 포트로 전달하여 내부 네트워크의 올바른 호스트로 전달합니다 .

0

즉, 컴퓨터가 연결 (아웃 바운드)을 먼저 요청하면 라우터는 데이터를 다시 원할 것이라는 가정하에 포트를 자동으로 엽니 다. 그러나 컴퓨터가 요청하지 않고 원격 사용자가 컴퓨터에 연결하게하려면 라우터는 일반적으로 패킷을 보낼 위치를 알지 못하기 때문에 패킷을 삭제합니다 (요청하지 않았습니다). 따라서 포트 N의 원치 않는 패킷을 컴퓨터로 전달하도록 라우터에 지시해야합니다.

다른 답변을 너무 늦게 추가하여 죄송합니다. 이미 받아 들여 졌음을 알고 있지만, 개인적으로 다른 답변이이 간단한 설명보다 혼란 스럽다는 것을 발견했습니다.