1일 1커밋🌱

8 분 소요

1. 블랙박스

블랙박스란 기능은 알고 있지만 작동원리는 복잡해서 감춰져 있는 시스템을 말한다. 사용자는 입력에 대해서 출력이 어떤지 예측할 수는 있지만 어떻게 동작하는지는 관심이 없는 시스템이다. 복잡한 시스템은 많은 블랙박스로 구성되어 있다. 예를 들어 운영체제는 마우스 입력을 담당하는 드라이버라는 블랙박스와 파일을 관리하는 파일 시스템이라는 블랙박스가 존재한다. 이렇듯 하나의 블랙박스는 수많은 블랙박스가 조합되어 존재할 수도 있다. 우리는 블랙박스 덕분에 복잡한 문제를 분할정복으로 접근해 비교적 쉽게 해결할 수 있다. 컴퓨터 네트워크 또한 상당히 복잡하지만 수많은 블랙박스가 존재한다. 컴퓨터 네트워크를 쉽게 이해하기 위해서는 먼저 이 블랙박스들이 어떻게 맞물려서 동작하는지 알아보고 하나의 블랙박스는 어떻게 구성되는지 알아보면 된다.

2. 프로토콜(Protocol)

통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 통신 프로토콜은 신호 체계, 인증 그리고 오류 감지 및 수정 기능을 포함할 수 있다. 프로토콜은 형식, 의미론, 그리고 통신의 동기 과정 등을 정의하기는 하지만 구현되는 방법은 독립적이다. 이때문에 프로토콜은 하드웨어 또는 소프트웨어 그리고 때로는 모두를 사용하여 구현되기도 한다.

참고 : https://ko.wikipedia.org/wiki/통신_프로토콜

3. 네트워크의 역사

컴퓨터 시스템 개발자들은 CPU 사용률과 비용 절감을 하고자 하는 목적을 가지고 컴퓨터와 운영체제를 발전시켜왔다. 컴퓨터 네트워크 또한 컴퓨터, 운영체제와 함께 발전해왔다. 운영체제 개발자들은 시분할 시스템과 여러 사용자가 CPU를 같이 사용할 수 있게 함으로써 CPU의 사용률을 높였다. 그러나 여기에 만족하지 않고 여러 컴퓨터가 서로 데이터를 공유하면 더 효과적으로 작업할 수 있다는 아이디어를 생각하게 된다.

냉전시대의 미국은 소련에게 기술이 밀리지 않기 위해 ARPA(Advanced Research Project Agency)를 설립했다. 만약 대규모 컴퓨터 네트워크를 만든다면 연구 내용을 공유하기도 쉽고 중복된 연구를 하느라 인력 낭비할 일이 없어질 것이라고 생각했다. 그래서 1962년 ARPA의 J.C.R. Licklider는 수 천대, 수 만대의 컴퓨터가 연결되는 ‘은하계 네트워크’를 제안했다. 이렇게 계획한 대규모 컴퓨터 네트워크를 제안했다. 이렇게 계획한 대규모 컴퓨터 네트워크는 ARPAnet이라는 이름이 붙는다. ARPAnet에서는 오늘날의 라우터에 해당하는 IMP(Interface Message Processor)라는 장치를 전화선으로 연결하고 IMP와 사용자를 연결하는 방식을 구상했다.

1969년 UCLA(캘리포니아 대학교 로스앤젤러스)에서 SRI(스탠포드 연구소)로 최초의 패킷 교환 메시지를 보냈다. 1969년 말에는 UCSB(캘리포니아 대학교 센타바버라), UU(유타 대학교)까지 총 4개가 연결되었다. 다음해인 1970년도에는 이렇게 연결된 노드들을 제어하기 위한 Network Control Protocol(NCP)을 만들었다. 연결이 원하는 기관이 많아지자 ARPANet은 빠르게 커지기 시작했다. 하지만 NCP는 등록된 네트워크만 사용할 수 있었기 때문에 자율적인 확장이 쉽지 않아서 오늘날의 인터넷과는 거리가 멀었다.

