본문 바로가기
컴퓨터공학/기초

컴퓨터 네트워크

by 하이방가루 2022. 10. 9.
728x90
반응형

이 글은 Crash Course의 Computer Science를 보고 정리한 글입니다.

  첫 번째 컴퓨터 네트워크는 1950년대와 1960년대에 나타났다. 일반적으로 회사 또는 연구실과 같은 조직 내에서 다른 사람들 또는 컴퓨터 사이의 정보 교환을 용이하게 하기 위해서 사용되었다.

  컴퓨터 네트워크의 첫 번째 이점은 펀치카드 또는 자기 테이프의 릴 더미를 걷어서 다른 곳으로 옮기는 것보다 빠르고 신뢰할 수 있다는 점이다. 이러한 점 때문에 나중에 스니커넷(SneakerNet)이라고 별명 지어졌다.

  두 번째 이점은 물리적 자원을 공유할 수 있는 능력이다. 예를 들어, 각 컴퓨터가 자체 프린터를 갖는 대신, 모두가 네트워크에 연결된 하나의 프린터를 공유할 수 있다. 초기 네트워크에서도 일반적으로 크고 공유된 기억장치를 가지고 있었는데 모든 기계에 부착하기에는 기억장치의 가격이 너무 비쌌기 때문이다.

  이러한 비교적 근접한 컴퓨터 사이의 네트워크를 로컬 영역 네트워크(LAN; Local Area Network)라고 한다. LAN의 범위는 같은 방에 있는 2대의 컴퓨터만큼 작거나, 캠퍼스에 수천 대의 컴퓨터만큼 클 수 있다. 많은 LAN 기술이 개발되었지만 가장 유명하고 성공적인 것은 1970년대 초에 Xerox PARC에서 개발한 이더넷(Ethernet)으로, 오늘날도 여전히 널리 사용되고 있다.

  가장 간단한 형태로, 일련의 컴퓨터들은 하나의 공통 이더넷 케이블에 연결된다. 컴퓨터가 데이터를 다른 컴퓨터로 전송하려면, 데이터를 전기 신호로 써서 케이블을 통해 보낸다. 물론 케이블이 공유되기 때문에, 모든 네트워크에 연결된 컴퓨터는 전송된 데이터를 볼 수 있지만, 데이터가 어떤 컴퓨터를 위한 것인지의 여부는 알 수 없다. 이 문제를 해결하기 위해 이더넷은 각 컴퓨터에 고유한 매체 접근 제어 주소(Media Access Control [MAC] Address)를 부여했으며,  이 고유한 주소는 네트워크를 통해 전송된 모든 데이터의 헤더 앞에 삽입된다. 따라서 컴퓨터는 단순히 케이블 신호를 듣고, 헤더에서 주소를 볼 때만 데이터를 처리한다. 오늘날 만든 모든 컴퓨터에 이더넷과 Wifi를 위한 고유한 MAC 주소가 부여된다.

  이러한 접근법의 일반적인 용어는 반송파 감지 다중 접속(CSMA; Carrier Sense Multiple Access)라고 한다. 이 경우 "Carrier"는 데이터를 전송하는 공유 전송 매체이다. 이더넷의 경우는 구리선, Wifi의 경우 전파를 운반하는 공기를 말한다. 많은 컴퓨터가 동시에 캐리어를 감지하기 때문에 "감지 Sense"와 "다중 접속 Multiple Access"이라 하고, 캐리어가 데이터를 전송할 수 있는 속도를 대역폭(BandWidth)이라고 한다.

 

  하지만 공유 전송 매체를 사용하면 하나의 큰 단점이 있다. 네트워크 정체(트래픽)가 적으면, 컴퓨터는 캐리어의 침묵을 기다렸다가 데이터를 전송하면 된다. 그러나 네트워크 트랙픽이 증가하면 두 컴퓨터가 동시에 데이터를 쓰려는 확률도 높아진다. 이것을 충돌(Collision)이라고 하며, 데이터는 두 명이 동시에 전화에서 말하는 것처럼 혼동된다. 다행스러운 점은 컴퓨터가 전선에서 신호를 들으며 이러한 충돌을 감지할 수 있다.

  가장 확실한 해결책은 컴퓨터가 전송을 멈추고, 정적을 기다린 후 다시 시도하는 것이다. 문제는 다른 컴퓨터도 역시 이를 시도할 것이고, 네트워크 상의 다른 컴퓨터들의 캐리어들이 정적을 기다리고 있다가, 어떤 일시중지 도중 불쑥 끼어들려고 할 것이다. 이는 점점 더 많은 충돌로 이어진다. 

  이더넷은 놀라울 정도로 간단하고 효과적인 해결책을 가지고 있다. 전송 중인 컴퓨터가 충돌을 감지하면 재전송을 시도하기 전에 잠시 기다린다. 예를 들어 1초라고 하자. 물론 이것은 모든 컴퓨터가 동일한 대기 시간을 사용할 때는 부적합하다. 모든 컴퓨터가 1초 후에 다시 충돌할 것이기 때문이다. 그래서 임의의 시간이 추가된다. 어떤 컴퓨터는 1.3초를 기다릴 수도 있고, 다른 컴퓨터는 1.5초를 기다릴 수도 있다. 운이 좋다면, 1.3초를 기다린 컴퓨터가 깨어나서 캐리어가 정적일 때 전송을 시작한다. 1.5초 컴퓨터가 그 후 잠에서 깨면 캐리어가 사용 중임을 확인할 수 있고, 다른 컴퓨터가 완료될 때까지 기다릴 것이다.

  이것은 분명히 도움은 되지만 문제를 완전히 해결하지는 않으므로 추가 트릭이 사용된다. 방금 설명한 대로, 컴퓨터가 전송 중 충돌을 감지하면 1초의 또는 임의의 무작위 시간을 추가한다. 그러나 네트워크 혼잡을 암시하는 충돌이 다시 일어나면, 1초를 기다리는 대신, 이번에는 2초를 기다린다. 또다시 충돌하면 4초를 기다리고, 그런 다음 8, 16, 등등 성공할 때까지 기다릴 것이다. 컴퓨터가 뒤로 물러나면 충돌 속도는 내려가고 데이터가 다시 움직이기 시작하면서 네트워크는 해방된다. 기하급수적으로 증가하는 이 대기 시간을 지수 백오프(Exponentail Backoff)라고 한다. 이더넷과 와이파이 둘 다 이 방법을 사용하고, 많은 전송 프로토콜도 사용한다.

 

  하지만 지수 백오프 같은 영리한 트릭도 절대 하나의 공유 이더넷 케이블로 대학 전체의 컴퓨터를 해결해 줄 수는 없다. 충돌을 줄이고 효율성을 높이려면, 주어진 공유 캐리어에서 장치의 수를 줄여야 한다. 이를 충돌 도메인(Collision Domain)이라고 부른다. 

  이전의 Ethernet 그림을 일명 하나의 충돌 도메인이라 한다. 충돌 가능성을 줄이기 위해, 네트워크 스위치를 사용해서 두 개의 충돌 도메인으로 나눌 수 있다. 이는 두 개의 더 작은 네트워크 사이에 위치하며, 필요한 경우에만 데이터를 전달한다.

  MAC 주소가 네트워크의 어느 쪽에 있는지 목록을 유지하면서 이를 수행한다. 따라서 만약 A에서 C로 전송하려면, 스위치는 데이터를 다른 네트워크로 전달하지 않는다. 동시에 E에서 F로 전송하려고 하면, 네트워크는 넓게 열려 있어 한번에 두 개의 전송이 가능해진다. 그러나 F에서 A로 데이터를 보내려면 스위치를 통과하고 두 네트워크는 둘 다 잠시 점유된다. 

  이것은 본질적으로 얼마나 큰 컴퓨터 네트워크가 구성되는지를 말하고, 가장 큰 네트워크 중 하나인 인터넷과 말 그대로 더 작은 규모의 네트워크를 서로 연결하는 것을 포함하며, 네트워크 간 통신을 허용한다.

 

  이러한 대규모 네트워크에서 한 위치에서 다른 위치로 데이터를 가져오는 경로가 여러 개 있는 경우가 많다. 그리고 이것은 또 다른 네트워킹 주요 주제인 라우팅(Routing)과 연관 있다. 두 대의 원거리 컴퓨터 또는 네트워크를 연결하는 가장 간단한 방법은 독점적 용도로 통신 회선을 할당하는 것이다. 이것이 초기 전화 시스템이 작동하는 방법이다. 예를 들어, 인디애나 폴리스와 미줄라 사이를 연결하는 5개의 전화선이 있다고 할 때, John이 Hank에게 전화를 걸고 싶다면, 1910년대의 John은 교환원에게 전화를 걸기 원하는 곳을 말하고 교환원은 물리적으로 John의 전화선을 미줄라로 가는 미사용 된 선을 연결한다. 통화가 걸리기까지, 그 회선이 점유되었고 5줄 모두가 이미 사용 중이라면 John은 하나의 선이 개발될 때까지 기다려야 했다.

  이 방법을 글자 그대로 목적지를 향한 전체 회로를 전환하기 때문에 회로 전환(Circuit Switching)이라고 한다. 잘 작동하지만 사용되지 않는 용량이 종종 있어 상대적으로 융통성이 부족하고 비싸다. 라인이 존재하고 사적인 용도로 구입할 돈이 있다면 전용량을 공유하지 않고 언제든지 사용할 수 있다. 이런 이유로 군대, 은행 및 기타 중요도가 높은 작업은 여전히 데이터 센터를 연결하기 위한 전용 회선을 구입하여 사용한다.

 

  하나의 데이터를 다른 곳으로 가져오는 또 다른 방법은 메시지 교환(Message Switching)이다. 이는 우편 시스템이 작동하는 방법과 비슷하다. A에서 B까지 전용 경로 대신, 메시지는 여러 정류장을 통과한다.

