들어가기 앞서
해당 글은 널널한 개발자님의 인프런 강의 '외워서 끝내는 네트워크 핵심이론 - 기초'의 section 0과 section 1을 보고 공부한 내용을 정리한 글입니다.
컴퓨터 공학에서의 Layered 구조
컴퓨터 공학에서 Layered 구조는 근본적으로 종속 관계를 갖는다. 하위 계층은 상위 계층의 전제조건이 되며 상위 계층은 하위 계층이 성립된 상황 하에서만 존재 가능한 것. 현 세상에서는 어떤 계층 구조가, 하위 계층이 상위 계층의 존립을 좌우할 정도로 극단적으로 수직화된 경우는 많지 않으나 컴퓨터 공학에서는 일반적으로 Layered 구조로 칭해질 경우 이러한 성격을 띈다.
OSI 7 계층(Layer) 또한 그러한데, 최하위 계층인 L1 물리 계층이 존재하지 않으면 L2, L3는 존재할 수 없는 것을 확인할 수 있다. (NIC 같은 하드웨어가 없는데 어떻게 네트워킹이 가능할 수 있을까를 생각해본다면 쉽게 이해가 가능할 것 같다. 물고기가 살 수 있는 물이 없다면 물고기는 살 수 없는 것과 비슷한 이치이지 않을까?)
네트워크와 네트워킹이란?
네트워크는 '관계'라는 단어로 번역이 가능하고 네트워킹은 '상호작용'이라는 단어로 번역이 가능하다. 소셜 네트워크라는 단어를 위키백과에 검색을 해보면 '사용자 간의 자유로운 의사소통과 정보 공유, 그리고 인맥 확대 등을 통해 사회적 관계를 생성하고 강화해주는...' 이라는 용어로 해석이 가능한 것을 확인 할 수 있는데, 이를 통해 번역한 소셜 네트워크는 '사회적인 관계'라는 뜻으로 번역할 수 있을 것 같다. (요즘 다단계 판매에서 심심치 않게 들을 수 있는 네트워크 마케팅이라는 단어만 봐도 네트워크는 엄연히 (사람과 사람 사이의) '관계'를 지칭하는 표현임을 확인할 수 있다.)
OSI 7 계층은 '개념'이다
고대 그리스 아테네의 철학자 플라톤은 이데아라는 철학적인 개념을 창조해냈다. 이데아는 형이상학적인 개념으로 '우리가 살아가는 세상에 존재하는 모든 것의 원형'이라고 말할 수 있다. 이데아는 현실에 존재하는 무언가의 어떤 개념적인 원형을 의미하는데, 이를테면 인간이 생각할 수 있는 삼각형은 왜 '삼각형'이라는 단어로 지칭될 수 있는가를 생각하다보면 우리가 '삼각형'을 정의하는 어떤 개념적인 원형에 닿을 수 있을 것이다. 예를 들면 변이 세개이고, 내각의 합이 180도인 모든 것을 삼각형이라고 우리는 지칭할 수 있을 것이다.
지금 내가 위에서 설명한 내용이 명확히 이해되는가? 아마도 그렇지 않을 것이다. 이데아란 형이상학적인 개념이고, 철학적이고 추상적인 존재이기 때문에 그렇다. 무릇 사람이란 무엇인가, 정의란 무엇인가 등의 사조를 고민하는 철학이 모호하고 어려운 이유는 철학은 기본적으로 추상적이고 개념적인 요소를 다루기 때문이다.
이야기가 이상한 쪽으로 조금 샌 것 같지만, OSI 7 계층 또한 마찬가지다. OSI 7 계층은 어렵고 난해하다. 그건 바로 OSI 7 계층이 이데아와 마찬가지로 본질에 대한 개념적인 담론을 다루기 때문이다. OSI 7 계층은 네트워크가 무엇인가를 대답할 수 있는 정수를 우리에게 제공해주지만, OSI 7 계층을 먼저 배우는 것은 삼각형을 눈으로 보기 전에 삼각형은 무엇인가를 배우는 것과 마찬가지다. OSI 7 계층을 공부하기 전에, OSI 7 계층을 구성하는 HTTP, SSL, TCP, IP, Ethernet 등을 먼저 공부하자. (OSI 7 계층을 먼저 공부하면 십중팔구 네트워크 공부를 포기하게 된다고 널널한 개발자님은 말씀하셨다.)
OSI 7 계층
OSI 7 계층은 이름 그대로 7개의 계층으로 이루어지고 계층이 높아지는 순서로 점차 추상화된다. 가장 상위의 계층이 L7 계층이고 가장 하위의 계층은 L1 계층으로 L7 계층은 HTTP가 위치하는 응용 계층(Application Layer), L1 계층은 NIC(Network Interface Controller, LAN 카드와 같은 것)이 위치하는 물리 계층(Physical Layer)이다. 각각의 계층의 이름과 계층을 대표할 수 있는 구현 요소는 아래와 같다.
계층 | 이름 | 대표적인 구현 요소 | 컴퓨터에서의 관계 요소 |
L7 | Application Layer (응용 계층) | HTTP | 애플리케이션 (유저 모드) |
L6 | Presentation Layer (프레젠테이션 계층) | ||
L5 | Session Layer (세션 계층) | SSL (TLS) | |
L4 | Transport Layer (전송 계층) | TCP, UDP | 운영체제 (커널 모드) |
L3 | Network Layer (네트워크 계층) | Internet | |
L2 | Data Link Layer (데이터 연결 계층) | Ethernet | 하드웨어 |
L1 | Physical Layer (물리 계층) | 물리 장치 (NIC) |
네트워크에서의 식별자
우리가 주민등록번호, 이름 등을 기반으로 우리 자신을 정의하고 타인과 구별하는 것처럼 네트워크 세계에서도 네트워크 요소를 정의하고 구별할 수 있는 식별자가 존재한다. 포트(Port), IP 주소, MAC 주소 등이 그것인데, 이들은 각각 어떤 요소들을 식별하는 것인지 한번 알아보자.
MAC 주소
- MAC 주소는 LAN 카드를 식별한다. 만약 컴퓨터에 LAN 카드가 두개 존재한다면 해당 컴퓨터의 MAC 주소의 갯수는 총 2개이다.
- MAC 주소는 변경 가능하지 않은 것처럼 생각되는데 그렇지 않다. MAC 주소는 변경 가능하다고 한다.
- MAC 주소는 L2 계층을 식별하는 식별자라고 할 수 있다.
IP 주소
- IP 주소는 호스트(Host)를 식별한다. Host는 컴퓨터를 의미하는데, 네트워크에 연결된 컴퓨터를 특별히 Host라고 지칭한다.
- 즉, IP 주소는 컴퓨터를 식별하는 식별자이고, 콕 짚어서 '네트워크에 연결된 컴퓨터'를 식별하는 식별자라고 할 수 있다.
- Host에 대해서는 잠시 후 조금 더 자세하게 살펴볼 예정이다.
- IP 주소는 L3 계층을 식별하는 식별자다.
포트(Port)
- 포트는 조금 다양한 대답이 나올 수 있다. '포트는 어떤 것을 식별하는 식별자에요?'라고 물어본다면 대답을 하는 사람의 업무가 무엇이냐에 따라 대답이 다를 수 있다.
- 우선 유저 모드에서 활동하는 사람들 즉, 애플리케이션을 개발하는 웹개발자 같은 사람들은 포트는 프로세스를 식별하는 식별자에요, 라고 대답할 수 있다.
- 커널 모드에서 활동하는 사람들 즉, 네트워크를 관리하는 분들 같은 경우는 포트는 서비스를 식별하는 식별자에요, 라고 대답할 수 있다.
- 마지막으로 직접 하드웨어를 다루는 분들 같은 경우는 포트는 인터페이스를 식별하는 식별자에요, 라고 대답할 수 있다.
- 정리해보면, 포트는 프로세스, 서비스, 인터페이스를 식별하는 식별자라고 할 수 있다.
- 포트 번호는 L4 계층을 식별하는 식별자다.
호스트
호스트(Host)는 네트워크에 연결된 컴퓨터를 의미한다. '네트워크에 연결된 컴퓨터를' 컴퓨터라 칭하지 않고 '호스트'라는 이름을 만들어 사용하는 것은 이 호스트라는 개념이 네트워크에서 중요하게 사용되기 때문일 것이다.
호스트는 다시 단말(端末, 단말기 할때 그 단말 맞다)을 의미하는 End-Point와 스위치(Switch)로 이루어져 있으며 단말 즉, 엔드 포인트는 네트워크를 이용하는 주체로서의 호스트를, 스위치는 네트워크 자체를 이루는 호스트를 의미한다. 엔드 포인트는 클라이언트(Client), 서버(Server), 피어(Peer) 등으로 분류되며, 스위치는 라우터(Router), IPS(보안 스위치) 등으로 분류된다. 이해하기 쉽게 아래를 확인해보자.
- 호스트 네트워크에 연결된 컴퓨터
- 엔드 포인트 네트워크를 이용하는 주체 호스트
- 클라이언트
- 서버
- 피어
- 스위치 네트워크 자체를 이루는 호스트
- 라우터
- IPS
- ...
- 엔드 포인트 네트워크를 이용하는 주체 호스트
스위치가 하는 일과 비용
스위치를 이해하기 위해서는 인간 세계에서의 도로 시스템을 생각해보면 편하다. 자동차를 타고 출발지에서 목적지로 이동하기 위해서는 경로를 따라 움직여야 한다. 움직이는 동안 여러 갈림길(교차로)을 만날 것이고, 이정표 혹은 네비게이션을 통해 갈림길에서 새로운 방향을 잡아 움직일 것이다. 이 상황을 네트워크에 적용해 보면 아래와 같이 적용이 가능하다.
- 도로 : 네트워크
- 자동자 : 패킷 (네트워크를 돌아다니는 데이터의 단위?)
- 교차로 : 스위치
- 이정표/네비게이션 안내 : 스위치 테이블
- 목적지 선택 : IP 주소, MAC 주소, Port 번호, ...
네트워크 세계에서, 패킷이라는 데이터 단위가 출발지에서 목적지까지 도달하기 위해서는 중간에 다양한 스위치를 거쳐야만 한다. (아마 목적지는 엔드 포인트 즉, 서버/클라이언트/피어 등일 것이다.) 각각의 스위치에서는 패킷이 다음 경로로 어떤 경로를 선택할지 선택할 근거가 필요한데, 네트워크에서는 MAC 주소, IP 주소, Port 번호, HTTP 등을 근거로 경로를 선택할 수 있고 이를 스위칭이라고 한다. 스위치은 스위칭을 하는 근거가 되는 OSI 7 계층 요소에 따라 L2 스위치, L3 스위치, L4 스위치 등으로 분류될 수 있다.
라우터는 스위치의 대표주자로 IP 주소를 근거로 스위칭을 하는 L3 스위치이다. 이는 IP 주소가 L3를 식별하는 식별자이기 때문인데, 마찬가지로 특정 스위치가 MAC 주소를 근거로 스위칭을 한다면 L2 스위치, Port 번호로 스위칭을 한다면 L4 스위치, HTTP로 스위칭을 한다면 L7 스위치라고 할 수 있다.
스위칭은 L1 로 계층이 높아지면 높아질 수록 비용이 비싸진다. 하드웨어 단에서 NIC로 논리 연산만을 수행하며 스위칭을 하는 것보다 HTTP 메시지를 파싱하며 여러 로직이 장착되는 스위칭이 호스트의 자원 사용 측면에서 훨씬 값이 많이 나가는 것이다.
'네트워크' 카테고리의 다른 글
[외워서 끝내는 네트워크 핵심이론 - 기초] L3 수준에서 외울 것들 정리 (0) | 2023.03.23 |
---|---|
[외워서 끝내는 네트워크 핵심이론 - 기초] L2 수준에서 외울 것들 정리 (0) | 2023.03.20 |
HTTP 비연결성 (feat. 지속 연결) (0) | 2023.02.07 |
[네트워크] TCP/IP 통신의 흐름 (TCP/IP 4계층) (0) | 2023.02.04 |
인터넷 네트워크 | 인터넷 통신, IP, TCP & UDP, Port, DNS (0) | 2021.10.04 |