1973년 Vint Cerf는 NCP의 단점을 해결할 프로토콜을 발표했고 이것이 오늘날의 인터넷 프로토콜인 TCP/IP이다. TCP/IP는 확장성이 좋았기 때문에 NCP의 비중은 점점 줄어들었고 TCP/IP의 비중은 점점 늘었다. 이렇게 TCP/IP의 사용이 폭발적으로 늘어나 ARPAnet은 공식적으로 TCP/IP를 통신 프로토콜로 채택했다. 또한 1985년에는 유닉스 운영체제에 TCP/IP가 기본적으로 내장되었고 이로써 TCP/IP는 현재 인터넷을 이루는 주류가 되었다.

4. TCP/IP 5계층, OSI 7계층

TCP/IP는 복잡한 네트워크를 다양한 제조사와 사람들이 쉽게 사용할 수 있도록 복잡한 네트워크를 계층으로 나눠서 블랙박스화 시킨 프로토콜이다.

network-introduction-1

TCP/IP는 5계층으로 나뉜다.

  • 첫번째 계층은 물리 계층이고 이 계층은 실제로 데이터를 물리적으로 전송해준다. 데이터를 전기신호로 변환하고 전기신호를 다시 데이터로 복원한다. 랜카드와 케이블만 있다면 두 컴퓨터가 통신이 가능해지는데 이는 물리 계층 덕분이다. 이 계층에서는 데이터를 전달만 할 뿐 어떻게 보내는 것이 효율적인지는 생각하지 않는다.
  • 두번째 계층은 데이터링크 계층이다. 여러 개의 기기가 연결되어 있더라도 MAC주소라는 고유한 주소로 기기를 잘 분류한다.
  • 세번째 계층은 네트워크 계층이다. 이 계층은 복잡하게 연결된 네트워크에서 IP주소를 이용해 출발지부터 목적지까지 정확히 데이터를 보내는 계층이다.
  • 네번째 계층은 트랜스포트 계층이다. 이 계층은 두 컴퓨터 사이에 신뢰성 있는 데이터 전송을 보장하고 포트를 이용해 사용자의 특정 애플리케이션으로 정확하게 전달한다. 트랜스포트 계층은 네트워크 계층 위에서 동작하기 때문에 두 컴퓨터 사이에 연결을 보장하는 일에만 집중할 수 있다.
  • 다섯번째 계층은 애플리케이션 계층이다. 이 계층은 사용자와 가장 가까운 계층이다. HTTP나 FTP, SSH 등 사용자가 직접 다루는 애플리케이션이 이 계층에 해당한다. 애플리케이션 계층은 트랜스포트 계층 위에서 동작하기 때문에 애플리케이션이 하는 일에만 집중할 수 있따. 신뢰성 있는 데이터 보장, 데이터 전송은 아래 계층들이 담당한다.

이렇게 계층화가 되어있기 때문에 사용자는 애플리케이션만 알고 있어도 프로그램을 만들 수 있따.

OSI 7 계층은 TCP/IP 5계층과 같은 네트워크를 위한 표준 프로토콜이다. 국제 표준화 기구인 IOS에서 만든 국제 표준 프로토콜이다. 하지만 현실세계에서 동작하는 인터넷은 OSI 모델로 이루어져 있지 않고 TCP/IP 모델로 이루어져 있다. 인터넷의 시작은 ARPAnet이었고 ARPAnet은 정식으로 TCP/IP를 채택했고 당시에는 많은 사용자가 유닉스 운영체제를 사용했는데, 이 운영체제에는 TCP/IP가 내장되어 있었다. 하지만 OSI 모델은 더 늦게 만들어진 국제 표준이기 때문에 이미 자리 잡은 TCP/IP를 밀어내기는 역부족이었다. 따라서 국제표준은 OSI 7 계층이지만 현업에서는 TCP/IP 계층이 사용되고 있는 것이다. TCP/IP 5계층 모델에서 애플리케이션 계층은 OSI 7 계층의 세션 계층, 프리젠테이션 계층, 애플리케이션을 하나로 표현하는 계층으로 볼 수 있다. 나머지 계층은 1:1로 매칭된다.

