본문 바로가기

CS/네트워크

(1) 쉽게 배우는 데이터 통신과 컴퓨터 네트워크

 

쉽게 배우는 데이터 통신과 네트워크 개인적으로 정리한 내용입니다.



네트워크 관련 기초 용어

1. 네트워크(Network) : 전송매체를 매개로 서로 연결되어 데이터를 교환하는 시스템(System)의 모음

2. 인터페이스(Interface) : 시스템(System)과 전송매체의 연결 지점에 대한 규격입니다. 시스템과 시스템을 연결하기 위한 표준화된 접근 방법을 의미합니다.

3. 프로토콜(Protocol) : 시스템(System)이 데이터를 교환하는 임의의 통신 규칙, 표준화된 특정 규칙을 뜻합니다.

4. 시스템(System) : 내부 규칙에 따라 능동적으로 동작하는 대상을 가리킵니다. 물리적인 대상 뿐 아니라, 신호등 운영시스템, MS 윈도우즈 등의 운영체제, 프로그램의 실행상태를 의미하는 프로세스 같은 논리적인 대상

5. 인터네트워킹(Internetworking) : 네트워크와 네트워크를 연결하는 것입니다. 

6. 게이트웨이(GateWay) : 인터네트워킹 기능을 수행하는 시스템을 일반적으로 게이트웨이라고 합니다.

  • 리피터(Repeater) : 물리 계층의 기능을 지원합니다. 한쪽에서 입력된 신호를 물리적으로 단순히 증폭하여 다른 쪽으로 중개하는 역할을 합니다.
  • 브리지(Bridge) : 리피터 기능에 데이터 링크 계층의 기능이 추가된 것으로 물리 계층에서 발생한 오류를 해결해줍니다.
  • 라우터(Router) : 물리계층, 데이터 링크 계층, 네트워크 계층의 기능을 제공합니다. 네트워크 계층은 경로 선택 기능을 제공합니다. 이뜻은 임의의 네트워크에서 어느 네트워크로 전달할지 판단할 수 있어야 한다는 뜻입니다. 이를 위해서 라우터는 자신과 연결된 네트워크와 호스트들의 정보를 유지하고, 관리하면서 특정 경로가 이용 가능한지 여부와 다수의 경로 중에서 어느 경로가 빠른지 판단하며, 라우팅 테이블(Routing Table)에 저장됩니다.
    • 헤더 정보의 값을 해석하여 변환하는 작업은 라우터의 주요 기능입니다. 계층을 지날때!

7. DNS(Domain Name Sytem) : 주소 변환 기능, 주소와 이름 정보를 자동으로 유지하고 관리하는 분산 데이터베이스 시스템입니다. 호스트 주소와 이름 정보는 네임 서버라는 특정한 관리 호스트가 유지하고, 주소 변환 작업이 필요한 클라이언트는 네임 서버에 요청해서 IP주소를 얻습니다.

8. 브로트 캐스팅(Broad Casting) : 일대다 통신의 대표적인 유형, 네트워크에 연결된 모든 호스트에 데이터를 전송합니다.

  • 공유 전송 매체 하나에 여러 호스트를 연결, 네트워크에 연결된 모든 호스트에 데이터가 전송
  • 별도의 교환기능이 필요없으며, 자신을 목적지로 하지 않은 데이터를 받은 호스트는 받은 데이터를 버림
  • 하나의 목적지 호스트만 데이터를 수신하도록 설계
  • LAN과 같은 가까운 호스트 사이의 통신에서 사용
  • 호스트의 수가 많을수록 네트워크 트래픽이 급격히 증가하는 단점이 있음

9. 멀티 캐스팅(Multi Casting) : 특정 사용자를 그룹으로 묶어서 지칭합니다.

10. 점대점 방식(Point To Point) : 교환 호스트가 송수신 호스트의 중간에 위치한다.  

  • 호스트 간의 데이터 전달 과정에서 송신 호스트가 중개 호스트와 일대일로 연결되므로 다른 호스트에는 데이터가 전달되지 않음
  • WAN 환경에서 주로 사용함

시스템의 구분

1. 노드(Node) : 인터넷에 연결된 시스템을 가장 일반화한 용어 입니다.

2. 호스트(Host) : 일반적으로 컴퓨팅 기능이 있는 시스템을 의미합니다.

3. 클라이언트(Client) : 서비스를 이용하는 시스템을 의미합니다. 이용하는 서비스의 종류에 따라서 클라이언트가 될 수도 있고, 서버가 될 수도 있습니다. 그러므로 특정 서비스를 기준으로 상대적인 관점에서 클라이언트와 서버라는 용어를 사용합니다.

