서로 다른 PC간 통신을 하게되는 프로젝트를 진행하다보면 포트(Port) 라는 단어를 많이 보게됩니다.
그리고 포트를 열어야한다 또는 닫아야한다 이러한 얘기가 많이 나오게 되는대 이 포트라는 것이 무엇이기에 PC간 통신에 단골 손님으로 등장하며 변기뚜껑 마냥 열었다 닫았다 할 수 있는 것 인지 알아보겠습니다.
포트(PORT)? 항구?
Port 의 사전적 의미를 먼저 보고 가겠습니다.
항구 라고 나오네요 현실에서 항구는 선박들이 들어와 운항에 필요한 식자재, 생필품, 사고 팔 물건 등을 싣거나 내리거나 하는 장소입니다.
컴퓨터에서 포트도 항구와 비슷한 의미를 가집니다.
PC를 넓디 넓은 해안 도시라고 생각한다면 해안가에 여러 항구 들이 존재할 수 있겠죠.
어떠한 항구는 디지털 제품을 수출,수입하기 위한 항구일 수 있고, 또 다른 항구는 커피를 수출,수입하기 위한 항구일 수 있으며 그 외에 각 항구들은 저마다의 목적성을 갖을 수 있습니다.
포트 번호
포트를 항구라고 한다면 들어오는 선박들은 자신의 목적에 맞게 항구를 구분하여 정박을 하여야 하기에 항구의 주소지가 필요합니다.
이때 주소지로 쓰일 수 있는 것이 포트 번호입니다.
각 항구들은 고유한 포트 번호 를 갖고 있습니다.
유닉스 운영체제의 PC를 예로 든다면
- 22번 포트는 시큐어 셸 (SSH, Secure SHell) - ssh scp, sftp같은 프로토콜 및 포트 포워딩
- 88번 포트는 HTTP (HyperText Transfer Protocol) - 웹 페이지 전송
- 443번 포트는 HTTPS - 보안 소켓 레이어 (SSL, Secure Socket Layer) 위의 HTTP (암호화 전송) 등 위와 같이 잘 알려진 포트 번호들과 그 목적이 존재합니다. ## 소프트웨어와 포트의 관계
포트 번호는 0 ~ 65535번까지 사용할 수 있습니다. 일반적으로 unsigned short의 2바이트 정수형을 사용합니다
그렇다면 포트가 목적에 맞게 작동할 수 있으려면 그에 맞는 작업 시설이 필요하겠죠? 그때 필요한 것이 소프트웨어 입니다.
사용할 목적에 맞게 설계된 소프트웨어를 작업 시설이라 생각하고 이 작업 시설을 우리의 항구인 포트에 위치시킵니다.
그렇게 되면 목적을 갖고 항구로 들어온 선박들은 작업 시설을 통해 자신의 목적을 달성할 수 있게 되겠죠
예를들어 볼까요?
도서관에 가보면 현재 도서관에 존재하는 서적을 검색할 수 있는 컴퓨터들이 배치되어 있습니다.
우리는 이 컴퓨터를 통해 대여 또는 구매하고자 하는 서적이 도서관이 존재하는지 확인하지요
우리가 대여하고 싶은 책이 “해리포터” 라는 제목의 책이라고 생각해 봅시다.
서적 조회용 컴퓨터에 “해리포터” 라는 책 제목을 입력 후 검색 버튼을 누르는 순간 우리의 선박은 책의 정보를 알려주는 포트 번호를 목적지로 항해를 떠나게 됩니다.
목적지에 도착한 우리의 선박은 “해리포터” 라는 책의 존재 여부를 확인하고 다시 돌아오게 되고, 이를 통해 우리는 현재 도서관에 “해리포터” 책이 존재하는지 확인할 수 있습니다.
포트를 열고 닫다? 무슨 말인가?
가끔 프로젝트를 하다보면 네트워크 통신을 위해 포트를 열어야 한다 또는 닫아야 한다 라는 말들을 듣게 됩니다.
이게 무슨 말일까요?
우리의 포트를 항구에 비유했을 때 항구의 문이 항시 열려있다면 항구의 목적과 일치하는 선박만 들어오는 것이 아닌 나쁜 목적을 갖고있는 선박들도 들어올 수 있게 됩니다.
그 선박이 해적선이라면 우리의 항구 도시는 아수라장이 될 수 있겠지요.
방화벽(Firewall)
이러한 위험성을 대비하여 우리의 PC에 설치된 운영시스템(OS)에는 방화벽(Firewall) 이 존재합니다.
이 방화벽 이라는 친구는 항구의 경비원이 되어 항구의 작업 시설과 다른 목적을 갖는 선박이 들어오면 항구로 들어오지 못하게 막거나, 목적이 어찌되었든 모든 선박을 들어오게 하거나 또는 모든 선박들을 들어오지 못하게 막을 수 있습니다.
잘 알려진 포트를 제외한 보통의 포트들은 방화벽이 모든 출입을 막고 있기에 원하는 포트를 사용하기 위해서는 방화벽을 통하여 포트를 여는 작업이 필요합니다.
이렇게 방화벽을 통해 출입을 허용하면 포트가 열렸다, 출입을 제한하면 포트가 닫혔다 라고 말하게 됩니다.
오늘 이렇게 포트에 대해서 알아보았으며 기회가 된다면 실제 통신 소프트웨어를 포트에 붙여 통신을 하는 글도 작성해 볼 예정입니다.
감사합니다.