network-introduction-2

웹브라우저에서 웹서버로 데이터를 전송한다고 가정하자. 웹브라우저는 HTTP를 사용하기 때문에 웹서버로 전송할 HTTP 메시지가 만들어진다. 애플리케이션 계층은 이 데이터를 트랜스포트 계층으로 보낸다. 트랜스포트 계층에서는 애플리케이션에서 받은 데이터에 트랜스포트의 계층의 약속을 나타내는 헤더를 맨 앞에 덧붙인다. 이렇게 애플리케이션의 데이터와 트랜스포트의 헤더가 합쳐진 전체 데이터를 데이터그램 혹은 세그먼트라 부른다. 이제 이 데이터그램을 네트워크 계층으로 보낸다. 네트워크 계층에선 트랜스포트 계층에서 받은 데이터그램(세그먼트)을 데이터로 취급한다. 여기서 데이터에 네트워크 계층의 약속을 나타내는 헤더를 덧붙인다. 이렇게 트랜스포트 계층의 데이터그램과 네트워크 계층의 헤더가 합쳐진 전체 데이터를 패킷이라고 부른다. 그리고 이 패킷을 데이터링크 계층으로 보낸다. 데이터링크 계층에서는 네트워크 계층에서 받은 패킷에 데이터링크 계층의 약속을 나타내는 헤더와 트레일러를 붙인다. 이렇게 네트워크 계층의 패킷과 네트워크 계층의 헤더가 합쳐진 전체 데이터를 프레임이라고 부른다. 그리고 이 프레임을 물리 계층으로 보낸다. 물리 계층에서는 데이터링크 계층으로부터 받은 프레임을 전기신호로 바꾸서 물리적으로 전송한다.

5. 서버와 클라이언트

서버(Server)는 어떤 서비스를 제공하는 사람 또는 기계를 말하고 클라이언트(Client)는 어떤 서비스를 요구하는 사람 또는 기계를 말한다. 파일을 제공하는 컴퓨터를 파일 서버라고 부르고 파일을 요청하는 컴퓨터를 파일 클라이언트라고 부른다. 마찬가지로 웹 서비스를 제공하는 컴퓨터를 웹 서버라고 부르고 웹 서비스를 요청하는 컴퓨터를 웹 클라이언트라고 부른다. 서버와 클라이언트는 하드웨어 크기로 분류되지 않지만 일반적으로 많은 클라이언트의 요청을 받기 때문에 성능이 중요해 하드웨어의 크기가 커지는 것이 일반적이다. 서버와 클라이언트를 나누는 기준은 하드웨어의 크기가 아니라 “누가 요청을 하고 누가 응답을 하는가”이다.

6. 구글을 검색하면 어떤 일이 일어날까?

구글을 검색하면 물리적으로 어떤 흐름을 거치는지 알아보자. 웹브라우저에 google.com을 입력한다는 것은 구글의 웹서버에 웹페이지를 요청하는 것이다. 웹페이지 요청 데이터는 랜선이나 전파를 통해 방에 있는 공유기(라우터)로 이동한다. 이 공유기는 통신사에서 설치한 모뎀에 연결된다. 각 방에 있는 LAN 포트와 유무선 공유기는 ISP(Internet Service Provider), 즉 통신사에서 설치한 모뎀으로 연결된다. 세대통신단자함이 벽을 통해 각 방의 LAN 포트와 연결되어 있는 구조 덕분에 노트북을 방에 있는 LAN 포트와 직접 연결하거나 공유기에 랜선을 연결하거나 와이파이를 이용해 인터넷을 이용할 수 있다.

