서로 다른 네트워크간 데이터 통신 과정 이해하기
네트워크 통신 이해하기
서로 다른 네트워크간 통신은 어떻게 이루어지는지 이해해볼 것입니다. 아래 내용을 순차적으로 이해합시다.
─ 목차 ─
∨ 패킷이란?
∨ TCP/IP Suite로 설명하는 데이터통신
└> PC에서 '계층별 정보' 확인해보기
∨ 외부 네트워크로 패킷 보내기 - 라우터와 NIC
└> PC에서 '라우팅 테이블' 확인해보기
∨ 패킷이란?
패킷은 데이터 꾸러미입니다.
네트워크 통신할 때 데이터는 작은 단위로 나누어 전송됩니다. 이때 '패킷'을 전송한다고 하면 됩니다.
OSI 7 모델을 생각해봅시다. 각 계층에서는 특정 기능을 수행하며 데이터를 다른 계층으로 전송합니다. 그런 네트워크 데이터 덩어리를 패킷이라고 부릅니다.
각 계층마다 패킷의 정보와 구조는 다릅니다.
- 물리 계층에서는 패킷이 Bit 단위로 나누어집니다.
- 데이터 링크 계층에서는 패킷 단위가 Frame입니다.
- 네트워크 계층에서는 패킷에 IP 주소가 포함됩니다.
- 전송 계층에서는 패킷 단위가 Segment입니다.
- 세션계층, 표현계층, 응용계층 또한, 사용하는 프로토콜에 따라 패킷 단위는 다릅니다.
따라서 단순히 '계층간에 패킷을 전송한다'라고 하면 옳습니다.
잠시 네트워크 통신 과정을 생각해봅시다. 네트워크 계층에는 상위계층과 하위계층이 있죠.
1. 송신자 측에서 데이터를 보냅니다. 상위계층에서는 각각의 프로토콜에 따라 데이터를 패킷단위로 나누어 하위계층에 전송합니다. 점점 하위로 내려가는 패킷에는 각 계층에서 붙인 헤더가 추가되어갑니다. (Encapsulation)
2. 이제 수신측에서는 다시 원본 데이터를 복원해야 합니다. 하위계층에서 상위계층으로 올라갈 때, 패킷이 가지고 있는 헤더 정보를 하나씩 까면서 상위 계층으로 올라갑니다. 이렇게 원본 데이터를 복원합니다. (Decapsulation)
아, 패킷은 그냥 네트워크상에서 전송되는 데이터묶음이군요!
계층마다 프로토콜마다 다르게 정의되는 패킷!
* 그래서 '계층별 패킷 구조'를 공부하는 것입니다. Frame의 구조, Segment의 구조 등.. 여기서는 패스..
∨ TCP/IP Suite로 설명하는 데이터통신
네트워크 통신을 계층별로 설명하는 OSI 7 모델과 비슷합니다. TCP/IP 스위트도, OSI 7 모델처럼 계층별로 프로토콜을 설명하고 있습니다. 인터넷 통신시 필요한 핵심 프로토콜인 TCP, IP 중심으로 아래와 같이 계층구조를 그릴 수 있습니다.
(자료마다 5계층 또는 4계층으로 나눕니다.)
아래는 우리가 Naver에 접속할 때 거치는 과정을 TCP/IP 계층구조를 통해 설명한 것입니다.
(자료마다 계층의 명칭이 완전히 동일하지는 않으나, 유연하게 생각하면 될 것 같습니다. 저는 OSI 계층모델의 계층명을 가져와 설명했습니다.)
네이버 서버인 Sender는 내 컴퓨터에 메인페이지를 띄울 것입니다. 내 컴퓨터는 패킷을 받는 Receiver입니다.
계층별로 사용하는 프로토콜은 다음과 같이 정리할 수 있습니다.
└> PC에서 '계층별 정보' 확인해보기
계층별로 대표되는 정보들이 있습니다. 데이터링크 계층은 MAC주소, 네트워크 계층은 IP주소, 전송계층은 PORT번호, ...
이 정보들은 무언가 통신에 필요한 어떤 것을 유일하게 식별하는 식별자이므로 중요합니다.
* 각 계층의 메시지 헤더에 이러한 식별자가 포함됩니다.
재밌는 점은, 내 PC에서 네트워크 통신을 할 때 사용하는 식별자를 확인해볼 수 있다는 것입니다.
(하위계층부터 상위계층으로) 데이터링크 계층, 네트워크 계층, 전송 계층의 정보(식별자 등)를 체크해보겠습니다.
- 데이터링크 계층: 물리주소인 MAC주소를 확인 가능합니다. 물리적인 네트워크 장치를 식별하는 주소입니다.
(* MAC주소: Media Access Control 주소)
- 네트워크 계층: IP주소를 확인 가능합니다. IP주소는 네트워크에 연결되는 호스트를 식별합니다.
- 전송계층: TCP 상태 정보를 확인할 수 있으며, 출발지/목적지의 PORT번호를 확인 가능합니다.
아래 그림에 설명한 것처럼, 전송계층의 정보는 netstat -tn 명령으로 확인 가능하고, 네트워크 계층과 데이터링크 계층의 정보는 ipconfig, ifconfig을 통해 확인 가능합니다.
∨ 외부 네트워크로 패킷 보내기 - 라우터와 NIC
: 패킷의 루트(route)를 결정하는 라우터(router)
- 라우터
라우터는 다른 대역 네트워크로 접속할 수 있도록 해주는 네트워크 장치로, 라우팅을 통해 트래픽의 경로를 결정합니다. 개별 PC는 네트워크 인터페이스 카드(NIC)를 통해 라우터와 연결되어 네트워크 통신이 가능해집니다.
* 가정의 공유기 = WiFi 라우터
라우터는 내부에 라우팅 테이블을 가지고 있으며, 이 테이블에 작성된 정보를 따라 네트워크 트래픽을 전달합니다. 라우터는 다른 네트워크로 접속할 수 있는 게이트웨이 역할을 하며, 네트워크 간의 통신을 가능하게 합니다.
* 라우터는 네트워크 통신의 '입출구' 역할을 하는 '게이트'웨이 라고 생각하면 편하겠습니다.
* 게이트웨이는 개념적인 용어이고, 라우터는 장비입니다.
- NIC
다시 풀어서 얘기하자면, 내 컴퓨터 자체로는 네트워크 통신을 할 수 없고 라우터라는 네트워크 장치를 필요로 합니다. 이때, 컴퓨터는 이러한 외부 네트워크 장치를 통해 통신을 하기 위해서 "네트워크 인터페이스 카드 (NIC)"를 가지고 있습니다.
▷ NIC(네트워크 인터페이스 카드)는 컴퓨터와 네트워크 간의 물리적인 연결을 담당하는 장치로, 컴퓨터에 설치되는 하드웨어 카드입니다. 컴퓨터와 네트워크 간의 통신을 위해 물리 계층과 데이터 링크 계층에서 동작하며, 이더넷, 와이파이 등 다양한 네트워크 표준에 따라 통신을 지원합니다.
▷ 라우터는 서로 다른 네트워크 간 통신을 위해 라우팅 결정을 내리는 장치로, IP 주소에 기반하여 데이터를 전송하고 다른 네트워크로 라우팅합니다.
라우터와 NIC는 함께 사용되어 네트워크 간에 데이터를 전송하고 컴퓨터와 네트워크 간의 물리적인 연결을 제공하는데 사용됩니다.
- 라우터와 NIC
아래의 통신 과정을 읽어보며 라우터와 NIC 개념을 좀 더 이해해봅시다.
[송신자가 패킷을 보냅니다]
내 컴퓨터에서 전송하는 패킷은 하위계층으로 전달됩니다. 하위계층인 데이터링크+물리계층에는 NIC라는 하드웨어 장치가 있습니다. 물리 계층에서는 bit 단위의 데이터가 다뤄지는데, 이 NIC가 bit 데이터를 물리신호(전기, 광)로 변환합니다. 그리고 이 신호를 물리 네트워크 매체인 "유무선 네트워크"로 전송합니다.
- 유선 네트워크: 일반적으로 이더넷 케이블이 있습니다. (흔히 LAN선 이라고 부르죠 - LAN: Local Area Network)
- 무선 네트워크: WiFi, 블루투스가 여기 해당됩니다.
이렇게 패킷이 "유,무선 네트워크"로 전송되면 패킷은 라우터로 전달됩니다. 라우터에 도착한 패킷은 다른 대역의 네트워크로 전송될 수 있게 됩니다.
[수신자가 패킷을 받습니다]
위 과정에 이어 설명합니다. 송신자가 보낸 패킷은 가장 먼저 수신자의 라우터에 도착합니다. (라우터 - 서로 다른 네트워크간 통신 해줌) 라우터는 패킷을 '컴퓨터'로 보내야 합니다. (컴퓨터는 라우터같은 네트워크 장치와 연결되어야 통신가능하다고 했습니다!) 어떤 컴퓨터에 보내야 할지의 정보는 다 패킷에 있습니다. 즉 패킷에는 수신자 컴퓨터의 물리주소(MAC주소)가 포함되어 있어서, 패킷은 수신자 컴퓨터의 물리계층에 도착합니다. (이후 과정은 생략..)
.
.
└> PC에서 '라우팅 테이블' 확인해보기
그럼 이제 아래 정보들을 이해할 수 있습니다.
컴퓨터와 라우터(네트워크 장치)는 별개의 장치라고 했습니다. 그러나 컴퓨터와 라우터가 NIC라는 물리적인 연결고리를 통해 연결되어 있으면 내 컴퓨터에서 라우터의 라우팅테이블을 확인할 수 있습니다 - 물리적인 연결은 유선(LAN선이라고 불리는 이더넷 케이블) 또는 무선(WiFi 등) 등의 방법으로 이루어집니다. 컴퓨터의 NIC가 결국 물리적(유,무선)으로 라우터와 연결되게 할 수 있는 것입니다.
아무튼 그래서 내 컴퓨터에서 라우터의 라우팅테이블을 확인 가능합니다. (netstat -r 또는 route print 명령어)
라우팅 테이블을 보면, 목적지 IP주소를 알 수 있습니다. 이 목적지 IP주소로 가기 위한 경로 정보도 라우팅 테이블에 있습니다. 이를 통해, 현재 컴퓨터가 어떤 경로를 통해 트래픽을 라우팅하는지 확인할 수 있습니다.
* 네트워크 마스크 개념, 네트워크 주소 개념을 알고 있다고 여기겠습니다.
패킷이 외부 네트워크로 나갈 때, 어떻게 라우팅이 되는 걸까?
라우터로 전달되는 패킷에는 목적지 IP 정보가 있습니다. 라우터는 라우팅테이블에 그 목적지가 있는지 없는지 찾아봅니다. 위 표에서 '네트워크 대상'에서 찾아봅니다. 0.0.0.0 빼고는 전부 "내부 네트워크 주소"입니다. 즉 패킷의 목적지가 "내부 네트워크"인지 "외부 네트워크(0.0.0.0)"인지 체크해보는 것입니다.
- 라우팅 테이블에 목적지IP가 딱 있는 경우, 해당 경로로 패킷이 전달됩니다. 내부 네트워크간 통신입니다.
- 라우팅 테이블에 목적지IP가 없는 경우, 외부 네트워크간 통신을 의미합니다. 그래서 디폴트 게이트웨이로 패킷이 전달됩니다. 외부 네트워크 통신은 라우터를 통한다고 했죠? 그래서 이때 패킷은 컴퓨터와 연결된 라우터, 즉 default route의 게이트웨이(라우터)로 전송되는 것입니다.
네트워크 마스크가 0.0.0.0(전체 네트워크)인 곳의 게이트웨이 주소를 보면 10.4.0.1입니다. 바로 이게 내컴퓨터가 연결된 라우터(네트워크 장치)의 주소입니다. 외부 네트워크로 나가야 한다면, 패킷이 가야 할 길(라우터, 게이트웨이)가 정해져 있는 것이죠! 넵넵!
내부 네트워크 주소도 종류가 있습니다. (내부네트워크, 루프백주소, 멀티캐스트 주소 등... )
내부망 관련 이야기는 생략하겠습니다.
네트워크 대상이 0.0.0.0인 거 빼고, 그 밑에 것들은 전부 내부 네트워크입니다.
여기까지!
잘못되거나 애매한 내용은 바로잡아주세요 감사합니다.
∨ 패킷이란?
∨ TCP/IP Suite로 설명하는 데이터통신
└> PC에서 '계층별 정보' 확인해보기
∨ 외부 네트워크로 패킷 보내기 - 라우터와 NIC
└> PC에서 '라우팅 테이블' 확인해보기