인프런 커뮤니티 질문&답변

김성규님의 프로필 이미지
김성규

작성한 질문수

외워서 끝내는 네트워크 핵심이론 - 응용

Full Cone 방식과 내부 네트워크 접속 문제

홀펀칭 P2P에 관해 약간의 궁금한 점이 생겼습니다.

해결된 질문

작성

·

36

0

Full Cone NAT를 이용한 경우 홀펀칭을 이용해서 P2P 통신이 가능해지는데

 

TCP Protocol로 해서 해당 NAT 테이블에 등록이 되어 있어서 지속적으로 P2P 통신이 가능합니다.

 

그렇다면 P2P 통신을 하러 들어온 다른 클라이언트 쪽에서 TCP FIN을 보내서 4-way handshake를 하게 되면 해당 호스트 역할을 맡은 클라이언트의 공유기의 NAT table에서 제거되어 P2P연결이 모두 종료되는 건가요?

 

게임으로 따지면 누군가 해당 IP와 Port를 확인하는 것 만으로 방을 폭파시킬 수 있는 건가요?

 

이상입니다.

오늘도 좋은 하루 되십시오. 감사합니다.

 

답변 1

1

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

아니오. 그렇지는 않습니다. 한 세션이 종료되더라도 다른 Peer와 통신을 했다면 기록으로 남아 다른 Peer과의 통신은 보장된다고 생각하시면 되겠습니다.

그리고 타 시스템 간의 TCP 연결을 IP주소와 Port 번호를 알더라도 강제로 연결을 끊을 수는 없습니다. 연결을 끊기 위해 RST플래그를 설정해 위조된 패킷을 보내더라도 SEQ + ACK 번호 조합이 일치해야 합니다. 그렇지 않으면 OS수준에서 이를 무시합니다.

정리하면 TCP로 통신중인 세션에 대해 두 호스트의 IP주소 + 포트번호 + SEQ + ACK 번호를 정확히 알 수 있다면 강제로 연결을 끊을 수 있습니다. 이와 관련해 이미 강의를 만들어 두었습니다.

 

[이해하면 인생이 바뀌는 네트워크 프로그래밍]

'섹션5. 패킷 생성 및 전송'에서 'TCP 연결 강제 종료' 부분을 보시면 구체적으로 확인 할 수 있습니다.

https://www.inflearn.com/course/%EC%9D%B4%ED%95%B4%ED%95%98%EB%A9%B4-%EC%9D%B8%EC%83%9D%EC%9D%B4-%EB%B0%94%EB%80%8C%EB%8A%94-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

 

김성규님의 프로필 이미지
김성규

작성한 질문수

질문하기