네트워크는 왜 이렇게 생긴걸까? 기본편
페이지 정보
본문
클리앙에 올렸던 이전 글을 다모앙으로 옮긴 글입니다.
요즘은 인터넷이 없는 컴퓨터는 상상할 수도 없죠.
근데 인터넷을 쓰려면 공유기에 LAN이니 WAN이니 하는 것들이 있고
UTP나 물리주소, IP주소, URL 같은 정보들을 접하게 됩니다.
그러다 네트워크 문제가 발생하면 DMZ나 포트포워딩 같은 낯선 단어들을 접하게되죠.
사실 이런 것들에대해 정확히 알지는 못하지만 대충 매뉴얼을 보거나
다른 사람들의 정보글을 보고 적당히 따라해서 사용하곤 합니다.
이런 내용들에 대해서 차례대로 좀 알아보는 글을 적어볼까 합니다.
원래 컴퓨터들은 각자 따로노는 기계들이었죠.
아래 그림처럼 말이죠.
두 컴퓨터 간에 정보를 공유하려면 A 컴퓨터의 플로피 드라이브에서 디스켓에 정보를 저장한뒤
손으로 옮겨서 B 컴퓨터의 드라이브에서 복사하는 방식으로 했어야했습니다.
하지만 상시 데이터를 계속 교환하려다보면 이런 방식은 매우 불편한데다
두 컴퓨터가 서로 멀리 떨어져있기까지 한다면 정말 귀찮은 일이었죠.
그래서 시리얼 포트(흔히 COM 포트라고도 하는)라고 하는 통신 포트를 만들어 두 개를 케이블로 연결해서 통신을 하게 됩니다.
아래와 같은 케이블 같은 걸 사용해서 말이죠.
그러면 실제로 두 컴퓨터를 이렇게 연결해서 사용할 수 있게 됩니다.
거의 실로 이어 만든 컵 전화처럼 아주 구식의 네트워크인 셈이죠.
근데 이 방식은 너무너무 구식이기 때문에 3대의 컴퓨터를 연결하고자 할 때 고민이 생길 수 밖에 없습니다.
시리얼 포트는 2개까지 연결할 수 있었기 때문에 굳이 구성하려면 아래 그림처럼 연결을 해서 구성을 할 수 있기는 했습니다.
하지만 4대의 컴퓨터를 연결하려면 어떻게 될까요?
이제 슬슬 케이블 갯수가 컴퓨터보다 훨씬 많아지기 시작하면서 정신이 산만해지죠.
이제 5대, 6대로 연결해야할 컴퓨터가 늘어난다면 어떻게 될까요? 점점 답이 없어지겠죠?
그러다보니 이 방법은 안되겠다 싶어지게 되어 컴퓨터 간의 연결을 담당하는 전용 기계가 생기게 됩니다.
그게 바로 허브(HUB)죠.
이 허브를 컴퓨터들의 사이에 놓고 모든 컴퓨터를 이 허브에 연결을 하게되면
복잡한 케이블 연결 없이 네트워크를 구성할 수 있게됩니다.
이젠 컴퓨터가 늘어나더라도 케이블 1개씩만 추가하면 그만이죠. (허브도 구멍이 더 많은 걸 써야겠지만요.)
근데 이렇게 연결을 하고 나면 또 새로운 문제가 생깁니다.
1번째 컴퓨터가 2번째 컴퓨터나 3번째 컴퓨터와 통신을 하고 싶은데
모두 한 곳에 연결된 케이블로는 누가 누구인지 구분을 할 수가 없기에
나는 누구고 누구와 통신을 하고 싶은지 정보가 필요하게 된거죠.
마치 무전기에 대고 '여기는 부엉이 부엉이! 독수리 독수리 응답하라!' 하는 식으로
컴퓨터 별로 독립적인 이름이 필요하게 된겁니다.
이 때문에 물리 주소(MAC Address)라는 것이 처음 생기게 됩니다.
각 컴퓨터에 번호를 붙여서 통신을 하게 되죠.
'A1 컴퓨터가 보낸다 C5 컴퓨터는 받아라~' 하는 식으로 말이죠.
실제로는 이렇게 단순한 숫자는 아니고
1A:B4:7C:D2:5E:F8
같은 형식의 12자리로 된 16진수 숫자의 주소 값을 갖습니다.
내 컴퓨터의 주소가 궁금한 분들은
명령 프롬프트를 열어 다음과 같이 입력해보면 내 컴퓨터의 물리 주소를 쉽게 알 수 있습니다.
C:\>ipconfig /all | findstr 물리
물리적 주소 . . . . . . . . : 1C-1B-0D-9C-72-19
이렇게 구성된 네트워크를 우리는 Local Area Network. 즉 LAN(랜)이라고 부르게 됩니다.
봉준호 감독이 '오스카는 로컬 페스티벌이잖아~' 라고 했던 그 Local 말이죠.
그렇게 일부 지역안에서만 복작대는 그런 네트워크를 LAN 이라고 부릅니다.
즉 우리가 흔히 말하는 '랜포트(LAN Port)'라고 하는게 LAN에 연결하기 위한 구멍이라는 이야기죠.
이 LAN에서의 통신은 기본적으로 아래와 같은 식으로 이루어 집니다.
(요즘은 스위칭 허브라해서 더 효율적으로 동작하긴 합니다만 자세한 사항은 생략)
A1 컴퓨터가 D7 컴퓨터와 대화를 하려면 허브에 메시지를 보내고
모든 컴퓨터가 그 메시지를 수신합니다.
그러면 그 메시지에 자기 이름이 있는 컴퓨터만 응답을 하고
다른 컴퓨터는 '난 아니네?' 하고 그 메시지를 무시합니다.
좀 무식한 방법이죠?
사실 이 방법 말고 다른 방법들도 존재하지만 이 방법만의 최고 장점 덕분에 현재까지 이런 방식이 살아남게 되었습니다.
그게 뭐냐고요?
제일 쌉니다. 가성비가 최고라는 거죠.
이 방식이 바로 이더넷(Ethernet)이라는 이름이 붙여져 있고
현재도 네트워크를 구성할 땐 이 이더넷 방식으로 만드는 것이 일반적입니다.
PC나 맥의 네트워크 설정에 가면 아래와 같이 이더넷에 연결됐다는 표현은 로컬 네트워크에 연결되어 있다는 의미가 되는 거죠.
자 이제 여기까지 왔으면 LAN이라는게 하나만 있는게 아니라는 걸 생각해 볼 수 있습니다.
우리 구역 말고도 다른 구역 사람들도 또 네트워크를 구축하고 있을 수 있겠죠. 아래 그림처럼.
이쯤되면 우리 구역 4명과 저쪽 구역 4명이 민속놀이인 스타크래프트를 하고 싶어지는게 인지상정이죠.
4:4 빨무맵에서 우리의 신박한 마우스 놀림을 보여주고 싶게 마련입니다.
두 네트워크를 연결하는 가장 간단한 방법이 뭘까요?
당연히 각각의 네트워크의 중심 역할을 하고 있는 허브를 연결 해주면 두 네트워크 간에 연결이 성립되게 됩니다.
간단하죠?
이렇게 외부랑 연결해서 더 거대한 네트워크를 만들어 냈습니다. 우리는 이걸 WAN(왠) 이라고 부르게 됩니다.
Local Area (지역)보다 넓기 때문에 Wide Area (광역) 이라는 이름을 붙이고 거기에 Network 를 붙인거죠.
Wide Area Network.
그 왜 잘 알고 있으실 서울↔경기 지역같이 여러 지역을 걸쳐다니는 광역버스의 그 광역이죠.
즉 우리 네트워크의 내부를 연결하는 것이 LAN 포트인 것이고
다른 네트워크가 연결하는 것이 WAN 포트라고 불리는 이유가 이것입니다.
당연한 이야기지만 이런 구조에서는 LAN안에는 여러 대의 컴퓨터가 있을 것이고
WAN 바깥으로는 하나의 연결 통로만 있으면 됩니다.
그래서 WAN 포트는 1개고 LAN 포트는 여러 개가 됩니다. 아래 그림처럼 말이죠.
그런데 이렇게 연결해놓고나니 골때리는 문제가 발생합니다.
우리 네트워크에서는 컴퓨터끼리 중복되지 않게 A1, B3, C5, D7 이라고 이름을 붙여놨는데
아뿔싸 저 쪽도 C5 라는 똑같은 이름을 사용하고 있지 뭡니까.
이러면 A1 컴퓨터가 C5 컴퓨터로 메시지를 보낸다고 했는데 C5 컴퓨터가 두 대이기 때문에
누구를 부른 건지 알 수가 없게 됩니다.
이제 어떻게 해야할까요?
이 방법을 해결하기 위해 다른 네트워크에서도 중복이 되지 않는 주소를 부여할 방법을 고민해야하겠죠?
이 때문에 IANA(아이아나)라는 기관이 세워지게 됩니다. (갑자기!?)
매우 단순하게 의미를 부여한 이 기관의 이름은
Internet Assigned Numbers Authority = 인터넷 번호 할당 기관
이라는 의미죠.
여기서 그 잘 알려진 IP 주소 라는 것을 관리하게 됩니다.
IP는 Internet Protocol 의 약자로 Internet 은 우리가 잘 알고있는 세계가 연결된 네트워크 망의 이름입니다.
그래서 각 국가별로 IP를 관리하는 기관이 설립되고, 그 위에 대륙별로 IP를 관리하는 기관이 있고
꼭대기에 IANA가 IP 주소를 총괄하는 형태로 인터넷 주소 체계의 관리가 이루어지게 됩니다.
우리나라의 IP 주소를 관리하는 곳은 KRNIC 이라는 곳입니다.
인터넷이 연결된 국가라면 대부분 국가코드+NIC 의 이름을 가진 기관들이 존재합니다.
중국은 CNNIC, 일본은 JPNIC. 뭐 영국같이 Nominet UK 같은 이름을 가진 곳도 있습니다.
어쨌든 다시 원래 이야기로 돌아오면 이제 IP 주소라고하는 중복되지 않는 주소를 얻을 수 있게 되었기 때문에
이제 네트워크 구성은 아래 그림처럼 구성할 수 있게 됩니다.
이렇게 되면 이제 왼쪽 네트워크의 1번 컴퓨터는 168.126.63.1 이라는 IP 주소를
오른쪽 네트워크의 1번 컴퓨터는 202.30.38.1 이라는 IP 주소를 갖게 되므로 중복되는 이름이 없어지게 됩니다.
그런데 좀 달라진게 하나 있죠? 허브가 주소(254)를 갖게 되었습니다.
네트워크가 커지게 되면서 위에서 이야기한 무전기 통신 방식...
즉 모든 컴퓨터가 내 메시지를 듣는 방식을 사용하는 건 불가능해지게 될 거라는 건 짐작할 수 있을 겁니다.
이렇게 되면서 단순하게 메시지를 통과 시키기만하던 허브가
WAN으로 메시지를 전달하는 역할을 전담하는 게이트웨이(혹은 라우터)로 진급(?)하게 됩니다.
단순하게 메시지를 통과시키기만 할 때는 스스로 주소를 가지고 있을 필요가 없었지만
WAN 으로 메시지를 전달할 때는 다른 네트워크에게 자기가 'XXX 네트워크의 게이트웨이다!' 라고 소개를 해야하기 때문에
주소를 가질 수 밖에 없게 된 것이죠.
그래서 이제 데이터를 전달하는 방식이 조금 더 복잡해지게 됩니다.
만약 왼쪽 네트워크에서 오른쪽 네트워크의 컴퓨터를 호출하면 아래와 같은 상황이 벌어집니다.
평소 LAN의 방식대로 168.126.63.1 번 컴퓨터가 로컬 네트워크에 응답하라는 메시지를 확 뿌려버립니다.
그러면 LAN에 있는 다른 컴퓨터들은 모두 자기랑 상관없는 메시지니 무시하지만
게이트웨이는 그 메시지를 보고 '어? 우리 네트워크의 메시지가 아닌데?' 하고 WAN 으로 메시지를 돌려버립니다.
그러면 WAN으로 연결되어있는 오른쪽 네트워크의 게이트웨이가 '어라? 우리 메시지네?'하고
오른쪽 로컬 네트워크에 쫙 메시지를 뿌립니다.
그러면 최종 목적지인 202.30.38.3 컴퓨터에게 메시지가 도달하게 되죠.
실제로는 더 많은 단계로 구성이 되지만 기본적으로는 이런 방식으로 IP 주소를 통한 통신이 이루어지게 됩니다.
다음 글에서는 포트에 대해서 설명해 보도록 하겠습니다.
바다가좋아님의 댓글
다름글도 얼른 보고 싶습니다.
감사합니다.
부산아재님의 댓글
쓰신 글을 읽고 나니 이해가 퐉 돼네요 ㅎㅎ
감사합니다
적어도 이제 LAN과 WAN은 이해 했습니다
다음 글도 있다면 기대하겠습니다 ㅎㅎ
착한아저씨님의 댓글
널문자님의 댓글
동축케이블로 LAN을 사용했었는데...
끝단에 종단저항이 항상 말썽이었죠.
drzekil님의 댓글
그런데.. 말씀하신대로라면 네트워크에 연결된 모든 기기가 공용IP를 가지게 됩니다.
하지만 실제로는 사설IP를 갖고 동작하는게 대부분이죠.
해당부분에 대한 설명이 추가되면 좋을 것 같습니다.
지하철승객님의 댓글의 댓글
원래 인터넷은 End-to-End 를 기초로 만들어진거라
지금같이 NAT를 가정하고 만들어진게 아니라서 부가적인 설명으로 뺐습니다.
은비령님의 댓글
IT 밥을 먹고 살고 있지만 그래도 이런글을 보면 반갑습니다. ㅎㅎ
좋은 글 감사합니다.
까츄님의 댓글