위와 같이 연결되어있을 때 John이 Hank에게 편지를 쓰면, 인디애나 폴리스에서 시카고로 이동한 다음 미네아폴리스를 건너, 빌링스, 그리고 마침내 미줄라에게 가져다준다. 각 정류장은 목적지 주소가 주어진 문자를 전달할 위치의 테이블을 유지하므로 다음에 보낼 위치를 알고 있다.

  메시지 교환에 장점은 다른 경로들을 사용하여 통신할 수 있다는 점이다. 이는 통신을 보다 안정적이게 하고, 고장을 방지한다. 위의 에제에서 만약 미네아폴리스에 눈보라가 몰아쳐 일이 중단되면 대신 시카고의 메일 허브가 오마하를 통해 편지를 전달할 수 있다. 이 예시에서 도시는 네트워크 라우터(Router)와 비슷하다. 네트워크에서 메시지가 경로를 거치는 횟수를 홉 수(Hop count)라고 한다. 이 홉 수를 추적하면 경로상의 문제를 확인할 수 있기 때문에 유용하다.

  예를 들어 시카고는 미줄라로 가는 가장 빠른 경로는 오마하를 거쳐 가는 것이라 생각하지만, 오마하는 가장 빠른 경로가 시카고를 거친다고 생각한다. 두 도시가 모두 목적지 주소인 미줄라를 향하고 있기 때문에 좋지 않다. 그리고 그들 사이로 끝없이 메시지가 앞뒤로 통과하게 된다. 고쳐야 하는 경로 오류뿐만 아니라 이는 대역폭도 낭비하고 있다. 이러한 종류의 오류는 홉 수가 메시지와 함께 저장되며 이동을 따라 업데이트되기 때문에 감지될 수 있다. 높은 홉으로 메시지를 보기 시작하면, 경로의 무언가가 잘못되었다는 것을 알 수 있다. 이 임계값은 홉 제한값(Hop Limit)이라고 한다.

 

  메시지 교환의 단점은 메시지가 종종 크다는 것이다. 따라서 전체 메시지가 한 정류장에서 다음까지 모두 전송되기 전까지 그 메시지가 네트워크를 막을 수 있다. 큰 파일이 전송되는 동안 그 전체 링크는 꼼짝 못 하고 묶여있게 된다. 작은 1KB 이메일을 가지고 있더라도 통과하려면 대용량 파일 전송을 먼저 기다리거나 우회하는 경로를 선택해야 한다.

  해결 방법은 용량이 큰 전송을 패킷(Packet)이라 불리는 작은 조각들로 쪼개는 것이다. 메시지 교환과 마찬가지로 각 패킷은 네트워크상의 목적지 주소를 포함하고, 따라서 라우터는 전달할 위치를 알고 있다. 이 형식을 인터넷 프로토콜(IP; Internet Protocol)이라고 한다. 1970년대에 만들어진 표준이다.

  네트워크에 연결된 모든 컴퓨터는 IP주소(IP Address)를 가지고 있다. 이것은 4비트, 8비트 숫자들 사이로 점들이 찍힌걸로 볼 수 있다. 예를 들어 172.217.7.238은 Google의 서버 중 하나에 대한 IP 주소이다. 수백만 대의 컴퓨터가 온라인 상태에서 모두 데이터를 교환하고 있을 때 밀리 초 단위로 병목 현상이 발생할 수 있다. 네트워크 라우터는 신속하고 안정적인 전달을 위해 알고 있는 모든 경로에서 지속적으로 균형을 잡으려고 하며, 이를 혼잡 제어라고 한다.

  때로는 같은 메시지를 패킷으로 쪼개 다른 네트워크를 통해서 전해지는 경우가 있다. 이것은 일부 응용프로그램에서 패킷의 순서가 다르게 도착할 수 있는 문제점이 있다. IP 위에서 이 문제를 다루는 TCP/IP와 같은 프로토콜이 있다.(이 주제는 다음 내용에서 다루겠다.) 작은 패킷으로 데이터를 자르고 여유 용량이 있는 유연한 경로를 따라 전달하는 것은 매우 효육적이며 내결함성이 뛰어나다. 오늘날 전체 인터넷이 작동하는 방식이다. 이러한 라우팅 방식을 패킷 스위칭(Packet Switching)이라고 한다. 이는 또한 중앙 권한이나 단일 장애 지점이 없는 분산된 자산을 가지고 있다. 이것은 사실 핵 공격의 위협에 대비하기 위해서 냉전 동안 패킷 교환이 개발될 수 있었던 이유이다.

 

  오늘날 전세계 라우터는 효율적인 패킷 전송과 정보 교환을 위해 협력한다. 여기에는 특수 프로토콜인 Internet Control Message Protocol (ICMP) 및 Border Gateway Protocol (BGP)를 쓴다. 세계 최초의 패킷 교환망이자 현대 인터넷의 조상은 미국 고등연구계획국(ARPA; Advanced Research Projects Agency)의 이름을 딴 ARPANET이다.

  1974년 ARPANET의 전체 모습은 다음과 같다.

  각 작은 원은 대학이나 연구실처럼 라우터를 운영하는 위치이다. 이 라우터들은 하나 이상의 컴퓨터를 연결했다. PDP-1, IBM System 360들, 심지어 런던의 ATLA까지 위성 경로를 통해 연결되어 있음을 볼 수 있다.

 

  분명히 인터넷은 그 이후로 수 십년 동안 순조롭게 성장해 왔다. 오늘날 온라인의 약 100억 정도의 컴퓨터가 연결된 것으로 추산된다. 또한 Wi-Fi가 연결된 냉장고 및 기타 스마트 가전 제품의 출현으로 사물인터넷(IoT; Internet of Things)을 형성하면서 특히 빠르게 성장하고 있다. 여기까지 컴퓨터 네트워크의 개요를 마치겠다.

728x90
반응형

'컴퓨터공학 > 기초' 카테고리의 다른 글

사이버 보안  (0) 2022.11.06
월드 와이드 웹( WWW ; World Wide Web)  (0) 2022.10.30
3D 그래픽  (0) 2022.10.02
그래픽 유저 인터페이스(GUI)  (0) 2022.09.24
화면 및 2D 그래픽  (0) 2022.09.18

댓글