Intro
면접 CS 스터디를 하게 되어 네트워크부터 "다시" 공부를 시작하게 되었습니다. OSI 7 계층 정도는 완벽하게 숙지하고 있었다고 생각했는데 학부 시절에 달달 외웠던 것들이 거의 휘발되었습니다.. 아무튼 이번주는 시험도 있고 미니 프로젝트도 있어서 데이터 링크 계층까지 하는 걸로 정해졌어요. 화이팅🔥
OSI 7 Layer
OSI 7 계층이라고 하면 바로 튀어나오는 암기 공식이 있습니다.
물데네전세표응
처음 보는 사람이 이게 뭐냐고 묻는다면 OSI 7 계층이라고 답하겠습니다.
아니 뭐, 그냥 이렇게 외우면 됩니다. 원소 기호를 앞글자를 따서 외웠듯이, 정처기 공부할 때 두부이걸다줘를 외웠듯이..
물리계층 - 데이터 링크 계층 - 네트워크 계층 - 전송 계층 - 세션 계층 - 표현 계층 - 응용 계층
사실, 실질적인 네트워크 통신은 TCP/IP 프로토콜을 사용해서 이것만 알아도 될 것 같긴 한데 그래도 백엔드 개발자를 생각한다면? 어느 계층에서 어떤 형태로 구성되어 있는지, 통신은 어떻게 일어나는지를 파악하고 있어야 나중에 특정한 계층에서 문제가 생겼을 때 문제를 빠르게 해결할 수 있겠죠?
각 계층마다 역할이 달라서 전송 단위도 다르고, 프로토콜과 사용하는 장비들도 다릅니다. 데이터 전송 단위를 PDU라고 하는데, 프로토콜 데이터 단위(Protocol Data Unit)의 약자입니다. 이것은 데이터 통신에서 상위 계층이 전달한 데이터에 붙이는 제어정보를 뜻하죠.
송신자가 데이터를 전달할 때, 상위 계층에서 아래 계층으로 데이터를 전달하면서 헤더를 붙입니다.(캡슐화)
그 후, 수신자 측에서는 각 계층마다 헤더를 제거하면서 데이터를 수신합니다. (역캡슐화)
학부 수업 때 교수님이 보기 좋게 정리해 주셨던 표가 있었는데, 그건 TCP/IP 기준이므로 OSI 7 계층 표는 따로 만들어야겠네요.
전송단위 | 프로토콜 | 장치 | |
7. 응용 계층 | Data (APDU) | HTTP FTP Telnet DNS SMTP | |
6. 표현 계층 | Data (PPDU) | ASCII MPEG JPEG | |
5. 세션 계층 | Data (SPDU) | NetBIOS SAP SDP SSL TLS | |
4. 전송 계층 | 세그먼트 (Segment) | TCP UDP | L4 Switch/게이트웨이 |
3. 네트워크 계층 | 패킷 (Packet) | IP ARP RIP OSPF IGRP ICMP | L3 Switch/라우터 |
2. 데이터 링크 계층 | 프레임 (Frame) | CSMA/CD(이더넷) CSMA/CA | L2 Switch/모뎀/공유기/브리지 |
1. 물리 계층 | 비트 (Bit Stream) | RS-232 USB 이더넷 Wi-Fi | 리피터/동축케이블/안테나/허브 |
참고로 이더넷이나 OSPF 같은 경우, 정확히 어느 계층에 속하는지에 대해서는 아래 첨부한 링크와 같이 학문적 논쟁이 벌어지고 있습니다. 추가로 4계층의 전송단위는 세그먼트라 적어놨지만, 프로토콜에 따라 TCP : Segment(세그먼트), UDP : Datagram(데이터그램)으로 나뉩니다.
https://www.quora.com/Is-Ethernet-a-layer-1-or-2
https://community.cisco.com/t5/routing/eigrp-ospf-layer-3-or-4/td-p/2490249
뭐, OSI 7 계층에 대해서는 이 정도까지만 알아보도록 하고 나중에 TCP/IP 모델 이야기가 나올 때 다시 꺼내오도록 하죠.
1. 물리 계층(Physical Layer)
그럼 먼저 OSI 계층의 최하위 계층인 물리 계층부터 알아보도록 합시다.
물리 계층은 이름부터가 완전 하드웨어 성향을 띠고 있죠? 물리 계층은 실제 데이터의 이동 통로의 역할을 맡고 있습니다. 전송하기 위해 필요한 전기적, 물리적인 사항들을 정의하고, 통신 케이블로 데이터를 송수신합니다. 이 말이 무슨 말이냐 하면, 상위 계층에서 전송된 데이터를 전기 신호로 변환하여 전송 매체를 통해 데이터를 전달한다는 것. 송신 측에서는 비트 스트림을 랜 카드(NIC : Network Interface Controller)가 전기 신호로 변환하고, 수신 측에서는 받은 전기 신호를 비트 스트림으로 복원하는 겁니다.
여기서 전기 신호는 아날로그 신호와 디지털 신호 두 종류가 있습니다. 아날로그는 시간에 따라 연속적인 값을 가진 정보이고, 디지털은 이산적인 값을 가지고 있는 정보입니다.
디지털 신호는 아날로그 신호(전화 회선/라디오 등)에 비해 잡음에 강하며(왜곡이 적다) 전송하기 쉽고 신뢰할 수 있습니다. 또, 아날로그 신호를 표본화 - 양자화 - 부호화 단계를 거쳐 디지털 신호로 변환할 수도 있긴 합니다. 이건 다음에 자세히 풀어보죠.
물리 계층의 리피터? 허브?
네트워크의 전송 매체는 유선(랜선/광케이블)과 무선(라디오파/적외선)으로 나눌 수 있습니다. 그리고 아까 표에서 봤던 물리 계층의 장비에는 리피터와 허브가 있었습니다. 보통 신호는 전송하는 거리가 멀면 멀수록 감쇄되기 때문에 약해진 신호를 정상 파형으로 복원하여 재전송할 필요가 있습니다. 이를 처리하기 위해 필요한 것이 바로 "리피터" 입니다.
리피터(Repeater)는 신호를 수신하고 단순 증폭하여 전송하는 네트워크 중계 장비입니다. 확성기라고 할까요.
허브(Hub/더미 허브(Dummy Hub))는 근거리 장치들을 케이블로 연결하여 랜을 구성하는 장치입니다. 리피터와 마찬가지로 전기 신호를 복원하고 증폭하는 기능을 가지고 있어, 리피터만 쓰는 경우는 거의 없습니다. 포트를 여러 개 가지고 있어(멀티포트) 여러 컴퓨터와 통신이 가능합니다. 하지만 허브로 들어온 데이터를 네트워크에 연결된 모든 포트로 전송하므로, 연결된 컴퓨터가 많으면 많을수록, 데이터의 양이 많아질수록 데이터의 송수신 속도는 느려집니다.
물리계층의 프로토콜?
물리 계층의 프로토콜은 이름을 보시면 익숙한 이름들이 많을 겁니다. 유선과 무선으로 연결할 수 있는 프로토콜이죠. 유선으로는 RS-232, 랜선, USB 무선으로는 와이파이, 블루투스 등이 있습니다.