OSI 7 Layer | TCP/IP Updated Layer
Background
시험을 위해, 면접을 위해 달달 외우는 OSI 7 계층.
이번에도 다시 달달 머릿속에 넣다가, 몇년째 이 개념을 이렇게 요약적이고 추상적인 의미로만 받아들이는게 아쉬워서 조금은 가벼운 마음으로 추가적인 정리를 해보기로 했다.
포스팅의 일부는 우아한Tech 채널의 아래 영상을 참고했다. 명강의,,
Physical Layer (PHY, L1)
모든 파일과 프로그램은 0과 1의 나열이다. 다시 말해, 0과 1만 주고받을 수 있다면 통신이 가능해진다.
이렇게 0과 1이 나열된 bit 정보를 주고받기 위해서는 source에서는 아날로그의 전기적 신호로 바꾸고(encoding), target에서는 아날로그 신호를 해석(decoding)하는 절차가 필요하다.
다시말해 PHY는 물리적으로 연결된 두 대의 컴퓨터가 0과 1의 나열을 주고받을 수 있게 해주는 모듈이고, PHY칩 등에 하드웨어적으로 구현되어있다.
아래와같은 매체를 통해 아날로그 신호가 전달된다.
데이터링크로 넘어가기 전에 스위치, 라우터, 공유기, 인터넷 등에 대한 개념을 정리하고 넘어가자.
단순히 1:1 통신이라면 두개의 장비가 전선으로 연결되어있기만 하면 되겠지만, N개의 장비가 있다면 이들을 서로서로 연결하기 위해서는 (N-1)!개의 전선이 필요하다. 이를 줄여 효율적으로 네트워크를 구성하고, source가 target을 설정해서 해당 목적지에만 메세지를 전달하는 것을 가능하게 해주는 것이 바로 스위치이다.
하나의 스위치 내에서 통신이 가능한 인트라넷을 벗어나, 다른 네트워크에 있는 target으로도 메세지를 전달하고 싶다면 어떻게 될까?
source가 속한 스위치와 target이 속한 스위치를 연결해서, 서로 다른 네트워크에 속한 컴퓨터끼리도 통신이 가능하게 해주는 장비가 바로 L3스위치(스위치 + 라우터)이다. 공유기를 떠올리면 쉽다.
좀더 쉽게 이해하기 위해.. 내가 지금 쓰고있는 노트북은 공유기의 와이파이 무선 신호를 받고 있고
공유기는 랜선을 통해 우리 빌라 어딘가에 설치되어있는 모뎀과 연결되어 있고
모뎀은 빠른 속도를 위해 전기 신호를 광신호로 바꾸어, 광케이블이 연결된 전봇대 혹은 지중선으로 전달한다. (도시 미관과 안전, 외부 요인에 의한 단전 등을 막기 위해 전선을 땅에 묻는 것을 '지중화'라고 한다)
이런식으로 전세계의 네트워크가 연결되어 있는 것이 바로 인터넷이다.
일본과 한국처럼 중간에 바다가 있는 경우에는 해저케이블이 통신을 가능하게 해준다.
신기한 해저케이블 맵. 아래 링크에서 볼 수 있다.
https://www.infrapedia.com/app
Data Link Layer (L2)
같은 네트워크에 있는 여러 대의 컴퓨터들이 데이터를 주고받기 위해서 필요한 모듈이다.
중요한 점은, '같은 네트워크' 즉 '직접 연결된' 장치들간의 통신이라는 것이다. (LAN : Local Area Network)
이를 넘어선 통신은 네트워크 계층에서 확인해보자.
위에서 스위치에 대해 언급했는데, 스위치는 자신과 연결된 장치들의 MAC주소, 그리고 포트가 기록된 MAC주소 테이블을 알고 있다.
우리는 흔히 IP주소에 대해 알고있는데, 실제로는 IP 통신 내부에 MAC주소 통신이 포함되어 있고, IP-to-IP 통신이 결국은 연속적인 MAC-to-MAC 통신으로 이루어져있다고 생각하면 된다. 중간 중간 거쳐가는 거점 느낌..!
ㅡ MAC주소에 대해 조금 더 자세히 ㅡ
랜카드에는 ROM이 있어서 아주 기본적인 OS 및 MAC주소가 들어가있다. ROM이 뭐다..? 바로 Read Only Memory, 즉 한번 기록된 후에는 수정할 수 없는 메모리이기 때문에, MAC주소는 절대로 바뀔 수 없다. 그래서 MAC주소를 하드웨어 주소, 물리적 주소, 이더넷 주소, BIA(Burned-In MAC Address) 등으로 부르기도 한다.
사람에게 비유하자면 주민등록번호이고, 컴퓨터뿐만 아니라 라우터, 스위치 등 모든 통신 장비에 고유한 값이 부여되어있다.
MAC주소 덕분에 스위치는 frame이 자신에게 오면 그 목적지를 파악해서 적합한 target에게 전송해줄 수 있다.
여기서 말하는 frame은 편지봉투에 비유할 수 있다. 편지 : 보내고자 하는 데이터(payload) + 봉투 : 수신자와 송신자 정보(header)
그 외에도 해당 레이어에서는 오류 없는 통신을 위해 흐름 제어, 오류 제어, 접근 제어, 동기화 등의 역할을 수행한다.
Network Layer (L3) ㅡ 목적지까지의 루트를 찾자
요약 ) 수많은 네트워크들의 연결로 이루어진 inter-network 속에서
어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해
IP주소를 이용해서 길을 찾고 (routing : 알고리즘을 통해 최적의 경로를 설정한다)
자신 다음의 라우터에게 패킷을 넘겨주는 것 (forwarding).
여기서 라우터(Router)란, 다른 네트워크까지의 최단 거리를 계산해서 목적지 네트워크까지의 최단 길(Route, 루트)을 알려주는 놈(er)으로, 네트워크와 네트워크 사이에 존재한다.
Network Layer에서 네트워크들을 구분하고 데이터를 '패킷'으로 나눠주는 기술을 IP(Internet Protocol)이라 하고,
IP에서 사용되는 주소를 IP주소라고 한다.
ㅡ IP주소에 대해 조금 더 자세히 ㅡ
IPv4는 32bit의 이진수로 이루어져있기 때문에 2^32 즉, 약 43억개의 주소를 표현할 수 있다. ex. 172.16.254.1
하지만 시간이 흐르면서 IPv4가 모자라져서 더 많은 주소를 수용할 수 있는 IPv6가 등장하게 된다. ex) 21DA:D3:0:2F3B:2AA:FF:FE28:9C5A
128bit로 이루어진 IPv6이 표현할 수 있는 주소는.. 340간 2823구 6692양 938자 4643해 6337경 4607조 4317억 6821만 1456갴ㅋㅋㅋㅋㅋㅋㅋㅋ 처음 보는 단위들..
Network Layer에서는 봉투(header)에 목적지의 IP주소를 적어준다.
이러한 Network Layer의 기술은 운영체제의 커널에 소프트웨어적으로 구현되어 있다.
Transport Layer (L4) ㅡ 목적지까지 안전하게 전송하자
컴퓨터에 여러 개의 프로그램들이 실행되고 있고(프로세스), 수신한 데이터를 프로세스들에게 나누어주어야 한다.
어떤 데이터를 어떤 프로세스에게 줘야할지는 '포트 번호'로 결정된다.
포트 번호는 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야하는 정수값이다.
송신자는 데이터를 보낼때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보낸다.
(www.naver.com을 입력하는 것은 사실 www.naver.com:80이 생략된 것)
결국 Transport Layer란,
Port 번호를 사용하여 도착지 컴퓨터의 최종 도착지인 프로세스까지 데이터가 도달하게 하는 모듈이다.
운영체제의 커널에 소프트웨어적으로 구현되어 있다.
거대한 인터넷에서, source에서 target까지 데이터를 전송하는 중 패킷이 소실될 수 있기에 데이터를 안전하게 전송할 수 있는 기술이 개발됐으니, 그것이 바로 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)이다.
* Network Layer의 IP와 Transport Layer의 TCP는 인터넷에서 필수불가결한 중요한 기술이기에 TCP/IP로 묶어서 부른다 *
Session Layer
Presentation Layer
사실 현대의 인터넷은 OSI 모델이 아니라 TCP/IP 모델을 따르고 있다.
TCP/IP 모델도 OSI 모델과 마찬가지로 네트워크 시스템에 대한 모델인데, 간단히 말해 OSI 모델이 시장 점유 싸움에서 졌다.
Application Layer
/* TCP/IP 소켓 프로그래밍
운영체제의 Transport Layer에서 제공하는 API를 활용해서
통신 가능한 프로그램을 만드는 것
소켓 프로그래밍 만으로도 클라이언트, 서버 프로그램을 따로따로 만들어서 동작시킬 수 있다.
뿐만 아니라, TCP/IP 소켓 프로그래밍을 통해 누구나 자신만의 Application Layer 인코더와 디코더, 즉 Application Layer 프로토콜을 만들어서 사용할 수 있다. */
대표적인 Application Layer 프로토콜로는 HTTP, FTP, SMTP 등이 있다.
참고로 HTTP에 HTTPS 연결에서, 브라우저와 웹 서버는 서로 암호화 통신을 시작할 수 있도록 서로의 인증서와 신분을 확인하고 어떤 암호화 방식을 사용할지 결정한다.