도커의 포트 매핑을 공부하다 가장 기본 개념이 되는 IP와 네트워크에 대해 두루뭉술하게만 알고 있다고 느껴서 다시 공부한 내용을 정리해 보았다.
‘IP 주소’ 라는 게 어쩌다 나왔을까
컴퓨터는 서로 데이터를 주고받는 등의 통신을 하기 위해 ‘IP 주소’를 사용하는데, 이건 마치 우리가 전화하기 위해 상대방의 연락처를 사용하는 것과 비슷하다. 근데 이 IP 주소는 컴퓨터가 만들어진 초기부터 사용되었던 건 아니다.
‘컴퓨터’가 이제 막 사용되기 시작한 당시에는 각 컴퓨터 간의 물리적인 전용 통신 회선을 미리 설정 해놓고 통신이 끝나기 전까지 그 회선을 독점적으로 사용하는 방식의 ‘회선 교환(Circuit Switching)’ 방식을 사용하고 있었다.

회선 교환 방식은 두 서버(컴퓨터 등)가 통신하기 위해 회선을 독점해서 사용하기 때문에 다른 방해 없이 일정한 전송 속도로 안정적으로 데이터를 전달 할 수 있다는 장점이 있지만, 서버마다 전용 회선을 구축하고 유지하는 비용이 많이 들고 이로 인해 확장하기도 어렵다는 점과 통신하는 도중에 잠시 비는 시간(ex. 마치 전화 통화 도중 침묵하는 시간)이 생겨도 독점으로 회선을 사용하고 있어 자원이 낭비된다는 단점들을 가지고 있었다.
위 그림은 A 서버와 C 서버가 서로 통신하기 위해 전용 통신 회선을 사용하고 있는 상태를 보여주고 있는데, 앞서 말했듯이 이런 상황에서 다른 서버가 긴급하게 통신해야 하는 상황이 발생하더라도 A 서버와 C 서버의 통신이 끝나기 전엔 독점하여 사용 중인 회선을 다른 서버는 이용하지 못한다는 문제를 가지고 있다.
참고로 각 서버가 회선으로 바로 연결되는 것이 아니라 위 그림과 같이 서버 사이에 ‘교환기(Switching Exchange)’를 두어 이를 거쳐서 통신하게 되는데, 교환기는 통신하는 두 서버 사이에서 전용 통신 회선을 미리 설정해 주고 독점하여 사용하게 도와주다가 통신이 끝나면 해제하는 역할을 한다.
냉전 시대였던 당시 핵 공격을 받으면 통신 네트워크가 마비될 우려가 있어 분산되고 견고한 통신망이 필요했고, 여러 연구 기관이나 대학에 흩어져 있는 고가의 대형 컴퓨터 간의 효율적인 자원 공유를 위해 1969년 미국 국방부의 ARPA(Advanced Research Projects Agency)는 ARPANET을 개발하였다.
ARPANET이 없었다면 지금의 IP 주소나 인터넷은 없었을 것…
ARPANET은 기존의 회선 교환 방식이 아니라 ‘패킷 교환(Packet Switching)’ 방식을 최초로 사용하였는데, 이 방식은 데이터를 작은 조각인 패킷으로 나눠서 전달하고 상대 서버에 도착하면 원래 데이터의 형태로 다시 조립하는 방식이었다.

이러한 패킷 교환 방식은 회선을 여러 서버가 동시에 사용할 수 있어 효율적인 자원 공유가 가능하게 되었고, 하나의 회선에 문제가 발생하더라도 다른 회선을 통해 데이터를 전달 할 수 있어 유연성과 안정성도 크게 향상되었다. 또한 매번 전용 회선을 할당하지 않고 기존의 회선 또는 필요한 회선만 새로 구축하면 되어 비용도 절감되는 장점을 갖고 있었다.
ARPANET 초기에는 IMP(Interface Message Processor)라는 미니컴퓨터가 각 호스트 컴퓨터 앞에서 데이터를 패킷으로 쪼개 전달하고 이를 받아 다시 호스트 컴퓨터에 전달해주는 방식이었는데, 이때까지는 NCP(Network Control Program)라는 프로토콜을 사용하였으며 한 번에 두대의 컴퓨터만 통신이 가능한 상태였다. 따라서 더욱 확장된 네트워크를 위해 서로 다른 네트워크들을 연결할 수 있는 ‘TCP/IP 프로토콜’이 개발되었고 IMPs는 패킷이 이동하는데 있어 최적의 길을 안내해주는 역할이 가능한 ‘라우터’로 발전 되어졌다.
초기의 TCP/IP는 각 장치(서버)에 주소를 붙이고, 쪼개진 패킷들의 경로 지정 및 도착한 패킷들의 순서 확인과 재정렬, 그리고 유실된 패킷이 있다면 다시 요청하는 역할까지 모두 수행하고 있었다. 그러나 연구가 지속되면서 보다 효율적이고 유연하게 작동되기 위해서는 분리가 필요하다 여겨져 오늘날의 TCP/IP가 완성되었으며 아래 정리된 내용과 같이 각자의 역할이 명확하게 분리되어졌다.
오늘날의 TCP/IP 특징
IP (Internet Protocol)
- 각 장치(서버)에 고유한 IP 주소 부여
- 데이터 패킷의 경로 지정
- 패킷을 전달할 뿐, 연결 상태 확인이나 결과는 보장하지 않음. (= 단순성, 비연결형, 비신뢰성)
TCP (Transmission Control Protocol)
- 데이터 통신 전에 논리적인 연결을 설정
- 너무 빠른 속도로 전송되어 전달 받는 곳에 부하가 생기지 않도록 흐름 제어
- 전달된 패킷들의 순서 재정렬
- 데이터의 손상 여부 체크
- 유실된 패킷 발생시 다시 전달 요청
이렇게 ARPANET에서 개발된 데이터 패킷과 TCP/IP로 인해 독점적인 회선 사용으로 두 서버만 통신이 가능했던 상태에서 여러 서버가 동시에 통신이 가능한 네트워크가 형성될 수 있었고, 더 나아가 네트워크들이 통신하는 인터넷이 탄생하게 되었다. ARPANET의 모든 호스트들이 초기의 NCP 프로토콜에서 TCP/IP로 일괄 전환된 날짜는 1983년 1월 1일이며, 이 날은 진정한 의미의 ‘인터넷’이 탄생한 날로 여겨지고 있다.
'CS' 카테고리의 다른 글
| 자바의 자료형과 가상 메모리 공간에 대해 (1) | 2025.06.11 |
|---|