4. 서버(Server) : 임의의 서비스를 제공하는 시스템을 의미합니다. 일반적으로 서버는 클라이언트보다 먼저 실행 상태가 되어 클라이언트의 요청에 대기해야 합니다. 영원히 종료하지 않으며 클라이언트의 요청이 있을때 마다 서비스를 반복해서 제공합니다.


OSI 7계층 모델

네트워크에 연결된 호스트들은 7개의 계층으로 모듈화된 통신 기능을 갖춥니다. 일반 사용자는 OSI 7계층 맨 위에 있는 응용 계층을 통해 데이터의 송수신을 요청하며, 이 요청은 하위 계층에 순차적으로 전달되어 맨 아래에 있는 물리 계층을 통해 상대 호스트에 전송됩니다. 그리고 요청이 각 계층으로 하달되는 과정에서 계층별로 자신이 담당하는 기능을 수행해 데이터를 안전하게 전달해줍니다.

반대로, 데이터를 수신하는 호스트에서는 송신 호스트와는 반대 반향으로 처리가 이루어 집니다.

  • 전송 데이터는 송신 호스트의 응용 계층에서 시작, 하위 계층으로 순차적으로 전달하여 최종적으로 물리 계층에서 수신 호스트에 전달
    • 하위 계층으로 내려갈 때는 각 계층의 프로토콜에서 정의한 헤더 정보가 추가되는데 물리계층을 제외한 모든 계층에서 헤더 정보가 추가된다.
  • 수신 호스트에서는 데이터를 상위 계층으로 순차적으로 이동시켜 응용 계층까지 보내줌
    • 데이터를 수신하는 호스트에서는 반대로 상위 계층으로 올라가며 순차적으로 헤더 정보를 제거하고 해석

물리계층(Physical) : 호스트를 전송 매체와 연결하기 위한 인터페이스 규칙과 전송 매체의 특성을 다룹니다.

  • 개별 정보의 비트 교환 문제를 다룸
  • 물리 계층은 하드웨어 시스템으로 구현되어 있음
  • 데이터의 전송 속도, 송수신 호스트 사이의 클록 동기화 방법, 물리적 연결 형태가 있음

데이터 링크(Data Link) : 물리적 전송 오류를 감지하는 기능을 제공해 송수신 호스트가 오류를 인지할 수 있도록 해줍니다. 대표적인 물리적 오류로는 데이터가 도착하지 못하는 데이터 분실과 내용이 깨져서 도착하는 데이터 변형이 있습니다. 일반적으로 컴퓨터 네트워크에서 오류 제어는 송신자가 원래의 데이터를 재전송하는 방식으로 처리합니다.

  • 물리계층을 통해 전송되는 데이터의 물리적 전송 오류를 해결
  • 상위의 네트워크 계층에 신뢰성 있는 패킷 전송을 보장, 전송 오류 부담을 해결
  • 전송 경로를 선택할 수 없으므로 두 호스트가 일대일로 직접 연결된 환경에서만 데이터 전송 지원
  • 데이터 링크 계층을 이용해 전송되는 데이터를 프레임(Frame)이라고 한다.
  • 프레임 헤더에 표시되는 송수신 호스트 정보는 LAN 카드에 내장된 송수신 호스트의 MAC 주소 기록
  • 흐름 제어 기능도 지원함

네트워크 계층(Network) : 데이터가 올바른 경로를 선택할 수 있도록 지원하는 계층입니다. 중개 시스템의 기능은 일반적으로 라우터가 수행합니다. 네트워크 부하가 증가하면 특정 지역에 혼잡이 발생할 수 있어, 혼잡제어(Congestion Control)도 데이터의 전송 경로와 관계되므로 네트워크 계층이 담당합니다.

  • 라우팅 문제 처리
  • 전달 경로 방식은 정적(Static), 동적(Dynamic) 방식이 있음
  • 전송 데이터를 패킷(Packet)이라고 부름, 중개 과정에서 경로 선택의 기준이 되는 호스트 주소가 필요함
  • IP 프로토콜이 네트워크 계층의 기능을 수행, 호스트의 IP주소가 경로 선택에 중요한 기준이 됨
  • 네트워크를 이용해 전송되는 패킷이 지나치게 많으면 전송 속도가 저하됨
  • 네트워크의 트래픽이 과도하게 증가하는 문제를 조절하는 혼잡 제어(Congestion Control)기능도 담당

전송 계층(Transmission) : 데이터를 교환하는 최종 주체는 호스트 시스템이 아니고, 호스트 내부에서 실행되는 네트워크 프로세스 입니다. 전송 계층은 송신 프로세스와 수신 프로세스간의 연결 기능을 제공합니다. 그렇기 때문에 프로세스 사이의 안전한 데이터 전송을 지원합니다. 

  • 송신 프로세스와 수신 프로세스를 직접 연결하는 단대단(End-to-End) 통신 기능을 제공
  • 전송 계층 아래에 있는 하위 계층은 호스트와 호스트 사이의 데이터 전송 과정에서 발생하는 문제만 반영
  • 전송 계층은 컴퓨터 내부에서 논리적으로 구축되는 통신 당사자인 프로세스 사이의 통신 문제를 다룸 