그럼 통신사에서 세대통신단자함에 설치한 모뎀은 어디로 연결되는 것일까? 벽면에 있는 세대통신단자함은 각 층의 중간배선반으로 연결되어 있고 중간배선반은 주배선반에 연결된다. 주배선반에는 아파트의 모든 케이블이 모여있다. 이 주배선반은 ISP로 연결된다. ISP들은 속도가 아주 빠른 광케이블을 이용해 인터넷을 만든다. 이 부분을 백본 또는 코어라고 부른다. 한국에 있는 ISP는 2티어 ISP로 분류된다. 1티어 ISP는 미국의 큰 통신사들을 말한다. 한국의 2티어 ISP는 미국의 1티어 ISP에게 일정 금액을 내고 연결한다. 한국 ISP를 통해 미국의 ISP로 전달된 데이터는 미국의 ISP와 연결된 구글의 웹서버에 요청 데이터를 전달한다. 그럼 구글의 웹서버는 웹페이지를 보내달라는 요청에 응답해 웹페이지 데이터를 나의 컴퓨터로 전송한다.

그러나 이렇게 데이터가 이동하는 과정에서는 수많은 프로토콜을 조합해서 데이터 전송이 이루어진다.

7. 네트워크 토폴로지

네트워크의 노드들이 연결되는 형태에 따라 여러 토폴로지로 구분할 수 있다. 여기서 노드란 네트워크에 연결된 장비를 말한다. 토폴로지는 버스형, 스타형, 링형, 트리형, 메쉬형으로 다섯 가지로 구분할 수 있다.

network-introduction-3

  • 버스 토폴로지는 하나의 중앙 통신 회선에 여러 대의 노드를 연결하는 형태이다.
    • 장점 : 새로운 노드의 추가, 제거가 간단하고 특정 노드에 장애가 발생하더라도 다른 노드에 영향을 주지 않는 것이다.
    • 단점 : 중앙 통신 회선을 공유하기 때문에 트래픽이 증가하면 충돌이 발생해 성능이 떨어진다는 것이다.
  • 스타 토폴로지는 중앙 노드를 중심으로 다른 노드가 연결되는 형태이다.
    • 장점 : 문제가 생겼을 때 발견하기 쉽고 관리가 편하다. 만약 모든 노드가 동작하지 않는다면 중앙 노드가 고장났다고 추측할 수 있고 하나의 노드가 동작하지 않으면 해당 노드가 고장났다고 추측할 수 있다.
    • 단점 : 중앙 노드에 문제가 발생하면 전체 네트워크가 다운된다.
  • 링 토폴로지는 좌우 인접한 노드와 연결되어 원형을 이루는 형태이다.
    • 장점 : 하나의 노드에서 다른 하나의 노드로만 데이터를 전송할 수 있으므로 충돌할 위험이 거의 없다.
    • 단점 : 하나의 노드에 문제가 발생하면 전체 네트워크에 문제가 생길 수 있다는 것과 노드를 제거하거나 새로운 노드를 추가하기 힘들다.
  • 트리 토폴로지는 트리 자료구조의 형태로 부모-자식 관계를 가지고 있는 형태이다.
    • 장점 : 새로운 노드의 추가와 기존 노드의 제거가 쉽다. 부모-자식 관계를 가지고 있어서 네트워크 장애를 해결하는 것도 어렵지 않다.
    • 단점 : 루트노드에 문제가 생기면 전체 네트워크가 다운될 수 있고 특정 노드에 트래픽이 집중되면 네트워크의 속도가 떨어질 수 있다.
  • 매쉬 토폴로지는 모든 노드가 직접 연결되는 형태이다.
    • 장점 : 특정 노드에 문제가 발생하더라도 전체 네트워크에는 이상이 없다.
    • 단점 : 모든 노드를 연결해야 하므로 케이블이 많이 필요해 비용이 많이 든다.

메쉬 토폴로지로 이 세상 모든 노드를 연결한다면 아주 빠르고 안정적인 네트워크를 만들 수 있지만 이 세상 모든 노드를 연결한다는 것은 비용이 어마어마하게 들기에 현실적으로 불가능하다. 따라서 용도와 비용을 계산해서 적절한 토폴로지를 혼합해 사용한다.

