네트워크의 계층에는 개념적으로 나눈 OSI 7 계층과 실제 인터넷 통신에 사용되는 TCP/IP 4계층이 있습니다. 데이터를 송수신하는 과정을 이해하기 위해서는 네트워크 계층에 대한 이해가 필요합니다. 학부 네트워크 시간에 정말 어려워했던 부분이고 잘 이해하지 못했던 부분이라 다시금 흐름을 이해하기 위해 정리해보았습니다.
OSI 7 계층
OSI 7 계층은 Open Systems Interconnection Reference Model 7 Layers 으로 네트워크 통신이 이루어지는 과정을 7단계로 나눈 네트워크 표준 모델입니다. 초기 여러 정보 통신 업체 장비들이 자신의 업체 장비들끼리만 연결이 되어 있어 호환성이 없었습니다. 다른 업체의 장비와도 상호 연결이 문제 없도록 하기위해 국제 표준화 기구에서 표준을 정한 것 입니다.

OSI 계층 모델의 데이터 송수신 흐름
데이터 송수신의 경우 송신할 때는 높은 계층에서 낮은 계층으로, 수신할 때는 낮은 계층에서 높은 계층으로 데이터가 전달되게 됩니다.

이렇게 데이터를 송수신하면서 각 계층에서 필요한 정보를 추가해 데이터를 가공하게 됩니다. 아래의 그림처럼 데이터를 가공할때 제어정보를 담은 헤더나 트레일러가 붙게되는데 이를 캡슐화라고 합니다. 캡슐화는 수신부의 같은 계층에서 데이터 호환성을 높이고 오류의 영향을 최소화할 수 있습니다.

이렇게 캡슐화한 결과물을 수신부로 보내게되고 수신부에서는 이를 헤더와 트레일러를 분석하여 제거하는 역캡슐화를 진행하여 데이터를 추출합니다.
TCP/IP 4계층
TCP/IP 4계층은 인터넷에서 데이터를 주고받기 위한 네트워크 프로토콜을 의미합니다. 대표 TCP/IP 기반 프로토콜로 HTTP가 있습니다.
TCP ( Transmission Control Protocol, 전송 제어 프로토콜)
: 데이터를 나눈 단위인 패킷의 전달 여부와 전송 순서를 보장하는 통신 방식
IP ( Internet Protocol, 인터넷 프로토콜)
: 패킷을 빠르게 보내기 위한 통신 방식
이런 TCP/IP에 맞춰 네트워크 통신 표준인 OSI 7계층을 단순화한 것이 TCP/IP 4계층입니다.

- 응용 계층 : 사용자와 소프트웨어를 연결해주는 계층입니다.
- 전송 계층 : 데이터의 신뢰성을 보장하며 포트번호로 데이터를 적절한 응용 프로그램에 전달하는 역할을 합니다.
- 인터넷 계층 : 데이터를 최종 목적지까지 도달할 수 있게 하는 계층입니다. 전송 계층으로부터 받은 데이터에 헤더를 붙여 캡슐화하게 되는데 이를 패킷/데이터그램이라고 합니다.
- 네트워크 인터페이스 계층 : 네터워크 접근 계층이라고도 불리며, 데이터를 전기 신호로 변환하고 MAC 주소를 사용해 기기에 데이터를 전달합니다.
그럼 세부적인 계층들을 자세히 공부해보겠습니다!
물리계층
컴퓨터 간에 물리적인(전기) 연결을 해주자!
물리게층은 송신 컴퓨터가 보낸 데이터를 전기신호로 변환하여 수신 컴퓨터로 보내는 역할을 수행합니다. 컴퓨터는 2진수 형태 비트열 데이터로 데이터를 이해하기 때문에 우리가 보낼 데이터를 이러한 2진수 형태의 전기신호로 변환해주는 것입니다. 이러한 물리계층에는 RAN, Repeater, Hub등의 장치가 있습니다.
- RAN
- 비트열의 데이터를 전기신호로 변환해주는 장치입니다.
- RAN의 경우 그저 변환만 해주기 때문에 다른 곳으로 전송해주는 장치가 필요합니다.
- Repeater
- 신호를 멀리 보내기 위한 증폭 장치입니다.
- 리피터의 경우 1 : 1 통신만 가능하다는 단점이 있습니다.
- Hub
- Repeater와 멀티포트의 역할을 제공합니다.
- 중심축에 놓여 여러개의 포트를 이용하여 연결된 여러대의 컴퓨터들과 통신하며 연결하여 네트워크를 만들어주게 됩니다.
- 허브를 중심으로 여러 포트 모두에게 데이터를 전송하여 과도한 트래픽과 충돌이 발생할 수 있고 특정 네트워크에게만 전송하고 싶은 경우를 고려하지 못한다는 단점이 있습니다.
데이터링크 계층
신호를 주고받는 규칙을 정해주자!
데이터링크 계층은 물리계층에서 전송된 데이터에게 일종의 규칙을 지정해주는 것이다. 아래의 그림처럼 Hub의 경우 컴퓨터 A와 B가 동시에 데이터를 전송하고자하니 충돌이 발생하였습니다. 이러한 충돌을 방지하기위에 데이터 송수신에 있어 규칙을 정해주어야 합니다.