세션 계층(Session) : 응용 환경에서 사용자간의 대화 개념의 연결로 사용되기 때문에 전송 계층의 연결과 구분됩니다.

  • 토큰 제어
  • 동기 기능을 제공

표현 계층(Presentation) : 전송되는 데이터의 의미를 잃지 않도록 올바르게 표현하는 방법을 다룹니다.

응용 계층(Application) : 사용자를 위한 다양한 네트워크 응용 환경을 지원합니다.


주소의 이름들

1. IP(Internet Protocol) 주소 : IP는 호스트를 구분하기 위해 사용합니다. 패킷의 경로를 결정하는데 중요한 역할을 합니다.

2. MAC 주소 : LAN Card를 구별하기 위해서 사용합니다. 데이터링크 계층의 MAC 계층에서 사용합니다. 물리 계층을 통해 데이터를 전송할 때는 MAC 주소를 이용해 호스트를 구분하고, 따라서 네트워크 계층에서 데이터 링크 계층으로 데이터를 전송할 때는 IP 주소를 MAC 주소로 변경을 해야 합니다.

3. Port 주소 : TCP에서 호스트마다 수행합니다. 전송 계층에서 사용하며, 호스트에서 실행되는 프로세스를 구분해줍니다. TCP와 UDP가 독립적으로 포트 주소를 관리하며, 포트 번호 또는 소켓 주소라는 용어를 사용합니다.


전송 오류들에 대해서

물리적인 전송 오류

  • 물리 계층의 전송 매체에 의한 물리적인 오류이며, 이를 해결하기 위해 데이터 링크 계층이 물리적인 전송 오류를 해결합니다.

논리적인 전송 오류 

  • 데이터가 수신 호스트에 도착하지 못하는 데이터 분실 오류
    • 수신 호스트는 데이터가 분실됐다는 사실을 감지하기 힘들기 때문에, 송신 호스트에서 오류를 감지하는 방법을 사용합니다.
  • 데이터의 내용이 변경되어 도착하는 데이터 변형 오류
    • 수신 호스트가 여러 방식의 오류 검출 기법을 이용해 오류를 검출할 수 잇습니다. 네트워크에서 전송 오류를 해결하는 일반적인 방법은 재전송을 하는 것입니다. 또한, 수신 호스트에서 도착 순서를 바로 잡기 위해 데이터의 논리적인 순서를 의미하는 순서 번호 기능이 있습니다.

흐름제어

송수신 호스트 사이의 데이터 전송/처리 속도 차이 때문에 발생합니다. 수신 호스트에 데이터가 도착하지 못하면 일단 내부 버퍼에 보관했다가 처리합니다. 그런데 내부 버퍼에 보관할 공간을 확보하지 못하면 데이터를 논리적으로 분실하는 결과가 초래합니다.

  • 수신 호스트의 버퍼 처리 속도보다 송신 호스트가 데이터를 전송하는 속도가 빠를때 사용하는 기법
  • 수신 호스트의 제어에 의해 이루어짐

TCP/IP 구조

TCP(Transmission Control Protocol) : 

UDP(User Datagram Protocol) : 

IP(Internet Protocol) : 

ARP(Address Resolution Protocol) : 인터넷에서 통신하기 위해 자신의 로컬 IP 주소와 MAC 주소, 원격 호스트의 IP 주소와 MAC 주소가 필요합니다. ARP는 원격 호스트의 주소 변환 기능을 제공하는데, 사용자가 입력한 IP 주소를 이용해 MAC 주소를 제공하는 프로토콜입니다.

RARP(Reverse Address Resolution Protocol) : 로컬 호스트의 주소 변환 기능을 제공, LAN 카드에 보관된 MAC 주소를 이용해 IP 주소를 제공하는 프로토콜입니다. 일반 컴퓨터 시스템은 로컬 호스트의 IP 주소가 파일 시스템에 보관되므로 RARP를 사용하지 않지만, 디스크가 장착되지 않은 시스템에서는 RARP를 사용해야합니다.

ICMP(Internet Control Message Protocol) : 사용자 데이터의 전송 과정에서 오류가 발생하면 오류 메시지가 생성되는데, 이를 전송하는 기능을 담당하는 프로토콜입니다.


교환 시스템

네트워크 양단에 연결된 호스트들이 전송하는 패킷은 전송 경로 중간에 위치한 교환 시스템을 거칩니다. 교환 시스템은 데이터를 최종 목적지까지 올바른 경로로 중개하는 교환 기능을 제공합니다.

회선교환(Circuit Switching)

