통신의 역할을 7개 계층으로 나눈다! 라는 말 자체는 많이들 들어보셨을 것 같습니다. 뭔 통신하나를 하는데 이렇게 많은 과정과 약속이 필요하다니...
대체 OSI계층이 뭐고 이게 왜 필요한걸까요?
뭔지 알아야 응용이 될 거 아닌가요.
Open Systems Interconnection
: 네트워크 통신 기능을 7개의 계층으로 나누는 개념적 프레임워크
다양한 하드웨어 및 소프트웨어 기술이 지리적, 정치적 경계를 넘어 일관되게 작동해야 하기 때문에 미리 정해놓은 약속입니다.
: 컴퓨터 내부에서, 또는 컴퓨터 사이에서 데이터의 교환 방식을 정의하는 규칙 체계
기기 간 통신은 아무 데이터를 멋대로 던지고 받을 수 있는 것이 아니라, 교환하고 싶은 데이터를 원하는 포장지(형식)로 잘 감싸서 서로간의 상호 합의를 통해 주고받을 수 있습니다.
이 때, 어떤 재질, 무늬 등의 포장지로 감쌀지 정의하는 규칙의 집합이 바로 프로토콜입니다.
익히 알다시피 OSI계층은 7개로 분류되고, 각 계층별로 데이터를 인식하기 위해선 별도의 포장지가 필요합니다.
그럼 각 계층별 포장지가 뭐고, 어떤 일을 하는 걸까요?
네트워크 통신이 대체 뭐길래 데이터라는 것을 옮길 수 있는 거냐 이 말입니다.
가장 기본이자 근본이 되는 계층으로, 전기적 신호나 광 신호를 통해 실제 데이터를 전송하는 가장 심플하면서도 뜯어보면 가장 복잡한 계층입니다. 네트워크를 구성한다는 것은 바로 이 물리적 계층이라는 토대위에 시스템을 건설하는 것 입니다.
1계층의 프로토콜은 USB, Ethernet, IEEE 802.11 (Wi-Fi) 등이 있습니다.
예를 들어, Wi-fi의 경우엔 전자기파를 통해서 통신하고, 특정 주파수 대역을 사용해야한다는 약속 등이 1계층의 프로토콜에 해당합니다.
한 가지 짚고 넘어가야 할 점은, 물리 계층에선 단순히 데이터를 주고받기만 한다는 점입니다. 건네주는 쪽에서도, 받는 쪽에서도 해당 데이터가 무엇이고 어떤 에러가 있는지 등은 관심이 없습니다. 그래서 주소값이 필요없습니다.
겉으로 보기에 대충 택배박스로 싸여 있는 것 같으면 걍 통과입니다.
물리 계층이 관심 없는 부분을 보조하고 뒷받침하는 계층이 바로 2계층, 데이터 링크 계층입니다. 물리 계층을 통해 송수신되는 정보의 오류와 흐름을 관리하여 안전한 정보의 전달을 수행할 수 있도록 도와주는 작업이 이곳에서 이뤄집니다.
해당 택배 박스의 규격은 맞는지, 송장은 제대로 붙어있고 해당 송장이 올바른 것인지 확인해야 합니다. 이상한 택배는 걸러야 하기 때문입니다.
이때, 각각의 규격에 적합한지 판단하기 위해 박스의 규격에 대한 데이터, 송장 여부에 대한 데이터, 송장의 규격에 대한 데이터 등으로 데이터를 조각내는 단위를 Frame(프레임)이라고 합니다.
2계층의 프로토콜은 Ethernet, PPP(Point-to-Point Protocol), MAC(Media Access Control) 주소 프로토콜 등이 있고, 대표적인 장비로는 브리지와 스위치가 있습니다.
데이터에 대한 검증이 이루어지기 시작하는 계층이기에 해당 데이터의 주소값이 필요해지는 시점입니다. 주소값은 물리적으로 할당받는데, LAN(Local Area Network) 카드가 만들어질 때부터 MAC 주소(MAC address)가 정해져 있다는 뜻으로, MAC 주소는 물리 주소라고도 불리는 전 세계에서 유일한 번호입니다.
MAC 주소는 로컬 네트워크에서 장치들을 식별하고 통신을 관리하는 데 사용됩니다. 동일한 로컬 네트워크에 속한 컴퓨터 A가 컴퓨터 B로 데이터를 전송하려고 할 때, 컴퓨터 A는 컴퓨터 B의 MAC 주소를 알아야 합니다.
컴퓨터를 직접 연결하는 방식에서 하나의 허브가 여러 대의 컴퓨터를 관리하게 되는 방식으로 발전해오면서, 여러 대가 동시에 데이터를 보내면 데이터들이 서로 충돌(collision)하게 되었습니다. 이 때, 데이터를 필요한 컴퓨터에만 전송하기위해서 바로 스위치가 등장하게 됩니다.
스위치의 내부에 존재하는 각 컴퓨터의 고유한 MAC 주소를 기억하는 MAC 주소 테이블을 통해, MAC주소를 기준으로 원하는 컴퓨터로만 데이터를 전송할 수 있게 되었습니다.
이더넷에서는 단순히 오류를 검출할 뿐 오류 수정은 더 상위 계층에서 처리됩니다.
송장이 틀렸다고 해서 어떤 조치를 하는 것이 아니라, 단순히 오류 여부만을 확인한 후 규격에 맞지 않는 택배는 폐기하는 과정입니다.
2계층까지의 통신은 컴퓨터에서 컴퓨터로 직접 선을 연결한 후, 해당 선을 통해 택배를 전달했습니다(Local Area Network). 그런데 선을 연결할 수 없을 만큼 더 먼 거리의 통신은 어떻게 해야 할까요?
보다 먼 거리의 통신을 위해 드디어 3계층의 대표 프로토콜, '인터넷'이라는 개념이 등장합니다.
인터(Inter)+네트워크(net) : 네트워크 간의 네트워크
Inter- : 몇몇 낱말의 앞에서 붙여서 그 '사이'라는 뜻을 더해 주는 접두사
복수의 네트워크를 연결한 광역 네트워크라는 의미로, 전 세계의 컴퓨터를 연결한 거대 통신망 집합체를 뜻합니다.
LAN에서는 스위치를 이용해 MAC주소로 직접 통신을 했다면,
서로 다른 네트워크 간 통신(인터넷)을 위해선 라우터(공유기)라는 네트워크 장비가 필요합니다.
이 라우터를 통해 먼 거리의 해외로도 데이터를 보낼 수 있게 됩니다.
이 때, 네트워크간 통신을 위해 필요한 네트워크를 식별할 주소가 바로 그 유명한 IP(Internet Protocol)주소입니다.
라우터는 IP주소를 통해 데이터의 목적지 주소를 식별하는데, 그렇기에 IP주소는 어떤 네트워크의 어떤 컴퓨터인지 구분할 수 있게 하는 정보로 구성됩니다.
IP주소는 인터넷 서비스 공급자(ISP)에게 받을 수 있으며, IP주소에는 공인 IP주소와 사설 IP주소가 있습니다. 공인 IP는 중복될 수 없고, 사설 IP는 중복될 수 있기에 별도의 값의 범위로 구별되어있습니다.
도서관의 공공 네트워크 IP는 다음과 같이 공인 IP의 범위에 속해있습니다.
반면 공공 네트워크에 속한 로컬IP의 주소는 사설 IP의 범위에 속해있는 것을 알 수 있습니다.
공인 IP주소는 인터넷 케이블에 직접 연결된 라우터(공유기)에만 할당하고 회사나 가정의 LAN(같은 네트워크)에 있는 기기들은 사설 IP주소를 할당받게 되어 있습니다.
3계층의 프로토콜은 IP (Internet Protocol), ICMP (Internet Control Message Protocol), ARP (Address Resolution Protocol) 등이 있습니다.
3계층은 데이터 패킷을 목적지까지 최적 경로로 전송, 라우팅하는 의무를 가집니다. 이 때 패킷이 되는 전송단위를 데이터그램이라고 칭합니다.
앞서 2계층에서, 데이터의 오류를 검출할 뿐 해당 오류의 수정은 좀 더 상위계층에서 이뤄진다고 했던 것, 기억하시나요?
바로 오류를 검출하고 수정하는 계층인 4계층, 전송계층의 등장입니다. TCP/IP라는 통신규칙으로 많이 접해본 바로 그 TCP가 속해있는 계층입니다.
큰 데이터를 작은 단위(세그먼트)로 분할하여 전송하고, 받는 쪽에서 원래의 데이터로 재조립하는 과정을 통해 네트워크 계층이 데이터를 처리하기 쉽도록 돕습니다.
이 과정에서 오류를 검출하고 수정하고, 손실된 패킷은 재전송하는 등의 작업을 통해 데이터의 신뢰성과 완전성을 보장합니다.
또한 보내는 쪽이 받는 쪽의 처리 능력을 고려하여 데이터를 조절하여 전송하는 흐름 제어, 네트워크 혼잡을 감지하여 전송 속도를 조절하는 혼잡 제어를 통해 네트워크의 과부하을 방지하고 효율적으로 데이터를 전송합니다.
4계층의 프로토콜은 TCP (Transmission Control Protocol), UDP (User Datagram Protocol) 등이 있습니다.
신뢰성↑ 속도↓
서버와 클라이언트 간 데이터를 전송하기 전에, 전송을 위한 연결을 수립하는 연결지향 프로토콜입니다.
시간이 걸리건 말건, 데이터 전송 시 상대방이 데이터를 받을 준비가 되었는지 꼭 확인하고, 손실되거나 순서가 바뀌는 것을 확인해야 합니다. 탐지 후 재전송을 요청하거나 순서를 재조립하는 등의 작업을 통해 보다 정확하게 데이터를 전송합니다. 따라서 TCP는 속도보다는 신뢰성이 중요한 통신(E-mail, 웹브라우저 등)에서 사용됩니다.
신뢰성↓ 속도↑
연결을 수립하지 않고 일단 데이터를 전송하는 비연결형 전송방식을 채택합니다.
데이터가 손실되건 말건 순서가 바뀌건 말건 알 바인가요? 받는 쪽이 준비되지 않아도 무조건 넘겨주기만 해도 UDP의 역할은 끝입니다. 따라서 UDP는 신뢰성보다는 속도와 연속성이 더 중요한 통신(스트리밍, 온라인 게임, VoIP(Voice over IP) 등)에서 사용됩니다. 받지 못한다 한들 상관없이, 짧은 텀으로 다시 던지면 그만이기 때문입니다. UDP의 헤더는 TCP에 비해 단순하기 때문에 오버헤드가 적고, 전송 속도가 빠릅니다.
세션의 사전적 의미는 특정한 활동을 위한 시간 또는 기간입니다. 일반적으로 시간에 대한 의미가 강한 단어입니다.
위키백과에서는 컴퓨터 과학에서의 세션에 대한 의미를 다음과 같이 정의하고 있습니다.
"컴퓨터 과학에서, 특히 네트워크 분야에서 반영구적이고 상호작용적인 정보 교환을 전제하는 둘 이상의 통신 장치나 컴퓨터와 사용자 간의 대화나 송수신 연결상태를 의미하는 보안적인 다이얼로그(dialogue) 및 시간대를 가리킨다. 따라서 세션은 연결상태를 유지하는 것보다 연결상태의 안정성을 더 중요시 하게 된다."
너무 길고 어렵습니다... 연결상태를 유지하는 것 보다 안정성을 더 중요시한다! 일단 여기에 초점을 맞춰봅시다.
굳이 다른 단어를 두고 session이라는 단어를 선택했다는 건, 행위가 지속되는 시간에 대한 의미가 중요하다는 뜻입니다. 특정 시간동안 통신이 유지된다는 건 어떤 의미일까요? 예를 들어, 화상 통화에서는 사용자 입장에서 영상을 끊김없이 주고받을 수 있다는 것을 의미합니다.
중요한 것은 사용자 입장에서입니다. 뒤에서 연결이 끊기거나 데이터가 유실되더라도 사용자에게 보이는 화면만큼은 멀쩡한 척을 해야 한다는 것입니다.
따라서 세션 계층에서 무엇보다 지키고 싶은 것은 시간적 범위와 논리적 공간입니다. 통신 중간에 물리적 연결이 끊어지더라도, 해당 연결을 통해 이루어지는 상호작용이 일관되고 지속되며 오류가 발생해도 복구할 수 있다면 논리적으로는 끊어진 것이 아닙니다.
세션 계층에서는 응용 프로그램 간의 대화를 유지하기 위한 구조를 제공하고, 이를 처리하기 위해 프로세스들의 논리적 연결을 담당합니다. 통신 중 연결이 끊어지지 않도록 유지하며 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공합니다.
통신 양단끼리 서로 동의하는 논리적인 공통 시점(동기점)을 지정하고, 전송 오류가 발생한다면 동기점을 이용해 해당 시점으로 복구를 진행합니다.
4계층 전송 계층은 데이터의 신뢰성 있는 전달과 오류 검출 및 수정에 초점을 맞춘다면, 5계층 세션 계층은 통신 중에 이상이 생겼을 때 어느 지점에서 복구할 것인지에 초점을 맞춥니다.
종합하자면 세션계층은 세션의 설정, 유지, 종료 및 세션 메시지 전송 등의 기능을 하고, 특히 동기화의 관리를 통해 통신 중간에 발생하는 오류를 최소한의 리소스로 최대한 효율적으로 복구합니다.
단, TCP/IP 모델에선 전송 계층이 일부 세션 관리기능까지 담당하므로 유의해야합니다.
5계층의 프로토콜은 NetBIOS, PPTP (Point-to-Point Tunneling Protocol) 등이 있습니다.
표현 계층은 이름 그대로 데이터를 표현(Presentation)하는 역할을 합니다. 글자 그대로 표현하기 위한 작업들을 수행하는데, 예를 들면 데이터가 텍스트인지 이미지 파일인지, 또 이미지 파일이라면 어떤 형식의 이미지인지 분석하고 확장자를 정의합니다. 또한 유니코드(UTF-8)로 인코딩된 문서를 ASCII로 인코딩된 문서로 변환하려고 할 때도 표현 계층이 이 작업을 수행합니다.
응용 계층과 세션 계층 사이에서 데이터를 사람이 이해할 수 있는 형태로 변환하여 응용 프로그램이 이를 올바르게 처리할 수 있도록 돕는 것이 표현계층의 핵심 역할입니다. 이 작업을 통해 하드웨어나 운영체제에 관계없이 동일한 데이터 교환이 가능해집니다.
데이터를 인코딩하고 디코딩하고, 포맷을 결정하고, 암호화하고 복호화하고, 압축하고 해제하고, 확장자를 부여하며 다양하게 데이터를 응용 프로그램이 소화시킬 수 있게 요리합니다.
6계층의 프로토콜은 SSL/TLS(암호화/복호화를 통한 보안), ASCII, JPEG, MPEG 등이 있습니다. 이 계층의 주요 기능은 데이터의 인코딩/디코딩, 암호화/복호화, 데이터 포맷 변환입니다.
드디어 마지막, 7계층입니다.
네트워크 모델의 최상위 계층으로, 네트워크를 통해 사용자와 직접 상호작용하는 기능을 제공합니다. 주로 사용자와 애플리케이션 간의 상호작용을 관리하고, 데이터를 적절한 프로토콜을 사용하여 전달하는 역할을 담당합니다.
응용 계층은 사용되는 프로토콜을 먼저 짚고 넘어가는 것이 이해가 빠를 것 같습니다.
7계층의 프로토콜은 HTTP, DNS, FTP, SMTP, POP3 등이 있습니다.
클라이언트 측 어플리케이션(e.g.웹 브라우저, 메일 프로그램)이 서버 측 어플리케이션(e.g.서버)과 통신하려면 응용 계층의 프로토콜을 사용해야 합니다.
웹 사이트를 볼 때는 HTTP , 파일을 전송할 때는 FTP(File Transfer Protocol), 메일을 보낼 때는 SMTP(Simple Mail Transfer Protocol), 메일을 받을 때는 POP3(Post Office Protocol version 3)라는 프로토콜을 사용합니다.
DNS(Domain Name System)라는 프로토콜은 간단하게 말하면 주소록입니다. 네트워크에서 컴퓨터나 네트워크 장비에 붙여진 이름을 기반으로 IP 주소를 알아내는 것을 이름 해석(name resolution)이라고 하는데, 이를 위해 DNS를 사용합니다. 사용자가 숫자로만 이뤄진 IP를 외우기가 어렵기 때문에 도메인(https://velog.io/@myo_nee/posts)을 입력하면 IP를 찾아 연결해주는 방식입니다.
도메인에서 사용되는 https가 해당 통신은 HTTP프로토콜을 기반으로 하고 있다는 표시입니다. https는 http의 보안 버전으로, 데이터를 암호화하여 전송함으로써 데이터의 기밀성과 무결성을 보호합니다.
<참고자료>
🌊https://aws.amazon.com/ko/what-is/osi-model/
🌊https://developer.mozilla.org/ko/docs/Glossary/Protocol
🌊https://ttodangblog.co.kr/osi-osi-7계층-정리
🌊https://ko.wikipedia.org/wiki/분류:물리_계층_프로토콜
🌊https://ko.wikipedia.org/wiki/이더넷_물리_계층
🌊https://net-gate.tistory.com/7
🌊https://bentist.tistory.com/33
🌊https://ko.wiktionary.org/wiki/inter-
🌊https://velog.io/@jeongbeom4693/Transport-layer전송-계층
🌊https://ko.wikipedia.org/wiki/세션_(컴퓨터_과학)
🌊https://cs-ssupport.tistory.com/326
🌊https://jjung0326.tistory.com/51
🌊https://velog.io/@gndan4/네트워크-응용-계층
🌊https://chatgpt.com/gpts