혼자하는 네트워크 공부 #3

배석주·2022년 12월 26일
0

네트워크

목록 보기
3/11
post-thumbnail

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

네트워크에서 출발지에서 목적지로 데이터를 전송할 때 사용하는 통신 방식에는 유니캐스트(Unicast), 브로드캐스트(Broadcast), 멀티캐스트(Multicast), 애니캐스트(Anycast)가 있다.

유니캐스트

출발지와 목적지가 명확히 하나로 정해져 있는 1:1 통신 방식이다.

브로드캐스트

목적지 주소가 모든으로 표기되어 있는 통신 방식이다. 유니캐스트로 통신하기 전 상대방의 정확한 위치를 알기 위해 사용된다. 로컬 네트워크 내에서 모든 호스트에 패킷을 전달해야 할 때 사용된다.

멀티캐스트

멀티캐스트 그룹 주소를 이용해 해당 그룹에 속한 다수의 호스트로 패킷을 전송하기 위한 통신 방식이다. IPTV와 같은 실시간 방송을 볼 때 이 멀티캐스트 통신 방식을 사용하며 단방향으로 다수에게 동시에 같은 내용을 전달해야 할 때 사용한다.

애니캐스트

애니캐스트 주소가 같은 호스트들 중에서 가장 가깝거나 가장 효율적으로 서비스할 수 있는 호스트와 통신하는 방식이다.
4가지 통신 방식을 정리하면 다음과 같다.
타입통신 대상범위IPv4Ipv6예제
유니캐스트1:1전체 네트워크OOHTTP
브로드캐스트1:모든서브넷(로컬 네트워크)OXARP
멀티캐스트1:그룹정의된 구간OO방송
애니캐스트1:1전체 네트워크O6 to 4 DNS

MAC 주소(Media Access Control)

2계층에서 통신을 위해 네트워크 인터페이스에 할당된 고유 식별자이다. 네트워크에 접속하는 모든 장비는 MAC 주소라는 물리적인 주소가 있어야 하고 이 주소를 이용해 서로 통신하게 된다.

MAC 주소 체계

MAC 주소는 네트워크 구성 요소마다 다른 주소를 가지고 있다. MAC 주소는 48비트의 16진수 12자리로 표현된다. MAC 주소는 앞의 24비트와 뒤의 24비트로 나누어 구분하는데 앞의 24비트는 '제조사 코드'인 'OUI'값이고 뒤의 24비트이 값은 'UAA'로 각 제조사에서 자체적으로 할당하는 부분이다.

MAC 주소 동작

NIC은 자신의 MAC 주소를 가지고 있고 전기 신호가 들어오면 2계층에서 데이터 형태(패킷)로 변환하여 내용을 구분한 후 도착지 MAC 주소를 확인한다. 만약 도착지 MAC 주소가 자신이 갖고 있는 MAC 주소와 다르면 패킷을 폐기하고 패킷의 도착지 주소가 자기 자신이거나 그불 주소이면 패킷 정보를 상위 계층으로 넘겨준다.

IP 주소

