회사에서 배포를 진행하는 과정에서 네트워크 기본 지식에 대해 정확한 네트워크 지식을 가지고 있으면 좋을 것 같다는 생각에 정리를 진행합니다.
네트워크에서 사용되는 포트는 문(door), 관문(gateway)이라는 불어 porte
에서 유래되었다고 한다.
Port
는 논리적인 단위로 IP를 통해 접속한 컴퓨터에서 어떠한 곳으로 이동할지를 알려주는 것이다.
클라이언트가 IP만을 가지고 서버에 접속을 한다면 서버는 클라이언트에게 어떤 응답을 해줘야 할지 모르는 상태다.
따라서 클라이언트는 서버에 요청을 보낼때 어떤 정보를 원하는지 명확하게 명시해야 하며 이를 위해서 사용하는 것이 논리적인 Port
다.
0 ~ 1023
: Well-known port
1024 ~ 49151
: Registered port
49151 ~ 65535
: Dynamic port
Well-known port
는 의미 그대로 정말 잘 알려진 포트들을 의미한다. 80번의 http, 22 번의 ssh와 같이 자주 사용되는 포트들에 해당한다.
Registered port
는 특정 용도로 사용하기 위해서 쓰이는 포트들로, 3306 포트의 mySQL, 80번 port 를 대체하기 위한 8080 포트 (웹서버가 2개 이상인 경우) 등이 있다.
Dynamic port
는 특별히 지정되지 않은 포트들로 자유롭게 사용해도 무방하다.
다음과 같이 구분되어 있으며 포트의 규칙을 꼭 따르지는 않아도 되지만 관습적으로 위의 포트 번호 규칙을 따르고 있다.
포트
가 서버를 열어주는 문이기에, 모든 클라이언트에게 포트를 개방하는 것은 위험하다. 따라서 이를 막기 위한 요소가 인바운드
아웃바운드
규칙이다.
인바운드는 클라이언트에서 서버로 들어오는 규칙
을 의미한다.
기본적으로 인바운드 규칙은 모든 포트를 닫는것
을 기본으로 한다.
클라이언트가 80번 포트로 요청을 하게되면 인바운드 규칙에 80번 포트가 있기에 OK
응답을 받을 수 있지만
클라이언트가 22번 포트로 요청을 하게되면 인바운드 규칙에 22번 포트가 없기에 접속할 수 없다는 응답을 받게 되는것이다.
아웃바운드 규칙은 서버에서 나가는 데이터의 규칙을 의미한다.
인바운드 규칙에서 허용되어 포트로 들어왔더라도, 아웃바운드 규칙에서 데이터 반출이 허용되지 않는다면 클라이언트는 다운로드를 할 수 없다.
보통 아웃바운드 규칙은 기본 옵션으로 모든 포트에 허용되어있다.
그림이 너무 귀엽네요. 글 잘 봤습니다. 👍