'IT 상식의 기초' 이야기를 시작합니다.
이제 웬만한 IT 기술은 생활의 일부가 된 지금,
무심코 지나가는, 혹은 늘 접하지만 설명하기는 뭣한
그런 용어, 기술, 개념들을 이해 위주 이야기로 최대한 쉽게 다루어 보고자 합니다.
오늘은 그 첫번 째로, '포트' 이야기입니다.
'포트번호'라고도 하지요.
인터넷 하시다 보면 이런 주소 가끔 보시죠.
http://2237.synology.me:5000/video
주소 http://2237.synology.me 뒤에 따라오는 숫자 '5000'이 바로 '포트 번호'입니다.
의외로 이게 뭔지 아시는 분들이 별로 없으세요.
뭐... 몰라도 생활에 큰 지장은 없지만 ^^
원리와 배경을 알고 사용하시면, '응용' 및 '문제해결'의 능력이 생기지 않겠습니까? ^^
여러분,
공항, 철도플랫폼, 버스터미널, 항구 등의 공통점이 뭘까요?
여러가지가 있겠지만 여기서는 일단 '게이트들이 있다'는 점을 들고 싶습니다.
"손님, 무엇을 도와드릴까요?"
"아가씨, 여기가 부산역 맞죠?"
"네, 그렇습니다."
"강원도 태백을 가야 하는데 어디로 가야 하나요?"
"네, 손님, 표 좀 확인하겠습니다... 네, 감사합니다. 잠시 기다리시면 안내방송 나오는데요, 방송 들으시고 저쪽 3번 출구로 나가시면 됩니다. 즐거운 여행 되시기 바랍니다."
"네, 감사합니다."
철도역마다 행선지 따라 출구가 여럿이듯,
공항마다 행선지 따라 게이트가 여럿이듯,
컴퓨터들도 실행 중인 어플리케이션이 여럿이어서 어떤 어플리케이션을 말하는 것인지를 구별하는 방법이 필요하다는 것.
"팀장님, 여기는 2237 NAS, 주소 http://2237.synology.me 를 따라 도착했어요."
"그래, 수고했다. 얼른 일 시작하자."
"네, 그런데, 팀장님. 여기서 어떤 애랑 일 시작하죠? 여기 와 보니까 손님을 기다리는 애들이 한둘이 아니에요. 파일서버, 웹서버, FTP 서버, 메일서버 등 무지 많아요."
"야, 너, 갈 때 주소 끝에 무슨 번호 없었어?"
"잠깐만요... 네, 있어요. 5000이요."
"그게 바로 너랑 일할 어플리케이션 포트번호야. 그 번호가 바로 걔를 가리키는 거야."
"아... 네, 알겠습니다. 가서 걔를 깨우고, 준비되면 연락드릴께요."
우리가 주소 http://2237.synology.me:5000/video 로 브라우징할 때,
대략, NAS와 브라우저 간 대화가 위와 같으리라는...^^
이때 잘 알려진(well-known) 어플리케이션들은 포트번호가 정해져 있습니다.
웹은 80, FTP는 20/21, Telnet은 23 등...
물론 TCP냐, UDP냐 이런 구분도 수반하지만... ^^
'잘 알려진(well-known)'의 의미는 이런 것입니다.
우리가 예를 들어, 주소가 www.abc.com인 웹 사이트를 찾아가기 위해서는
브라우저 주소창에 http://www.abc.com 이라고 입력 후 엔터합니다.
그러면 잠시 후, 그 웹 사이트가 뜹니다.
이때 주소 뒤에 포트번호 80을 붙이지 않았는데도 말이죠.
이것은, 내 브라우저가 이해하기를,
'아, 주소 뒤에 특별한 포트번호가 없는 걸로 봐서 이 사이트가 운영되는 웹 서버는 잘 알려진 포트번호 80을 그냥 쓰는가 보다.'
하고는, 자기가 알아서 주소 뒤에 숫자 80을 붙여서
해당 사이트 웹 서버에게 서비스를 요청한 것입니다.
자, 이렇게 해서 내 브라우저의 서비스 요청을 저 쪽 웹 서버는
포트번호 80을 통해 받아들여
브라우저-TO-웹서버 간 연결이 만들어졌습니다.
그러면, 반대로 웹서버-TO-브라우저는 포트번호 몇 번을 통해 이루어질까요?
이때는 특별히 '잘 알려진' 번호가 따로 있는 게 아니고
그때그때 웹 서버와 브라우저가 서로 협상하여 정하는 것이랍니다.
첫 이야기, '포트번호' 이야기는 이 정도로 하지요.
혹시 더 좋은 예, 더 쉬운 설명이 생각나면 이 내용을 업데이트하겠습니다.