이전 글 ( https://www.clien.net/service/board/lecture/15872844CLIEN ) 에서
네트워크가 왜 이런 모양을 갖게 되었는지에 대해 설명했습니다.
이번에는 포트에 대한 이야기만 하기 위해 좀 더 간략화 된 그림으로 구조를 바꿔보겠습니다.
너무 간략화 한거 아니냐고요? 기분탓입니다.
어쨌든 이제 먼 컴퓨터든 가까운 컴퓨터든 선만 연결하면 통신을 할 수 있게 되었다는 걸 알 수 있게 되었습니다.
그런데 처음에 통신을 할 때는 그냥 데이터를 보내기만 하면 만족할 수 있었지만
뭔가 컴퓨터를 가지고 할 수 있는 일이 많아진다는 걸 깨닫고 나서는 통신 선로를 통해 이런 저런 것들을 시도해보기 시작합니다.
그런데 이렇게 다양한 형태의 데이터가 만들어지면서 문제가 발생합니다.
통신 선로는 하나인데 느닷없이 별의별 데이터를 받게되면 받는 쪽에서 막 데이터가 섞여들어오게 들어오게 되는거죠.
받는 입장에서는 뭐가 막 쏟아지는데 뭐가 파일이고 뭐가 문자고 뭐가 전화인지 혼란스럽게 됩니다.
더욱이 이게 통신이 1:1도 아니죠?
이렇게 여러 곳에서 오는 데이터가 섞여서 들어오게 되면 데이터를 받는 입장에서는 대폭발하는 각이 나오죠.
'안녕 친구들? 해결사가 왔어!'
그래서 여기서 해결사가 등장하게 됩니다.
바로 포트(Port) 라는 거죠.
뭔가 요청을 보낼 때 IP 주소만 보내는게 아니라 이게 '어떤 데이터'다라는 걸 표시해서
데이터를 받는 컴퓨터가 쉽게 처리할 수 있게 하는겁니다.
일종의 사서함 같은 개념이라고 생각하면 이해가 쉬워집니다.
보내는 쪽에서 정해진 번호의 사서함(=포트)으로 데이터를 넣어주는 거죠.
그러면 받는 측에서도 이게 어떤 용도인지 쉽게 파악하고 처리할 수 있게 됩니다.
이렇게 포트라는 것이 존재하게 되면 보내는 측에서는 몇 번 포트로 메시지를 보낼 것인지 적어서 보내게 됩니다.
그러면 이제 받는 측 컴퓨터는 각각의 어플리케이션들에게 담당하는 포트를 주고
그 쪽으로 들어오는 데이터를 전담하게끔 하는 것으로 데이터의 분류를 쉽게 처리할 수 있게 되죠.
특히 자주쓰이는 데이터들은 아예 특정 용도로 포트를 고정해놓고 쓰기도 합니다.
우리가 많이들 아는 80번 포트가 그런 거죠. 다들 알다시피 80번은 웹 서비스의 기본 포트입니다.
그래서 이렇게 고정해놓고 쓰는 포트들은 IANA에 모두 공식적으로 등록이 되게 되어있습니다.
어떤 포트들이 등록되어있는지 궁금하신 분들은 영어 울렁증을 감안하고 아래 링크로 가보면 되긴하는데 추천하지는 않습니다.
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt
포트라는 건 대략 이런 느낌이긴 한데,
이렇게 컴퓨터끼리 주고받는 메시지를 보다보면 크게 두 종류로 나눌 수가 있습니다.
한 가지는 상대방의 응답을 요구하는 메시지가 있고,
또 다른 한 가지는 상대방의 응답과 상관없이 일방적으로 전달하는 메시지가 존재합니다.
이게 우리가 가끔씩 듣게되는 TCP와 UDP의 차이입니다.
TCP가 서로 대화를 주고 받는 메시지라면
UDP는 일방적으로 내 상태를 떠드는 것과 같죠.
그러다보니 이 두 프로토콜(TCP와 UDP를 말합니다. 끝의 P가 프로토콜의 약자입니다.)의 처리방식이 다를 수 밖에 없죠.
위에서 이야기한 사서함 방식은 사실 UDP 방식에 가깝습니다.
보내는 쪽에서 사서함에 우편물(=메시지)을 마구 채워넣기만 하면 되니까요.
하지만 그런 방식이 아닌 서로 메시지를 주고 받는 방식이라고 하면 사서함이 아닌 전화에 가까운 방식이 됩니다.
전화를 걸면 신호가 간다음 연결이 되고, '여보세요?' 한 다음에 이야기가 시작되고. '끊을께' 하고 연결을 끊죠.
사서함이 아니라 이렇게 교환기로 직접 포트끼리 연결해서 계속해서 메시지를 주고 받는 식이 됩니다.
이렇게 방식이 서로 다르다보니 컴퓨터에서는 TCP 포트와 UDP 포트가 따로 존재하게 됩니다.
즉 교환기 1대, 사서함 1대 이렇게 갖고 있는 꼴이랄까요?
즉 같은 5번 포트...라고 하더라도 TCP 5번 포트와 UDP 5번 포트는 그냥 다른 거라는 거죠.
이것이 우리가 공유기에 포트를 설정하는 곳에 보면 '프로토콜'과 '포트번호'가 항상 쌍으로 붙어있는 이유입니다.
다음 글에서는 도메인 네임에 대해서 알아보도록 하겠습니다.
네임편: https://www.clien.net/service/board/lecture/15874590CLIEN
서브넷편: https://www.clien.net/service/board/lecture/15882226CLIEN
공유기편: https://www.clien.net/service/board/lecture/15887017CLIEN
2021년 나스당원 필수 전공과목으로 추천합니다ㅎㅎ
NAT, 포트포워딩 같은 기능이 무엇인지 모르고 설정하시던 분들한테 좋아보여요
잘봤습니다.
잘 봤습니다.
이해하기 쉬워서 까먹지 않을것 같네요ㅋㅋㅋ
응답을 기대하고 주고받으니 전달이 비교적 확실하다
HTTP라는 약속된 형태(프로토콜)로 웹사이트 접속을 하거나, 채팅을 하거나, 파일 업로드 다운로드 등등 일반적인 통신의 경우 이쪽이고,
(포트 번호만 알려주고 별 말 없으면 TCP)
UDP
일단 일방적으로 보내니까 받았는지 불명확하지만 빠르다
혹은 속도가 급하니까 대충 받아서 오류난 패킷은 버리고 일부만 건져도 활용할 수 있는 프로그램이다
이래서 이쪽이 음성이나 영상 실시간 스트리밍에 많이 쓰이는 것으로 이해하기 쉬웠습니다.
스카이프나 줌 미팅 영상이 느려지고 일그러지더라도 UDP니까 못 보낸 걸 다시 전송하느라 허비하지 않고 실시간으로 따라잡을 수 있죠!
이해가 쏙쏙됩니다 유익한 나눔글 정말 감사합니다!
좀 배워서 만들어 보고 싶은데 비전문가다보니 궁금해서 여쭤봅니다...
프로그램을 만들 환경과 개발 툴에 적응하는게 먼저죠.
스케이트 타고 점프하는게 어렵냐고 질문하는 거랑 비슷합니다.
점프 그 자체보다 스케이트 타고 빙판에 적응하는게 우선이겠죠.
어차피 각 언어별로 비슷한 코드들이 여기저기 되게 많을 겁니다. 만드는 거 자체는 어렵지 않을거라 봐요.
https://github.com/gumb0/wol.cpp
집 공유기에 연결된 프린터를 외부에서 연결하는 방법... 알려주세요ㅠㅠ
아래 페이지가 도움이 될 것 같네요.
https://pgh268400.tistory.com/219
핵심은 포트포워딩과 TCP/IP 포트로 프린터 추가하는 겁니다.
좋은 글 감사합니다.
해당 작업이 다 끝나면 소멸되는 임시포트.
TCP/IP Illustrated 라는 책이 나왔다는걸 알고 책아저씨 한테 제본책 구해보고 오오오오 했던 기억이 새록새록나네요
예전에 스타할 때 TCP/IP가 있었고
나중에 UDP가 생겼는데
게임할 때 UDP가 반응속도 빠르다고 해서 PC방에서 UDP로 하곤 했었는데 게임에서는 어떤 방식이 유리한 거예요??
UDP가 반응속도가 빠르다는건 아무 의미 없는 이야기입니다.
네트워크 자체의 레이턴시가 훨씬 큰 영향을 미치기 때문에 프로토콜의 성능이 게임에 영향을 미치긴 어려웠다고 봅니다.
오히려 IPX는 LAN 전용 프로토콜이고 UDP는 LAN/WAN 겸용이기 때문에 IPX가 빠르면 더 빨랐겠죠.
정작 그렇게 IPX/UDP 따져놓고 게임에 들어가서 Network Options 누르고 'Extra high latency'를 선택했었다면 더더욱 최악의 선택이었겠죠. 게임할 때 반응속도는 오히려 저 Network Options 의 저 메뉴가 훨씬더 큰 영향을 미칩니다.
그게 최악의 선택이었군요 ㅎㅎ
그래서 항상 게임할 때 F10 > O > N > L 누르기 바빴네요.
Low Latency 가 반응 딜레이가 Low 하다는 의미입니다.
Extra High 는 반응 딜레이가 Extra High 하다는 거구요.
이렇게 설명 못합니다ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
대단하십니다 저도 재미있게 잘 보고 갑니다
감사합니다
/Vollago
이런 자료 감사드려요
추천 놓고 갑니다.
비지오로 그리신 건가요? 그림도 깔끔해서 보기 좋네요. 감사합니다.
고맙습니다 (_ _)
(혹시 교수님이시면 죄송합니다.)
하지만 이렇게 훌륭히 설명하시는걸 보니 공대 교수님이 아니신것 같습니다!!