고정 대역으로 할당된 연결을 설정해 데이터 전송을 시작합니다. 따라서 회선에 할당된 고정 크기의 안정적인 전송률로 데이터를 전송할 수 있으며, 연결이 유지되는 동안에는 다른 연결에서 이 대역을 사용할 수 없습니다. 또한, 데이터의 전송 경로가 연결 설정 과정에서 확정되므로 라우팅 등의 작업이 상대적으로 쉽습니다.

  • 호스트가 데이터를 전송하기 전에 연결 경로를 미리 설정하는 방식
  • 데이터가 같은 경로로 전달
  • 고정 대역의 논리적인 전송 선로를 전용으로 할당 받아, 안정적인 데이터 전송률을 지원

패킷 교환(Packet Switching)

컴퓨터 네트워크 환경에서 주로 이용합니다. 데이터를 미리 패킷 단위로 나누어 전송하므로 패킷을 기준으로 교환 작업이 이루어집니다. 데이터 전송을 위한 전용 대역을 따로 할당하지 않아 가변 크기의 전송률을 지원합니다. 패킷 교환에서는 모든 패킷의 경로를 일정하게 유지시키는 가상회선(Virtual Circuit) 방식과 패킷들이 각각의 경로로 전송되는 데이터 그램(Datagram) 방식이 있습니다.

  • 전송 대역의 효율적 이용
    • 동적인 방식으로 전송 대역을 공유, 전송 선로의 이용 효율을 극대화할 수 있음
    • 하지만, 회선 교환에서는 호스트간 연결시 전송 대역을 전용으로 할당하기 때문에 해당 호스트들이 데이터를 전송하지 않아도 다른 호스트는 전송 대역을 이용할 수 없음, 결과적으로 회선 교환 시스템은 전송 선로 이용 면에서 비효율적
  • 호스트의 무제한 수용
    • 회선 교환 방식에서는 고정 대역을 할당하므로 전송 대역이 부족하면 새로운 연결 설정 요청을 수용 못함
    • 모든 회선 연결에 할당된 대역의 합이 전체 네트워크 전송용량을 초과할 수 없음
    • 하지만, 패킷 교환에서는 전송대역이 부족할 일이 없음
    • 고정 대역을 할당하지 않으므로 이론상 무제한 사용할 수 있고, 문제는 네트워크 혼잡도가 높아질뿐이다.
  • 패킷에 우선순위 부여
    • 전송 작업이 패킷단위로 이루어져 패킷에 우선순위를 부여하기 편리함
    • 먼저 전송할 패킷과 나중에 전송해도 되는 패킷으로 구분해 선택적으로 우선순위를 부여가능
  • 패킷 교환의 단점
    • 전송 패킷을 라우터의 내부 버퍼에 보관하는 과정에서 지연이 발생
    • 여러 종류의 대기 큐를 거치는 과정에서 가변 지연이 발생
    • 전송 패킷이 독립적인 경로로 전달, 패킷마다 전송에 걸리는 시간이 일정하지 않을 가능성이 있음
    • 패킷별로 지연되는 정도를 나타내는 지연 분포의 형태도 가변적인데, 이 분포를 지터라고 함
  • 가상회선(Virtual Circuit)
    • 연결형 서비스 지원, 연결을 통해 전송되는 모든 패킷의 경로가 동일
    • 모든 패킷이 하나의 파이프로 표현되는 동일 경로로 전송, 패킷이 도착하는 순서가 보낸 순서와 같음
    • 패킷 교환 방식을 기반으로 함, 회선 교환 방식과의 차이점
  • 데이터그램(Datagram)
    • 비연결형 서비스를 이용해 패킷을 독립적으로 전송하는 것
    • 패킷을 송신하기 전에 연결을 설정하는 과정이 없으므로, 미리 경로를 할당하지 않음
    • 패킷들이 독립적인 경로로 전달됨
    • 전송할 정보의 양이 적거나, 신뢰성이 중요하지 않은 환경에서 사용됨
    • 도착 순서가 바뀌는 일은 흔하게 벌어지는 일 

메시지 교환(Message Switching)

데이터를 전송하기 전에 경로를 미리 설정하지 않고, 대신 전송하는 메시지의 헤더마다 목적지 주소를 표시하는 방식입니다. 중간 교환 시스템은 이전 교환 시스템에서 보낸 젠체 메시지가 도착할 때까지 받은 메시지를 일시적으로 버퍼에 저장한다. 이후 모든 메시지가 도착하면 다음 교환 시스템으로 전달하는 방식을 사용합니다.

  • 메시지 전송이 교환기 단위로 이어짐
  • 송신 호스트가 전송하는 전체 데이터가 하나의 단위로 교환 처리
  • 교환 시스템에서 전송 데이터를 저장하는 기능 제공
  • 송신 호스트와 수신 호스트가 받은 시점이 반드시 일치하지 않아도 됨