랜에서는 이때 Ethernet을 사용합니다.
Ethrenet 이더넷
이더넷이란 랜에서 데이터를 주고 받을 때 위와 같은 충돌을 방지하기 위해 사용되는 규칙입니다.
Ethernet을 통해 데이터가 동시에 케이블을 지나갈 때 어느 한쪽 데이터를 보내는 시점을 늦추게 되는데 이 늦추는 방식을 CSMA/CD라고 합니다.
CSMA/CD 반송파 감지 다중 접속 및 충돌 탐지
CS : 데이터를 보내려고 하는 컴퓨터가 케이블에 신호가 흐로고 있는지 아닌지 확인한다.
MA : 케이블에 데이터가 흐르고 있지 않다면 데이터를 보내도 좋다.
CD : 충돌이 발생하고 있는지 확인한다.
라는 뜻으로 컴퓨터 A가 송신을 할때 B는 케이블이 사용되고 있음을 감지하고 대기하였다가 A의 송신이 끝난 후 송신하여 충돌을 방지합니다.
하지만 이러한 Ethernet은 효율이 좋지않아 현재는 Switch라는 네트워크 장비를 통하여 충돌을 방지합니다.
Switch의 동작방식을 보기 전 데이터링크 계층의 구성을 간단히 알고 넘어가야합니다.

- 유형은 인터넷 프로토콜(IP)의 버전을 의미하고 IPv4와 IPv6이 있습니다.
- FCS는 트레일러로 데이터 전송 중 오류발생의 여부를 체크하는 역할을 합니다.
Switch의 동작방식

A 컴퓨터가 데이터를 송신하고자 한다고 해봅시다. 우선 스위치로 전송이 되면 스위치 내부의 MAC 주소 테이블에는 A 컴퓨터의 MAC주소와 포트 정보가 등록됩니다. 이후 데이터가 전송되는 방식은 두가지입니다.
- 목적지 MAC주소를 아는 경우 : 원하는 컴퓨터에게만 송신이 가능하고 이는 Hub의 단점을 극복한 경우라고 볼 수 있습니다. 특정 컴퓨터에게만 보내야할 데이터를 다른 컴퓨터에게 노출시킬 필요가 없게 됩니다.
- 목적지 MAC주소를 모르는 경우 : 모든 컴퓨터에게 데이터가 전송되게 되고 이를 Flooding 이라고 합니다.
그럼 이 때 목적지 MAC주소를 알아내는 방법은 없을까요?
→ 목적지 컴퓨터의 IP 주소를 안다면 목적지 MAC주소를 알아낼 수 있습니다. 이를 ARP(Address Resolution Protocal)라고 하고 네트워크 계층에서 이루어지게 됩니다.

IP 주소와 MAC주소는 왜 나눠져 있는걸까?
아니 그냥 IP주소만 쓰던지 MAC주소만 쓰면 안되나...? 라고 생각할 수 있습니다.(제가 그랬어요..) 이 둘의 차이를 보겠습니다. 우선 IP 주소는 논리적 주소, MAC 주소는 물리적 주소이고 IP주소는 Network layer에서, MAC주소는 Data LInk 계층에서 사용된다는 차이가 있습니다.
여러 자료를 찾아봤지만 이 예시가 가장 이해가 쉬웠습니다.
택배회사에서가 여러개의 택배를 전송해야합니다.MAC주소는 그 장소의 이름이고 IP주소는 장소의 주소라고 생각해보겠습니다.
빛나 아파트 : 대구 달서구 본리동 433-4
한솔 아파트 : 서울 송파구 신천동 7-30
파랑새 아파트 : 대구 수성구 범어동 427-3
한빛 아파트 : 서울 송파구 법정동 123-3
...
이밖의 아주 많은 택배를 보내야하는 경우를 생각해 보겠습니다. MAC주소로 빛나 아파트, 한솔 아파트, 파랑새 아파트 ... 이렇게 개별로 배달을 하게 되면 어떻게 될까요? 많은 시간이 걸리며 과부하가 생기게 될것입니다. 우리는 택배를 받을 때 곧장 집으로 오는 것이 아니라 지역별 터미널을 거쳐 동네 집화점에 온 후 집으로 배달이 됩니다.
데이터또한 마찬가지입니다. 여러 라우터와 스위치를 거쳐 도달하게 되죠. 경로를 알아내기 위해서는 아파트의 이름이 아닌 지번주소와 같은 경로를 잘 알 수 있는 정보가 필요합니다. 그것이 바로 IP주소입니다. 네트워크 계층에서 라우터는 IP주소를 통해 최적의 경로를 알아냅니다. 택배를 지번주소를 통해 어느 터미널을 거쳐 어느 집화점으로 가야하는지 알아내는지 말입니다. 집화점까지 갔다면 진짜 아파트의 이름을 통해 배달을 해야겠죠. 이 경로의 정보를 담아 데이터 링크 계층으로 보내게 되면 데이터 링크계층에서는 네트워크 계층에서 ARP를 통해 알아낸 MAC주소로 데이터를 전송할 수 있게 되는 것입니다.
네트워크 계층
다른 네트워크에 있는 컴퓨터랑도 통신하고 싶어!
데이터링크 계층까지는 같은 스위치 즉, 같은 네트워크에 연결되어 있는 컴퓨터들 간에 통신을 가능하게 하며 특정 컴퓨터에게만 데이터를 전송할 수 있게 되었습니다. 그럼 다른 네트워크에 있는 컴퓨터와 통신이 가능한 계층인 네트워크 계층을 살펴보겠습니다.
이러한 역할을 가능하게 하는 장치가 바로 Router입니다. 네트워크 계층에서는 IP라는 것을 통신 프로토콜로 사용합니다. 데이터링크에서는 이더넷이었죠. 네트워크 계층의 IP 패킷을 살펴보겠습니다.

