네트워크는 왜 이렇게 생긴걸까? 포트편
페이지 정보
본문
이전 글에서 네트워크가 왜 이런 모양을 갖게 되었는지에 대해 설명했습니다.
이번에는 포트에 대한 이야기만 하기 위해 좀 더 간략화 된 그림으로 구조를 바꿔보겠습니다.
이제 먼 컴퓨터든 가까운 컴퓨터든 선을 연결하고 IP 주소를 가지고 있다면 통신을 할 수 있게 되었다는 걸 알 수 있게 되었습니다.
그런데 처음에 통신을 할 때는 그냥 데이터를 보내기만 하면 만족할 수 있었지만
뭔가 컴퓨터를 가지고 할 수 있는 일이 많아지면서 통신 선로를 통해 이런 저런 것들을 시도해보기 시작합니다.
파일도 보내고, 메시지도 보내고, 전화도 걸고 등등
그런데 이렇게 다양한 형태의 데이터가 만들어지면서 문제가 발생합니다.
통신 선로는 하나인데 느닷없이 별의별 데이터를 받게되면 받는 쪽에서
온갖 데이터가 정리되지 않은 상태로 섞여들어오게 들어오게 되는거죠.
받는 입장에서는 뭐가 막 자신에게 쏟아지는데 뭐가 파일이고 뭐가 문자고 뭐가 전화인지 혼란스럽게 됩니다.
더욱이 이게 통신이 1:1도 아니죠?
여러 대의 컴퓨터가 한 컴퓨터로 데이터를 동시에 보낼 수도 있습니다.
이렇게 여러 곳에서 오는 데이터가 섞여서 들어오게 되면 데이터를 받는 입장에서는 대혼란에 빠지게 되겠죠?
이런 문제를 해결할 또다른 방법이 필요하게 됩니다.
그래서 여기서 해결사가 등장하게 됩니다.
바로 포트(Port) 라는 거죠.
뭔가 요청을 보낼 때 도착지인 IP 주소만 보내는게 아니라 이게 '어떤 데이터'다라는 걸 표시해서
데이터를 받는 컴퓨터가 쉽게 처리할 수 있게 하는겁니다.
일종의 사서함 같은 개념이라고 생각하면 이해가 쉬워집니다.
보내는 쪽에서 정해진 번호의 사서함(=포트)으로 데이터를 넣어주는 거죠.
그러면 받는 측에서도 이게 어떤 용도인지 쉽게 파악하고 처리할 수 있게 됩니다.
그러면 이제 받는 측 컴퓨터는 각각의 어플리케이션들에게 담당하는 포트를 주고
그 쪽으로 들어오는 데이터를 전담하게끔 하는 것으로 데이터의 분류를 쉽게 처리할 수 있게 되죠.
특히 자주쓰이는 데이터들은 아예 특정 용도로 포트를 고정해놓고 쓰기도 합니다.
우리가 많이들 아는 80번 포트가 그런 거죠. 다들 알다시피 80번은 웹 서비스의 기본 포트입니다.
요즘은 보안을 강화한 443번 포트가 웹 서비스의 기본 포트죠.
그리고 이렇게 고정해놓고 쓰는 포트들은 IANA에 모두 공식적으로 등록이 되게 되어있습니다.
어떤 포트들이 등록되어있는지 궁금하신 분들은 영어 울렁증을 감안하고 아래 링크로 가보면 되긴하는데 추천하지는 않습니다.
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt
이렇게 포트를 통해서 다양한 데이터를 혼선 없이 주고받을 수 있게 되었습니다.
그런데 포트와 별개로 컴퓨터끼리 주고받는 메시지를 보다보면 크게 두 종류로 나눌 수가 있습니다.
한 가지는 서로 대화하듯 상대방의 응답을 요구하는 메시지가 있고
또 다른 한 가지는 상대방의 응답과 상관없이 일방적으로 전달하는 메시지가 존재합니다.
이게 우리가 가끔씩 듣게되는 TCP와UDP의 차이입니다.
TCP가 서로 대화를 주고 받는 메시지라면
UDP는 일방적으로 내 상태를 떠드는 것과 같죠.
그러다보니 이 두 프로토콜(TCP와 UDP를 말합니다. 끝의 P가 프로토콜의 약자입니다.)의 처리방식도 다릅니다.
위의 그림처럼 TCP는 컴퓨터끼리 포트를 서로간에 열고 1:1로 전용 통신로를 개설한 것처럼
연결한 뒤 메시지를 주고 받습니다.
반면에 UDP는 하나의 포트를 열면 우체통 처럼 열려있고
여러 컴퓨터에서 UDP 메시지를 그 포트에 집어넣으면 받는 컴퓨터에서
어느 컴퓨터에서 보낸 메시지인지 메시지마다 확인하고 처리합니다.
이렇게 처리하는 방식이 완전히 다르기 때문에 같은 5번 포트...라고 하더라도
TCP 5번 포트와 UDP 5번 포트는 서로 관련이 없는 다른 포트가 됩니다.
이 것이 공유기에서도 포트를 설정하는 곳에 TCP와 UDP를 선택한 뒤 포트번호를 입력하는 이유입니다.
이렇게 이번 글에서는 포트와 TCP/UDP에 대해서 알아보았습니다.
다음 글에서는 도메인 네임에 대해서 알아보도록 하겠습니다.
꼬마라크님의 댓글의 댓글
정의에도 부합되는 짤입니다.
TCP 는 connection-oriented
UDP는 connection-less
프로토콜 이라고 하죠.
CO 는 받았는지 확인 (= 다 들어감.)
CL은 받았겠지.
ㅋㅋㅋㅋ
도깨비방뫙님의 댓글
그래서 tcp는 전화기나 등기처럼 udp보다 느리지만 확실한 통신이고,
udp는 무전기나 우편처럼 일방적이기 때문에 전달되지 않은채 분실될 가능성이 있습니다.
IdiotKick님의 댓글
잼니크님의 댓글
결론적으로 그게 틀린건 아닌데 그럼 TCP의 등장이유가 설명되지 않으니까요
날개달기님의 댓글
학교때 배웠는데 그때보다 재미있는 거 같아요 ㅎㅎ
감사합니다
드라마중독님의 댓글
교과서에 있는 OSI 7 layer설명 보다 쉽긴 하네요...
humanitas님의 댓글
다른 이야기지만,
Port와 사서함 비유에서...
사서함이 우체국에 있는 것이라서....
이 비유를 적용하면, 조금 맞지 않는 것 같습니다.
사서함은... 집 현관에 있는 것이 아니라 우체국에 있는 것이고, 그 우체국에 내 사서함은 계약에 따라 하나일 수도 있고,,여러개일 수도 있는데... (그리고 주소 - IP - 가 우리집 주소가 아니라 내가 사서함 계약한 우체국 주소이죠)
사서함 보다는 차라리..
아파트 전체(주소)가 IP이고...
아파트 호수와 호수에 배당된 우편함을 포트에 비유하는 것이 낫지 않을까 말씀드려봅니다.
예를 들어... xx시 xx구 xx 대로 x번지 xx아파트 11동이 IP이고.... 각 호수가 포트라서...
같은 아파트 내 어느 집으로 배달 되는 것을 알게 되는 것과 비교를 하는 것이 나을 것 같다는 생각이 듭니다.
낯선동네님의 댓글
화신님의 댓글
RJ-45… GBIC… SP/LP…
이런 녀석들 이야기일 줄 알았는데… ^^
재미있는 글 감사합니다!!!
stillcalm님의 댓글
문돌이는 혹시나 궁금해서, tcp/udp 약어가 뭔지 찾아봤는데,
TCP(Transmission Control Protocol)
UDP(User Datagram Protocol) 네요,
포니님의 댓글
운영체제의 OS에서 어플리케이션에서 해당 포트를 내가 쓸거야 라고 선점하는 부분이고
실제로는 웹서비스 같은 경우 80이나 443 열려 있으면 수천명이 붙어서 같은 포트를 쓰기도 하니까요
이를 구분하는 건 TCP의 소스포트와 시퀀스넘버가 아닐까 싶네요
이요후님의 댓글
이렇게 잘 설명해 주시니 이해가 잘 되어서 너무 좋습니다.
감사합니다!
Pixelabor님의 댓글