8. 유니캐스트, 브로드캐스트, 멀티캐스트, 애니캐스트

네트워크의 통신 방식은 유니캐스트, 브로드캐스트, 멀티캐스트, 애니캐스트로 총 4가지로 나누니다.

  • 유니캐스트
    • 노드끼리 1:1로 통신하는 방식이다.
    • 노드들은 각자 고유한 주소를 가지고 있는데 데이터를 전송할 때 목적지 주소를 적어서 연결된 모든 노드로 전송하고 각 노드는 랜카드에서 이 데이터의 목적지 주소가 자기 주소와 같은지 확인해 자신에게 온 데이터이면 수신, 자신에게 온 데이터가 아니면 버린다.
    • 주소를 확인하는 작업은 랜카드가 처리하므로 CPU에 부담을 주지 않는 방식이다.
    • 가장 많이 사용하는 통신 방식이다.
  • 브로드캐스트
    • 연결된 모든 노드에게 데이터를 전송하는 방식이다.
    • 연결된 모든 노드는 일단 데이터를 수신하고 랜카드가 인터럽트를 발생시켜 CPU에서 이 데이터를 처리할지 말지 결정한다. 따라서 CPU에 부하를 주게 된다.
    • 일반적으로 ARP라는 주소 결정 프로토콜을 사용할 때 발생한다.
  • 멀티캐스트
    • 1:N으로 데이터를 전송하는 방식으로 특정 그룹에게 데이터를 전송한다.
    • 네트워크에 10개의 노드가 연결되어 있다고 가정하고 출발지에서 주소 2에서 주소 8까지 7개의 노드에만 데이터를 보낸다고 하자. 만약 유니캐스트를 이용한다면 먼저 목적지 주소를 2로 설정하고 모든 노드로 데이터를 전송한다. 그러면 주소 2인 노드만 데이터를 받고 나머지 8개의 노드는 버린다. 주소 3, 주소 4, 주소 5, 주소 6, 주소 7, 주소 8로 총 6번 더 보내야 한다. 유니캐스트는 이렇게 데이터를 전송할 노드가 많아지면 출발지에서 데이터를 여러번 보내야 하고 모든 노드의 트래픽이 증가하는 문제가 발생한다. 브로드캐스트를 이용하면 출발지에서 모든 노드로 한 번의 전송만 발생하지만 주소 9와 주소 10의 경우 CPU를 사용해 컴퓨터의 성능이 떨어질 수 있다. 그러나 멀티캐스트는 특정 그룹에게만 데이터를 전송할 수 있어 유니캐스트와 멀티캐스트의 단점을 보완하는 방식이다.
    • 멀티캐스트를 지원하는 장비가 있어야만 동작할 수 있다는 단점이 있다.
  • 애니캐스트
    • 네트워크에 연결된 노드 중 가장 가까운 노드에만 전송하는 방식이다.
    • 이 방식은 IPv4가 아닌 IPv6에서 사용되는 방식으로 브로드캐스트의 단점을 보완하기 위해 등장했다.

9. 단방향, 반이중, 전이중 통신

전송 방식에 따라 통신 종류는 단방향(Simplex), 반이중(Half Duplex), 전이중(Full Duplex) 3가지로 구분할 수 있다.

  • 첫번째로 단방향 통신이다. 단방향 통신은 데이터의 흐름이 한 방향으로만 정해져 있는 통신이다. 송신측에서는 송신만 가능하고 수신측에서는 수신만 가능하다. 대표적으로 TV와 라디오가 있다.
  • 두번째는 반이중 통신이다. 반이중 통신은 양방향으로 통신은 가능하지만 송신을 할 때는 수신을 할 수 없고 수신을 할 때는 송신을 할 수 없는 통신이다. 대표적으로 무전기가 있다.
  • 세번째는 전이중 통신이다. 송신과 수신을 동시에 하는 양방향 통신이다. 대표적으로 전화기가 있다.

참고

카테고리:

업데이트:

댓글남기기