· 톺아보기

PC/모바일

네트워크는 왜 이렇게 생긴걸까? 포트편

지하철승객 · · 수정

조회 38,119 · 공감 281 · 댓글 90


이전 글 ( 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

댓글 90

  1. Overflow · · 공감 20
    나스당에서 왔습니다.
    2021년 나스당원 필수 전공과목으로 추천합니다ㅎㅎ

    NAT, 포트포워딩 같은 기능이 무엇인지 모르고 설정하시던 분들한테 좋아보여요
  2. JesusFreak · · 공감 1
    역시 후속편이 있었군요~! 재밌습니다!!
  3. 반찬투정 · · 공감 20
    강의의 내용은 기초반이지만 선생님께서 1타강사시군요..
    잘봤습니다.
  4. 윈터블루 · · 공감 1
    정말 이해가 쉽네요 ㅠㅠ 감사합니다!
  5. 지딱코 · · 공감 2
    다음 강좌가 기대됩니다.
  6. makeid · · 공감 7
    1타 강사 인정합니다 ㄷㄷㄷ
  7. 덴버공룡 ·
    가끔 이개념을 초보자에게 전달할때 분편했는데 아주 좋은 자료가 될것같습니다!
  8. 천하태평 ·
    1타 강사 ^^b
  9. naughty ·
    재밌네요 다음내용 기다리겠습니다.
  10. 헬로덱 ·
    정말 잘 쓰시네요.
    잘 봤습니다.
  11. cats96 ·
    dns편 기대할게요
  12. 꿈깨는식물 ·
    감사합니다. 이해가 쏙쏙 되네요. ^^
  13. The1975 ·
    와 지금까지는 다 아는 내용이었는데, TCP / UDP 차이가 항상 궁금했는데 드디어 해결됐습니다! ㅎㅎㅎ 감사합니다.
  14. 모노큐브 ·
    항상 궁금하던 내용인데 쉽게 풀이해주셨네요 감사합니다
  15. bloodyblue ·
    선공감 후감상! 잘 봤습니다.
  16. bEAt_Sun★ ·
    좋은 강좌 감사합니다~
  17. choochooo ·
    쉽지만 고급강의
  18. allday ·
    오ㅏ우 리얼 1타강사님~
  19. 0브라운0 ·
    굿! 감사합니다:)
  20. asithappens ·
    구독 신청합니다!
  21. 그란비 ·
    NAS사용하면서 TCP와 UDP 차이도 모르고 있었는데, 덕분에 잘 배워갑니다.
    이해하기 쉬워서 까먹지 않을것 같네요ㅋㅋㅋ
  22. snowage ·
    감사합니다.
  23. 텐치킨 ·
    포트설명 감사합니다 ㅎㅎ
  24. 그르누이s ·
    다음강좌 기다릴께요
  25. 커피칼디 · · 공감 5
    TCP
    응답을 기대하고 주고받으니 전달이 비교적 확실하다
    HTTP라는 약속된 형태(프로토콜)로 웹사이트 접속을 하거나, 채팅을 하거나, 파일 업로드 다운로드 등등 일반적인 통신의 경우 이쪽이고,
    (포트 번호만 알려주고 별 말 없으면 TCP)

    UDP
    일단 일방적으로 보내니까 받았는지 불명확하지만 빠르다
    혹은 속도가 급하니까 대충 받아서 오류난 패킷은 버리고 일부만 건져도 활용할 수 있는 프로그램이다
    이래서 이쪽이 음성이나 영상 실시간 스트리밍에 많이 쓰이는 것으로 이해하기 쉬웠습니다.

    스카이프나 줌 미팅 영상이 느려지고 일그러지더라도 UDP니까 못 보낸 걸 다시 전송하느라 허비하지 않고 실시간으로 따라잡을 수 있죠!
  26. eltype ·
    이런 강좌글은 선추천 후감상이라고 배웠습니다.
  27. 행복으로갑시다 ·
    세상에 이렇게 쉽게 알려주시다니요. 감사합니다. 이렇게 배워갑니다!
  28. 소심한화끈남 ·
    선생님 소질이 있으시네요~ ^^
  29. maize92 · · 공감 4
    우와.. 이런 일반인들을 위한 네트워크 설명은 정말 필요하다고 생각합니다. 책으로 정식출간해 주세요.. 제발요.. 중학생 정도 되면 기술시간에 이런거 배워서 집에 공유기 정도는 스스로 설정할 수 있어야 한다고 생각합니다... 저도 배우고 애들도 좀 배울 겸 찾아봐도 책으로 쉽게 설명된 건 거의 없더라구요..
  30. 스트라이커ㅋ ·
    너무 좋습니다. 머리에 쏙쏙 들어오네요. 감사합니다~
  31. BBANG ·
    구독 & 좋아요 눌러드립니다 ㅎㅎ
  32. UMP ·
    포트라는게 이런 개념이였군요
  33. 물리 ·
    좋은강좌~ 감사합니다 ㅎ
  34. 고급별명 ·
    저같은 문외한도 쉽게 이해를 할 정도로 글을 굉장히 잘 쓰시네요
  35. 다꾸 ·
    1편에 이어 머리에 쏙쏙 들어옵니다~ 감사합니다~^^
  36. 꼬인손가락 ·
    아파트로 비유하면 동이 IP, 호가 포트라고 배웠습죠...
  37. 아누이 ·
    와아~ 설명에 천부적인 재능이 있으시네요!!!!!!
    이해가 쏙쏙됩니다 유익한 나눔글 정말 감사합니다!
  38. blue_mallow ·
    아 정말 쉽고 재미있습니다. 감사합니다~!
  39. soulfly05 ·
    1타강사 인정합니다. 이런 선생님만 만났다면 전 문과를 선택안했을거에요.
  40. 띵땅띵땅 ·
    좀 다른 분야일수도 있을 것 같은데, PC나 프로젝터 같은거 고정IP 잡아서 맥주소로 전원 ON/OFF (wakeonlan+Shutdown) 으로 제어할 수 있는 프로그램같은거 만들기 어려울까요 ㅠ ㅠ ?
    좀 배워서 만들어 보고 싶은데 비전문가다보니 궁금해서 여쭤봅니다...
  41. 지하철승객 ·
    @띵땅띵땅님 아마 Wake on lan 패킷을 네트워크로 쏘는 작업 그 자체보다
    프로그램을 만들 환경과 개발 툴에 적응하는게 먼저죠.

    스케이트 타고 점프하는게 어렵냐고 질문하는 거랑 비슷합니다.
    점프 그 자체보다 스케이트 타고 빙판에 적응하는게 우선이겠죠.

    어차피 각 언어별로 비슷한 코드들이 여기저기 되게 많을 겁니다. 만드는 거 자체는 어렵지 않을거라 봐요.
    https://github.com/gumb0/wol.cpp
  42. kubectl ·
    L4 까지 왔군요!
  43. 아이러브사람 ·
    이분 책 낼 분이네요. ㅋㅋ 책 내시는 중이시죠? 이런 책은 좋죠.. 책 내세요... 얼렁..
  44. 기타는깁슨 ·
    다음글도 기대할게요
  45. 바로사채 ·
    이거 모으면 우리 애들에게도 공유할수 있을듯! 감사합니다!!!
  46. hanurim ·
    역시 연재가 가는군요 !! 조금씩 어려워지지만 그래도 쉽게 쓰셔서 감사합니다.
  47. 지하철승객 · · 공감 1
    @hanurim님 그렇죠? -_-)a 가능한 더 쉽게 풀어보도록 노력하겠습니다.
  48. 내안번 ·
    와우 너무 재밌습니다 너무 재미있어요!
  49. ruabiy ·
    와 설명 정말 잘하시네요~
  50. SpaceFunk ·
    설명이 너무 좋네요
  51. 공채순산 ·
    벌써 다음 글도 기대됩니다~
  52. SUBIDUBI ·
    선생님은 천재시면서 바보의 마음을 이해하시는 분이군요!!!
  53. 바라바 ·
    1타강사 인정합니다~ 윗댓글 중에도 있지만 속도의 차이도 언급되었다면 더 좋았을 것 같아요
  54. 암시랑안해 ·
    설명이 진짜 주옥같습니다. TCP UDP를 전화와 사서함으로 비유하심에 불알을 탁쳤습니다.
  55. 아무것도아니야 ·
    우와 정말 보석같은 글을 발견한 느낌입니다. 감사드립니다.
  56. 뽁실뽁실티모 ·
    혹시 질문도 받아주시나요?
    집 공유기에 연결된 프린터를 외부에서 연결하는 방법... 알려주세요ㅠㅠ
  57. 지하철승객 ·
    @뽁실뽁실티모님 음... 인터넷에 정보가 많을텐데요.
    아래 페이지가 도움이 될 것 같네요.
    https://pgh268400.tistory.com/219

    핵심은 포트포워딩과 TCP/IP 포트로 프린터 추가하는 겁니다.
  58. COGITO ·
    이전편도 그렇고, 머리에 쏙쏙 들어오는 설명입니다.
    좋은 글 감사합니다.
  59. 우리고아나라 ·
    받는쪽 포트는 사서함처럼 고정포트지만 보내는쪽 포트는 임의적으로 생성된 포트라는 것도 추가하는 건 어떤가요.
    해당 작업이 다 끝나면 소멸되는 임시포트.
  60. 지하철승객 ·
    @우리고아나라님 빠진 설명이 그거 뿐만이 아닙니다만, 어차피 이 글에서는 '포트'가 뭐하는 놈인지에 대한 이해만 시키면 된다고 생각해서 딱 여기까지만 설명하려고 합니다.
  61. 오성이 ·
    아~내용좋아요 굳
  62. 1200 ·
    개략적인 개념이 잡혔습니다. 좋은강의 감사합니다.
  63. 쟘스 ·
    후속편 기대합니당~~ㅎㅎ
  64. 멜론 ·
    쉽게 잘 설명하는 것도 능력인듯 합니다. 응원합니다.
  65. 커어피 ·
    선생님 질문있어요!
    예전에 스타할 때 TCP/IP가 있었고
    나중에 UDP가 생겼는데
    게임할 때 UDP가 반응속도 빠르다고 해서 PC방에서 UDP로 하곤 했었는데 게임에서는 어떤 방식이 유리한 거예요??
  66. 지하철승객 ·
    댓글 이미지
    @커어피님 TCP/IP가 아니고 IPX 랑 UDP 일겁니다.
    UDP가 반응속도가 빠르다는건 아무 의미 없는 이야기입니다.
    네트워크 자체의 레이턴시가 훨씬 큰 영향을 미치기 때문에 프로토콜의 성능이 게임에 영향을 미치긴 어려웠다고 봅니다.
    오히려 IPX는 LAN 전용 프로토콜이고 UDP는 LAN/WAN 겸용이기 때문에 IPX가 빠르면 더 빨랐겠죠.

    정작 그렇게 IPX/UDP 따져놓고 게임에 들어가서 Network Options 누르고 'Extra high latency'를 선택했었다면 더더욱 최악의 선택이었겠죠. 게임할 때 반응속도는 오히려 저 Network Options 의 저 메뉴가 훨씬더 큰 영향을 미칩니다.
  67. 커어피 ·
    @지하철승객님 아 착각했네요...ㅎㅎ 우문에 현답이네요!! 감사합니다*^^*
  68. 커어피 ·
    @지하철승객님 예전에 친구들이 게임 들어가면 f10 > o > n > e 눌르래서 눌렀는데
    그게 최악의 선택이었군요 ㅎㅎ
  69. 지하철승객 ·
    @커어피님 네. 그게 완전 최악의 선택입니다.
    그래서 항상 게임할 때 F10 > O > N > L 누르기 바빴네요.
    Low Latency 가 반응 딜레이가 Low 하다는 의미입니다.
    Extra High 는 반응 딜레이가 Extra High 하다는 거구요.
  70. 커어피 ·
    @지하철승객님 늦게라도 알려주셔서 감사합니다 ㅎㅎㅎㅎ 좋은밤 되셔요*^^*
  71. TIENE ·
    제가 네트워크 필드 엔지니어로 일하고 있지만서도
    이렇게 설명 못합니다ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
    대단하십니다 저도 재미있게 잘 보고 갑니다
    감사합니다
    /Vollago
  72. 치토스86 ·
    시청각 자료의 선택도 적당한 거 같습니다.
    이런 자료 감사드려요
    추천 놓고 갑니다.
  73. EOMSTAR ·
    정말 감사해요~ 막연히 어렵게만 느껴지던 네트워크가 조금은 이해가 되고있어요!!!
  74. 버미파더 ·
    시리즈 끝나면 책으로 내도 될 거 같으신데요 ㄷㄷ
    비지오로 그리신 건가요? 그림도 깔끔해서 보기 좋네요. 감사합니다.
  75. 지하철승객 ·
    @버미파더님 파워포인트로 그리고 있습니다. ㅋ 호평 감사합니다.
  76. 오프 ·
    정말 많은 도움 되었습니다.
    고맙습니다 (_ _)
  77. spark ·
    이런분이 공대 교수님이셨어야하는데 ㅠ
    (혹시 교수님이시면 죄송합니다.)
    하지만 이렇게 훌륭히 설명하시는걸 보니 공대 교수님이 아니신것 같습니다!!
  78. 지하철승객 ·
    @spark님 ㅎㅎ 교수는 아니고 한때 시간 강사였었죠.
  79. 따끈따끈 ·
    80번 포트는 http에 예약돼 있는거야 다들 알지만 666번 포트는 DOOM에 예약된건 잘 모르더군요. 후후.
  80. kungmo ·
    다음 강의만 기다려집니다. 너무 재밌어요.
  81. 먼짝 ·
    좋은글 감사합니닷
  82. 댄핸더슨 ·
    좋은 글 감사합니다. 네트워크 용어가 항상 어려웠었는데 ^^
  83. 뉴턴의사과 ·
    좋은 글 감사합니다!
  84. 둥~ ·
    레전드!!
  85. istD_어토 ·
    이해 쏙쏙 아주 좋은 강의입니다. ^^
  86. Henrychoi ·
    이건 진짜 클리앙 전공필수 과목으로 채택 되어야 합니다. 완젼 멋져요. !!
  87. ifmkl ·
    설명 잘하시네요 ㅎ
  88. 꾸팍 ·
    매번 챙겨보고 있습니다^^ 복 받으실 거예요
  89. twosixty ·
    감사합니다...
  90. mo88 ·
    내용 너무좋아요!!!!

팁과강좌 최근 글

팁과강좌 목록 더 보기