해결된 질문
작성
·
631
·
수정됨
0
제가 이해하기로는
IP주소에는 네트워크 주소와 호스트 주소가 있고 포트번호는 호스트 주소에 있는 프로세스
더 정확히 말하면 소켓을 구분하는 번호로 사용된다고 이해하고 있는데요.
www.naver.com 이나 www.google.com이나 뒤에 :80 포트 번호가 생략된다고 하던데
(https 라면 443 이라고 알고 있습니다)
포트 번호는 호스트 주소에서 프로세스를 구분 하는 용도라고 이해를 했는데
http프로토콜이 80번 포트를 사용한다는게 이해가 가질 않습니다.
http가 프로세스는 아니잖아요? 그런데 어떻게 포트 번호가 있는건지..
네이버나 구글 url주소를 치면 dns서버에서 ip주소로 변환해서 회사 서버에 접속이 되고
그중에서 http 프로토콜에? 웹서비스 접속을 하려고 하니 80번 포트로 접속을 하는 건지..
그럼 이것은 강의에서 설명하신 포트 중에 서비스 번호를 의미하는건지..
그리고 포트포워딩에서 포트는 위에 포트를 의미 한다기 보다
강의에서 설명하셨던 2계층 포트를 의미하는건가요?
개념이 뒤죽박죽되어 이해가 가질 않아 답답한 마음에 질문드립니다.ㅠㅠ
답변 2
1
그 혼합된 두 가지는 제대로 이해하고 있는 것으로 보입니다.
만일 한 컴퓨터에서 외부 TCP 접속을 받을 수 있는 프로세스가 2개(각각을 A와 B로 가정)라고 했을 때 두 프로세스 모두 TCP 20000번 포트에서 접속을 대기할 수는 없습니다. 애초 접속 대기 소켓 생성과정에서 실패합니다. 그러므로 동시에 A, B 모두 외부 접속을 받으려면 20000, 20001번 등 서로 다른 번호를 사용해야 합니다.
그리고 사설 주소를 사용하는 내부 Host(Host ID: 1~3) 중 셋 모두 TCP 20000번을 열고 외부 접속을 기다리는 프로세스를 각각 실행 할 수는 있습니다. Host가 아예 다르기 때문에 번호가 같다는 것은 전혀 문제가 되지 않습니다. 따라서 192.168.0.1번, 2번, 3번 모두에서 TCP 20000을 개방해 외부 접속을 기다리는 프로그램이 실행되는 것까지는 아무 문제가 없습니다. 그런데 공유기에 포트포워딩 설정이 적용되고 설정에 따라 192.168.0.1번의 20000번으로 전달 되도록 유도했다면 192.168.0.2, 3번 Host는 프로그램 실행 및 접속대기를 하더라도 외부 접속을 받을 수는 없습니다.
참고하시기 바랍니다.
1
HTTP 프로토콜을 사용해 웹 서비스를 제공하는 응용 프로그램(프로세스)이 보통 80번을 사용하는 것이 일반적입니다. 이를 줄여 'HTTP 프로토콜이 80번을 사용'한다라고 설명한 것입니다. 그리고 IP주소는 Network ID와 Host ID 나뉘지만 둘을 합쳐 하나의 온전한 주소가 됩니다.
끝으로 포트포워딩이 공유기에 적용된 경우를 말하는 것이라면 이는 4계층 포트번호 입니다. 참고하시기 바랍니다.
포트포워딩이라는게 저희집 컴퓨터가 3대가 있다고 가정하고 192.168.0.1~192.168.0.3까지 사설 ip를 할당받았다고 할때 외부에서 사설 ip로는 접속을 할수 없으니까 저희집 공인ip 포트를 개방하여 192.168.0.1 의 주소를 쓰는 컴퓨터에 20000번의 포트 번호를 할당하여 주면 외부에서는 저희집 공인ip:20000 으로 접속을 할수 있다. 이렇게 저는 이해를 하고 있는데요.
말씀하신대로 4계층 포트 번호면 host컴퓨터에 NIC을 거쳐 들어와서 커널단 TCP에서 프로세스 소켓을 고르는 용도로 저는 이해를 하고 있습니다.
이 2가지가 혼합이 안되서 헷갈리는데요... 설명해 주신대로 포트포워딩이 공유기에 적용된 것이라면 저희집 컴퓨터 3대를 각각의 프로세스로 바라 보는건가요? 만약 한 컴퓨터에서 실행하는 프로세스가 2개라면 20000번 이외에 다른 포트번호를 할당해 줘야 되는건가요? 개념이 헷갈리는데 이것만 이해하면 정리 될것 같습니다.
완벽하게 이해가 되었습니다.. 어디서도 이런 설명을 들을 수가 없는데 정말 감사드립니다.