IP Internet Protocol
IP 주소는 ISP ( Internet Service Provider, 인터넷 서비스 제공자) 로부터 부여받게 됩니다. IP의 버전에는 IPv4(32비트)와 IPv6(128비트)이 있습니다. IPv4가 먼저 사용되었는데 인터넷 사용자가 늘어남에 따라 부여할 수 있는 IP주소의 갯수가 부족하여 비트수를 늘리며 IPv6이 등장하였습니다. 하지만 기존의 IPv4를 사용하던 주소를 IPv6으로 바꾸는 것이 사실상 불가능 하기에 공인 IP주소와 사설 IP주소를 나누어 사용하게 되었습니다.
공인 IP주소는 외부에 공개되어있는 IP주소로 ISP로부터 부여되게 됩니다. 이는 인터넷에 연결된 다른 PC로 부터 접근이 가능하다는 이야기입니다.
사설 IP주소는 제한적인 공인 IP에 사설망을 구성해 각기 다른 주소로 할당할 수 있도록 만들이진 IP주소입니다. 로컬 IP라고도 불리며 외부에서 직접 접근할 수 없어 보안이 용이합니다. 쉬운 예시를 들자면 공유기를 사용한 이터넷 접속 환경의 경우 공유기는 공인 IP이고 공유기에 연결되어 있는 네트워크 기기들은 사설 IP가 되는 것입니다.

이렇게 공인 IP마다 사설 IP를 부여하게 되면 공인 IP 네터워크망마다 사설 IP 주소를 재사용할 수 있어 IP주소를 절약할 수 있습니다.
이러한 IP주소는 네트워크 ID, 호스트 ID로 구성되어 있습니다. 네트워크 ID는 IP주소가 어느 네트워크에 속해있는지 알 수 있는 주소이고 호스트 ID는 네트워크 안에 속해 있는 기기가 할당받는 주소입니다. 라우터는 이러한 IP주소를 서브넷을 통해 해당 주소가 어느 네트워크에 속해있는지 찾아 최적의 경로를 찾아주는 것입니다.
그럼 IP주소에서 네트워크 ID와 호스트 ID를 어떻게 구분할 수 있을까요? 이떄 서브넷 마스크를 사용합니다. 어느 네트워크에 속해있는지 다음과 같이 서브넷마스크와 IP주소의 AND연산을 통해 알아낼 수 있습니다.

Router

라우터는 다음과 같이 네트워크들을 연결하고 네트워크간의 통신을 가능하게 합니다. 그림의 네트워크 1, A컴퓨터가 네트워크 2, B 컴퓨터로 데이터를 보내고 싶으면 A는 B의 위치를 정확히 모르기 때문에 기본 게이트웨이인 라우터로 데이터를 전송하고 라우터가 B의 IP주소를 이용해 위에서 공부했던 서브넷과 같은 과정을 거쳐 어느 네트워크에 속하는지 판단하여 경로를 정하고 데이터를 전송하게 됩니다.
전송계층
데이터가 제대로 전송되었는지 확인하자!
전송계층은 TCP/UDP를 보며 함께 살펴보겠습니다.
응용계층
우리와 가장 가까운 계층!
OSI 7계층의 세션, 표현, 응용계층이 TCP/IP 계층에서는 응용계층에 해당합니다. 일반적으로 우리가 컴퓨터에 www.naver.com 에 접속하거나 메일을 송/수신하는 행위를 요청할 때 가장 먼저 반응하는 계층입니다.
HTTP : 웹사이트 접속
DNS : 도메인 해석
FTP : 파일 전송
SMTP : 메일 송신
POP3 : 메일 수신
다음과 같은 응용계층 프로토콜이 있습니다.
오늘은 이렇게 네트워크 계층에 대해 알아보았습니다. 대학교 2학년 컴퓨터 네트워크수업이 악몽처럼 지나갑니다....(지금도 어렵긴한데 저땐 진짜 무슨 말인지 몰랐습니다..🥲) 세세한 내용을 외우려고 한다기보단 흐름을 이해하려고 하고 데이터 전송이 어떻게 되는 걸까 생각하며 공부하니 더 알차게 공부할 수 있었던 것 같습니다.