IP 주소를 포함한 다른 프로토콜 스택의 3계층 주소는 다음과 같은 특징이 있다.
  • 사용자가 변경 가능한 논리 주소이다.
  • 주소에 레벨이 있다. 그불을 의미하는 네트워크 주소와 호스트 주소로 나뉜다.
  • IP 주소 체계

    우리가 흔히 사용하는 IP 주소는 32비트인 IPv4 주소이다. IPv4 주소를 표기할 때는 4개의 옥텟(Octet)이라 부르는 8비트 단위로 나누고 각 옥텟은 "."으로 구부한다. IP 주소는 10진수로 표기하므로 8비트 옥텟은 0~255의 값을 쓸 수 있다.
    IP 주소는 네트워크 주소와 호스트 주소 두 부분으로 나뉜다.
  • 네트워크 주소
  • 호스트들을 모은 네트워크를 지칭하는 주소. 네트워크 주소가 동일한 네트워크를 로컬 네트워크라고 한다.
  • 호스트 주소
  • 하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소
    IP 주소 체계는 필요한 호스트 IP 개수에 따라 네트워크의 크기를 다르게 할당할 수 있는 클래스(Class) 개념을 도입했다.
  • A 클래스 - 가장 큰 주소를 갖는데 약 1,600만 개의 IP 주소를 가질 수 있다.
  • B 클래스 - 약 6만 5천개의 IP 주소를 가질 수 있다.
  • C 클래스 - 약 250개의 IP 주소를 가질 수 있다.
  • 네트워크 주소와 호스트 주소를 나누는 구분자는 클래스(네트워크 크기)에 따라 변경된다.
    IP 주소가 도입한 클래스 개념은 다른 고정된 네트워크 주소 체계에 비해 주소를 절약할 수 있다는 장점이 있다.
    <클래스 구분법>

    클래스풀과 클래스리스

    클래스(Class) 기반의 IP 주소 체계를 클래스풀(Classful)이라고 부른다.

    클래스리스 네트워크의 등장

    인터넷이 상용화되면서 인터넷에 연결되는 호스트 숫자가 폭발적으로 증가하며 기하급수적으로 IP 주소 요구가 늘었다. 또한 네트워크 주소를 계층화하고 분할하기 위해 낭비되는 IP가 매우 많았다. IP 주소 부족과 낭비 문제를 해결하기 위해 3가지 보전,전환전력을 반들었는데 그 중 첫 번째 단기 대책은 클래스리스 기반의 주소 체계였다. 두 번쨰 중기 대책은 NAT와 사설 IP 주소, 세 번째 장기 대책은 IPv6이다.

    서브넷 마스크(Subnet Mask)

    클래스리스 네트워크에서는 별도로 네트워크와 호스트 주소를 나누는 구분자를 사용해야 하는데 이 구분자를 서브넷 마스크라고 부른다.
    <기본 서브넷 마스크>
    서브넷 마스크는 IP 주소와 네트워크 주소를 구분할 때 사용하는데 2진수 숫자 1인 네트워크 주소, 0은 호스트 주소로 표시한다.
    <2진수의 and 연산. IP 주소에서 네트워크 주소만 뽑아낼 때 사용>
    만약 103.9.32.146 주소에 255.255.255.0 서브넷 마스크를 사용하는 IP는 네트워크 주소가 103.9.32.0이고 호스트 주소는 0.0.0.146이 된다.

    서브네팅(Subnetting)

    새로운 네트워크-호스트 구분 기준을 사용자가 정해 원래 클래스풀 단위의 네트워크보다 더 쪼개 사용하는 것을 서브네팅이라고 한다. 실무에서 서브네팅에 대해 고민해야 하는 경우는 두 가지이다.
    1. 네트워크 디자인 단계에서 네트워크 설계자가 네트워크를 효율적으로 어떻게 분할할 것인지 계획하는 경우
    2. 이미 분할된 네트워크에서 사용자가 자신의 네트워크와 원격지 네트워크를 구분해야하는 경우
  • 네트워크 사용자 입장
  • 네트워크에서 사용할 수 있는 IP 범위 파악 / 기본 게이트웨이와 서브넷 마스크 설정이 제대로 되어 있는지 확인
  • 네트워크 설계자 입장
  • 네트워크 설계 시 네트워크 내에 필요한 단말을 고려한 네트워크 범위 설계
    서브넷 마스크로 네트워크 주소 범위와 호스트 주소 범위를 파악하는 방법에 대해서 따로 포스팅 해보도록 하겠다.

    공인 IP와 사설 IP

    인터넷에 접속하려면 IP 주소가 있어야 하고 이 IP는 전 세계에서 유일해야 하는 식별자이다 이런 IP 주소를 공인 IP라고 한다. 하지만 인터넷을 연결하지 않고 IP를 할당하는 경우를 사설 IP라고 한다. 사설 IP를 사용하면 인터넷에 직접 접속할 수 없지만 IP를 변환해주는 NAT에서 공인 IP로 변경 후에는 인터넷에 접속이 가능하다.

    TCP와 UDP

    4계층에서 동작하는 프로토콜은 목적지 단말 안에서 동작하는 여러 애플리케이션 프로세스 중 통신해야 할 목적지 프로세스를 정확히 찾아가고 패킷 순서가 바뀌지 않도록 잘 조합해 원래 데이터를 잘 만들어내기 위한 역할을 한다.

    4계층 프로토콜(TCP, UDP)과 서비스 포트

    데이터를 보내고 받는 인캡슐레이션, 디캡슐레이션 과정에 각 계층에서 정의하는 헤더가 추가되고 여러 가지 정보가 들어간다. 다양한 정보 중 가장 중요한 두 가지 정보는 각 계층에서 정의하는 정보상위 프로토콜 지시자 정보이다.
  • 각 계층을 정의하는 정보
  • 수신 측의 동일 계층에서 사용하기 위한 정보이다. 예를 들면 송신측에서 추가한 2계층 헤더의 MAC 주소 정보는 수신 측의 2계층에서 확인하고 사용된다. 마찬가지로 3계층 IP 주소는 수신 측 3계층에서 사용한다.
  • 상위 프로토콜 지시자 정보
  • 상위 프로토콜 지시자는 디캡슐레이션 과정에서 상위 계층의 프로토콜이나 프로세스를 정확히 찾아기기 위한 목적으로 사용된다. 2계층은 이더 타입, 3계층은 프로토콜 번호, 4계층은 포트번호가 상위 프로토콜 지시자이다.
    일반적으로 TCP/IP에서는 클라이언트-서버 방식으로 서비스를 제공하고 클라이언트용 프로그램과 서버용 프로그램을 구분해 개발한다. 2, 3계층과 달리 4계층 프로토콜 지시자인 포트 번호는 출발지와 목적지를 구분해 처리해야 한다.
    <클라이언트-서버 통신에 따른 포트 번호>

    TPC

    TCP 프로토콜은 신뢰할 수 없는 공용망에서도 정보유실 없는 통신을 보장하기 위해 세션을 안전하게 연결하고 데이터를 분할하고 분할된 패킷이 잘 전송되었는지 확인하는 기능이 있다.

    패킷 순서, 응답 번호

    TCP에서는 분할된 패킷을 잘 분할하고 수신 측이 잘 조합하도록 패킷에 순서를 주고 응답 버호를 부여한다.
  • 시퀀스 번호 - 패킷에 순서를 부여하는 것
  • ACK 번호 - 응답 번호를 부여하는 것
  • <패킷을 하나 보내고 이에 대한 응답을 받는다>
    보내는 쪽에서 패킷에 번호를 부여하고 받는 쪽은 이 번호의 순서가 맞는지 확인한다. 받은 패킷 번호가 맞으면 응답을 주는데 이때 다음 번호의 패킷을 요청한다.
    <시퀀스 번호, ACK 번호도 양방향으로 함께 동작한다>
    * ACK 번호는 받는 SEQ 번호 + 1
    ** 두 번 이상 보내는 SEQ 번호는 받은 ACK 번호
    *** 데이터가 포함되어 있는 경우 SEQ + 데이터 크기

    윈도 사이즈와 슬라이딩 윈도

  • 윈도 사이즈 - 한 번에 데이터를 받을 수 있는 데이터 크기
  • 슬라이딩 윈도 - 네트워크 상황에 따라 윈도 사이즈를 조절하는 것
  • TCP는 데이터 유실이 발생하면 윈도 사이즈를 절반으로 떨어뜨리고 정상적인 통신이 되는 경우, 서서히 하나씩 늘린다. 네트워크 경합이 발생해 패킷 드롭이 생기면 작아진 윈도 사이즈로 인해 데이터 통신 속도가 느려져 회선을 제대로 사용하지 못하는 상황이 발생할 수 있다. 경합을 피하기 위해 회선 속도를 증가시키거나 경합을 임시로 피하게 할 수 있는, 버퍼가 큰 네트워크 장비를 사용해 이러한 문제를 해결할 수 있다.

    3방향 핸드셰이크

    TCP 프로토콜은 데이터를 안전하게 보내고 받을 수 있는지 미리 확인하는 작업을 거친다. 패킷 네트워크에서는 동시에 많은 상대방과 통신하므로 정확한 통신을 위해서는 통신 전, 각 통신에 필요한 리소스를 미리 확보하는 작업이 중요하다. TCP에서는 3번의 패킷을 주고받으면서 통신을 서로 준비하므로 '3방향 핸드셰이크'라고 부른다.
    3방향 핸드셰이크 진행 상황에 따라 상태(state)정보를 부르는 이름이 다르다.
  • LISTEN 상태 : 서버가 서비스 제공을 위해 클라이언트의 접속을 받아들이도록 대기 상태
  • SYN-SENT 상태 : 클라이언트에서 통신을 시도할 때 Syn 패킷을 보내는 상태
  • SYN-RECEIVED 상태 : 서버가 클라이언트의 Syn 패킷을 받은 상태
  • ESTABLISHED 상태 : 서버와 클라이언트 간의 연결이 성공적으로 완료된 상태
  • 3방향 핸드셰이크 과정이 생기다보니 기존 통신과 새로운 통신을 구분해야 한다. 어떤 패킷이 새로운 연결 시도이고 기존 통신에 대한 응답인지 구분하기 위해 헤더에 플래그(Flag)값을 넣어서 통신한다.

  • SYN
    연결 시작용으로 사용한다. 연결이 시작될 때 SYN 플래그에 1로 표시해 보낸다.
  • ACK
    ACK 번호가 유효할 경우, 1로 표시해 보낸다. 초기 SYN이 아닌 모든 패킷은 기존 메시지에 대한 응답이므로 ACK 플래그가 1로 표기된다.
  • FIN
    연결 종료 시 1로 표시된다. 데이터 전송을 마친 후 정상적으로 양방향 종료 시 사용된다.
  • RST
    연결 종료 시 1로 표시된다. 연결 강제 종료를 위해 연결을 일방적으로 끊을 때 사용된다.
  • URG
    긴급 데이터인 경우, 1로 표시해 보낸다.
  • PSH
    서버 측에서 전송할 데이터가 없거나 데이터를 버퍼링 없이 응용 프로그램으로 즉시 전달할 것을 지시할 때 사용된다.
  • <3방향 핸드셰이크 과정>

    UDP

    UDP는 데이터 전송을 보장하지 않는 프로토콜이므로 제한된 용도로만 사용된다. 음성 데이터나 실시간 스트리밍과 같이 시간에 민감한 프로토콜이나 애플리케이션을 사용하는 경우 사내 방송이나 증권 시세 데이터 전송에 사용되는 멀티캐스트처럼 단방향으로 다수의 단말과 통신해 응답을 받기 어려운 환경에서 주로 사용된다.
    데이터를 전송하는 데 신뢰성보다 일부 데이터가 유실되더라도 시간에 맞추어 계속 전송하는 것이 중요한 화상회의 시스템과 같은 서비스인 경우 사용하며 UDP는 중간에 데이터가 일부 유실되더라도 그냥 유실된 상태로 데이터를 처리한다.
    <TCP와 UDP의 특징 비교>
    TCPUDP
    연결 지향비연결형
    오류 제어 수행함오류 제어 수행 안 함
    흐름 제어 수행함흐름 제어 수행 안 함
    유니캐스트유니캐스트, 멀티캐스트, 브로드캐스트
    전이중(Full Duplex)반이중(Half Duplex)
    데이터 전송실시간 트래픽 전송

    ARP

    MAC 주소는 하드웨어 생산업체가 임의적으로 할당한 주소이고 NIC에 종속된 주소이다. IP 주소는 우리가 직접 할당 하거나 DHCP를 이용해 자동으로 할당 받는다. 실제 통신은 IP 주소 기반으로 일어나고 MAC 주소는 상대방의 주소를 자동으로 알아내 통신하게 된다. 이때 상대방의 MAC 주소를 알아내기 위해 사용되는 프로토콜이 ARP(Address Resolution Protocol)이다.
    IP 주소 체계는 물리적 MAC 주소와 전혀 연관성이 없으므로 두 개의 주소를 연계시켜 주기 위한 메커니즘이 바로 ARP이다. 호스트에서 아무 통신이 없다가 처음 통신을 시도하면 패킷을 바로 캡슐화할 수 없다. 통신을 시도할 때 출발지와 목적지 IP 주소는 미리 알고 있어 캡슐화하는 데 문제가 없지만 상대방의 MAC 주소를 알 수 없어 2계층 캡슐화를 수행할 수 없다. 상대방의 MAC 주소를 알기 위해서는 ARP 브로드캐스트를 이용해 네트워크 전체에 상대방의 MAC 주소를 질의해야 한다.

    ARP 동작

    ARP 패킷은 여러 가지 필드 중 ARP 데이터에 사용되는 송신자 하드웨어 MAC 주소, 송신자 IP 프로토콜 주소, 대상자 MAC 주소, 대상자 IP 프로토콜 주소 4개 필드가 중요하게 사용된다.
    예제를 통해서 ARP가 4개 필드를 이용해 어떻게 동작하는지 알아보자.
    서버 A에서 서버 B 로 ping을 보내려 할 때 목적지 MAC 주소를 모르기 때문에 패킷을 만들 수 없다.서버 A는 서버 B의 MAC 주소를 알아내기 위해 ARP 요청을 네트워크에 브로드캐스트한다.
    2계층 목적지 주소가 브로드캐스트이므로 이 ARP 패킷은 같은 네트워크 안에 있는 모든 만말에 보내지고 모든 단말은 ARP 프로토콜의 내용을 확인하며 ARP 프로토콜 필드의 대사장 IP가 자신이 맞는지 확인해 자신이 아니면 ARP 패킷을 버린다.
    *브로드캐스트: FF-FF-FF-FF-FF-FF
    서버 B는 ARP 요청의 대상자 IP 주소가 자신의 IP이므로 ARP 요청을 처리하고 그에 대한 응답을 보낸다. 이때 송신자와 대상자의 위치가 바뀐다. ARP 요청에서 받은 서버 A의 정보를 이용해 당사자 MAC, IP 주소를 채우고 자신의 MAC, IP 주소를 송신자 MAC, IP 주소로 채워 응답한다. ARP 응답을 보낼 때는 출발지와 도착지 MAC 주소가 명시되어 있는 유니캐스트이다.
    ARP 캐시 테이블이 갱신된 후 상대방의 MAC 주소를 알고 있으므로 도착지 MAC 주소 필드를 완성해 ping 패킷을 보낼 수 있다.

    GARP

    GARP는 자신의 IP와 MAC 주소를 알릴 목적으로 사용된다. GARP를 사용해 동일 네트워크에 자신의 IP 주소와 MAC 주소를 알려주는 이뉴는 다음 3가지이다.
    1. IP 주소 충돌 감지
    2. 상대방(동일 서브넷 상의 다른)의 ARP 테이블 갱신
    3.HA(고가용성) 용도의 클러스터링, VRRP, HSRP

    RARP

    RARP는 IP 주소가 정해져 있지 않은 단말이 IP 할당을 요청할 때 사용한다. ARP는 내가 통신해야 할 상대방의 MAC 주소를 모를 때 상대방의 IP 주소로 MAC 주소를 물어 볼 목적으로 만들어진 프로토콜이지만 RARP는 반대로 나 자신의 MAC 주소는 알지만 IP가 아직 할당되지 않아 IP를 할당해주는 서버에 어떤 IP 주소를 써야 하는지 물어볼 때 사용된다.

    서브넷과 게이트웨이

    원격지 네트워크와의 통신에 사용하는 장비를 케이트웨이라고 부르며 3계층장비(라우터와 L3 스위치)가 이 역할을 할 수 있다.

    서브넷과 게이트웨이의 용도

    로컬네트워크에서는 ARP 브로드캐스트를 이용해 도착지 MAC 주소를 학습할 수 있고 이 MAC주소를 이용해 직접 통신할 수 있지만 원격 네트워크 통신은 네트워크를 넘어 전달되지 못하는 브로드캐스트의 성질 때문에 네트워크 장비의 도움이 필요하다. 이러한 장비를 게이트웨이라 하고 게이트웨이에 대한 정보를 PC나 네티워크 장비에 설정하는 항목이 '기본 게이트웨이'이다.
    기본 게이트웨이는 3계층 장비가 수행하고 여러 네트워크와 연결되면서 적절한 경로를 지정해주는 역할을 한다.
    서브넷 마스크는 동일 네트워크 간의 통신과 서로 다른 네트워크 간의 통신을 구분하기 위해 사용된다.
    출처
    IT 엔지니어를 위한 네트워크 입문을 정리한 포스팅입니다.

    0개의 댓글