네트워크에서 사용되는 port 는 불어 porte = 문(door)/관문(gateway)
에서 유래된 것으로 알려져있다.
port 는 의미 그대로 문(door)
이자, 논리적인 단위로서 IP를 통해 접속한 컴퓨터에서 어떤 곳으로 연결할지 구분시키는 역할을 한다.
이렇듯 클라이언트는 IP를 통해서 컴퓨터에 접속할 때, 어떤 것을 원하는지 정확하게 설명을 해줘야하고 이를 위해서 사용하는 논리적인 약속
이 port
이다.
port는 0번부터 65535 사용할 수 있으나
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
는 특별히 지정되지 않은 포트들로 자유롭게 사용해도 무방하다.
포트가 서버를 통하는 문의 역할을 하는 만큼, 악성 코드나 바이러스 역시 포트를 통해서 유포된다. 그렇기 때문에 IP를 통해 접속한 클라이언트에게 언제나 모든 포트를 개방하는 것은 위험한 요소가 된다. 이를 막기 위한 규칙이 인바운드 규칙과 아웃바운드 규칙이다.
인바운드 규칙은 클라이언트가 자신의 서버 데이터에 들어올 수 있는 규칙을 의미한다. 서버에 접속하고, 해당 데이터들을 읽을 수 있으며 권한 여부에 따라서 생성, 수정, 삭제도 허용하는 규칙이다. 클라이언트가 서버의 데이터에 접속하는 권한이므로, 기본적으로 인바운드 규칙은 모든 포트를 닫는 것
을 전재로 한다. 즉, 인바운드 규칙에서 설정하지 않은 포트들은 사용할 수 없는 포트이며, 해당 포트를 사용하더라도 접속 자체를 막게된다.
동그라미 클라이언트와 마름모 클라이언트의 상황을 통해서 살펴보자.
데이터에 접속할 수 있는 권한이 허용된 포트
이므로 클라이언트에게 80번 포트에 해당하는 HTTP 서버를 흔쾌히 주고 있는 모습이다. 인바운드 규칙에서 허용하지 않은 포트
이므로 접속 자체를 거부했다.아웃바운드 규칙은 서버에서 나갈 수 있는 (반출할 수 있는) 데이터에 대한 규칙을 의미한다. 인바운드 규칙에서 허용된 포트로 들어왔다고 한들, 아웃바운드 규칙에서 데이터 반출이 허용되지 않은 포트라면 클라이언트는 "다운로드"를 할 수 없게 된다.
보통 아웃바운드 규칙은 기본 옵션으로 모든 포트에게 허용되어 있는 편이다.
출처
컴퓨터의 도로, 포트(port)란 무엇일까? 출처
[Windows] 윈도우 포트 열기 - 인바운드 규칙/아웃바운드 규칙 출처