본문 바로가기
네트워크

[네트워크 입문] 3. 네트워크 통신하기

by 잭피 2021. 8. 6.

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

네트워크에서 출발지에서 목적지로 데이터를 전송할 때 사용하는 통식방식입니다

유니캐스트 (1:1)

출발지와 목적지가 1:1로 통신합니다

실제로 사용하는 대부분의 통신은 유니캐스트 방식입니다

브로드캐스트 (1:모든 통신)

동일 네트워크에 존재하는 모든 호스트가 목적지입니다

유니캐스트로 통신하기전, 주로 상대방의 정확한 위치를 알기 위해 사용됩니다

멀티캐스트 (1:그룹(멀티캐스트 구독 호스트)통신)

하나의 출발지에서 다수의 특정 목적지로 데이터를 전송합니다

멀티캐스트 그룹 주소를 이용해 해당 그룹에 속한 다수의 호스트로 패킷을 전송하기 위한 통신 방식입니다

이 방식은 사내 방송이나 증권 시세 전송과 같이 단방향으로 다수에게 동시에 같은 내용을 전달해야할 때 사용됩니다

애니캐스트 (1:1통신(목적지는 동일 그룹 내의 1개 호스트))

다수의 동일 그룹 중 가장 가까운 호스트에서 응답합니다

애니캐스트 주소가 같은 호스트들 중에서 가장 가깝거나 가장 효율적으로 서비스할 수 있는 호스트와 통신하는 방식입니다

가장 가까운 DNS 서버를 찾을 때 사용합니다

MAC 주소

Media Access Control의 줄임말로 2계층(데이터 링크 계층)에서 통신을 위해 네트워크 인터페이스에 할당된 고유 식별자입니다

네트워크에 접속하는 모든 장비는 MAC 주소라는 물리적인 주소가 있어야 하고 이 주소를 이용해 서로 통신합니다

MAC 주소 체계

MAC 주소는 변경할 수 없도록 하드웨어에 고정되어 출하되므로 네트워크 구성 요소마다 다른 주소를 가지고 있습니다

매번 이 주소의 할당 여부를 확인할 수 없으므로 한 제조업체에 하나 이상의 주소풀을 주고 그 풀 안에서 각 제조업체가 자체적으로 MAC 주소를 할당합니다

이렇게 네트워크 장비 제조업체에 주소 풀을 할당하는 것을 제조사 코드(Vendor Code)라고 부르며 이 주소는 국제기구인 IEEE가 관리합니다

MAC 주소는 48비트의 16진수 12자리로 표현됩니다

48비트는 앞 24비트, 뒤 24비트로 나누어 구분합니다

제조사 코드가 MAC 주소 앞의 24비트인 'OUI'값입니다

뒤의 24비트의 값인 'UAA'는 각 제조사에서 자체적으로 할당하여 네트워크에서 각 장비를 구분할 수 있게 해줍니다

  • OUI
  • IEEE가 제조사에 할당하는 부분
  • UAA
  • 각 제조사에서 네트워크 구성 요소에 할당하는 부분

네트워크 카드나 장비를 생산할 때 하드웨어적으로 정해져 나오므로 MAC 주소를 BIA(Burned-In Address)라고 부릅니다

제조사의 실수나 의도적으로 MAC 주소가 중복될 수 있습니다 MAC 주소는 동일 네트워크에서만 중복되지 않으면 동작하는 데 문제가 없습니다 네트워크 통신을 할 때 네트워크가 달라 라우터 도움을 받을 경우, 라우터에서 다른 네트워크로 넘겨줄 때 출발지와 도착지의 MAC 주소가 변경되므로 네트워크를 넘어가면 기존 출발지와 도착지 MAC 주소를 유지하지 않습니다

MAC 주소 동작

NIC(네트워크 인터페이스 카드)는 자신의 MAC 주소를 가지고 있고 전기 신호가 들어오면 2계층에서 데이터 형태(패킷)로 변환하여 내용을 구분한 후 도착지 MAC 주소를 확인합니다

만약 도착지 MAC 주소가 자신이 갖고 있는 MAC 주소와 다르면 그 패킷을 폐기합니다

패킷의 목적지 주소가 자기 자신이거나 브로드캐스트, 멀티캐스트와 같은 그룹 주소이면 처리해야 할 주소로 인지해 패킷 정보를 상위 계층으로 넘겨줍니다

MAC 주소를 여러개 가질 수 있습니다 MAC 주소는 단말에 종속되지 않고 NIC에 종속됩니다 즉, 단말은 여러 개 NIC를 가질 수 있으므로 MAC 주소도 여러 개 가질 수 있습니다

IP 주소

OSI 7 계층에서 주소를 갖는 계층은 2계층과 3계층입니다

2계층은 물리 주소인 MAC 주소를 사용하고 3계층은 논리 주소인 IP 주소를 사용합니다

대부분 네트워크는 TCP/IP로 동작합니다

IP 주소 체계

우리가 흔히 사용하는 IP 주소는 32비트인 IPv4 주소입니다

IP는 v4, v6 두 체계가 사용되며 IPv6 주소는 128비트입니다

IPv4 주소는 4개의 옥텟이라고 부르는 8비트 단위로 나누고 "."으로 구분합니다

MAC 주소가 16진수로 표기된 것과 달리 IP 주소는 10진수로 표기하므로 8비트 옥텟은 0~255의 값을 쓸 수 있습니다

3계층 IP 주소는 네트워크 주소와 호스트 주소 두 부분으로 나뉩니다

  • 네트워크 주소
  • 호스트들을 모은 네트워크를 지칭하는 주소이고, 네트워크 주소가 동일한 네트워크를 로컬 네트워크라고 합니다
  • 호스트 주소
  • 하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소입니다

MAC 주소는 24비트씩 절반으로 나누어지지만, IP 주소의 네트워크 주소와 호스트 주소는 경계점이 고정되어 있지 않습니다

IP 주소는 필요한 호스트 IP 개수에 따라 네트워크 크기를 다르게 할당할 수 있는 클래스 개념을 도입했습니다

IP 주소가 도입된 클래스 개념은 다른 고정된 네트워크 주소 체계에 비해 주소를 절약할 수 있다는 장점이 있습니다

클래스 기반의 네트워크 분할 기법은 과거에 사용했던 개념으로 현재는 클래스 기반으로 네트워크를 분할하지 않습니다

세밀하고 분할하고 할당하기 위해 네트워크 크기에 마주처 1비트 단위로 네트워크를 상세히 분할하는 방법을 사용합니다

클래스풀과 클래스리스

기존 클래스풀 기반 주소 체계는 확장성과 효율성을 모두 잡는 좋은 주소 체계였지만, 기하급수적으로 늘어나는 IP 주소 요구를 감당하기에는 부족했습니다

IP 주소 부족과 낭비 문제를 해결하기 위해 3가지 보존, 전환전략을 만들었습니다

첫 번째 단기 대책은 클래스리스, CIDR(Classless Inter-Domain Routing) 기반 주소 체계입니다

두 번째 중기 대책은 NAT와 사설 IP 주소,

세 번째 장기 대책은 차세대 IP인 IPv6 입니다

IPv4의 가장 큰 문제는 주소 자체의 부족도 있지만, 상위 클래스(A class)에서 할당받은 조직에서 이 주소들을 제대로 사용하지 못하면서 낭비하는 것이었습니다

이 문제를 해결하기 위해 클래스 개념 자체를 버리는데 이를 클래스리스라고 부릅니다

현재 우리가 사용하는 주소 체계는 클래스리스 기반 주소 체계입니다

클래스리스 네트워크에서는 별도로 네트워크와 호스트 주소를 나누는 구분자를 사용해야 하는데,

그 구분자를 서브넷 마스크라고 부릅니다

255.255.255.0, 255.255.0.0 이렇게 255는 네트워크 주소 부분, 0은 호스트 주소 부분으로 구분됩니다

클래스리스 기반의 IP 네트워크에서는 네트워크를 표현하는 데 반드시 서브넷 마스크가 필요하고 서버나 PC에 IP 주소를 부여할 때도 사용되어야 합니다

서브네팅

원래 부여된 클래스의 기준을 무시하고 새로운 네트워크-호스트 기분 기준을 사용자가 정해 원래 클래스풀 단위의 네트워크보다 더 쪼개 사용하는 것을 서브네팅(Subnetting)이라고 합니다

현대 클래스리스 네트워크의 가장 큰 특징입니다

실무에서 서브네팅에 대해 고민해야 하는 경우는 2가지 입니다

  1. 네트워크 디자인 단계에서 네트워크 설계자가 네트워크를 효율적으로 어떻게 분할할 것인지 계획된 경우
  2. 이미 분할된 네트워크에서 사용자가 자신의 네트워크와 원격지 네트워크를 구분해야 하는 경우

네트워크 사용자의 서브네팅

이미 설계되어 있는 네트워크에서 사용할 수 있는 IP 주소 범위를 파악해야 합니다

자신이 속한 네트워크 유효 범위를 파악하는 방법은 아래와 같습니다

  1. 내 IP를 2진수로 표현
  2. 서브넷 마스크를 2진수로 표현
  3. 2진수 AND 연산으로 서브네팅된 네트워크 주소를 알아냄
  4. 호스트 주소 부분을 2진수 1로 모두 변경해 브로드캐스트 주소를 알아냄
  5. 유효 IP 범위를 파악 (서브네팅된 네트워크 주소+1은 유효 IP중 가장 작은 IP)
  6. 브로드캐스트 주소-1은 유효 IP 중 가장 큰 IP
  7. 2진수로 연결되어 있는 결괏값을 10진수로 변환

서브네팅에서는 기준이 되는 서브넷 마스크가 핵심입니다

서브넷 마스크는 네트워크와 호스트 주소를 나누는 구분자이므로 이 중심을 기준으로 계산합니다

네트워크 설계자 입장

네트워크를 새로 구축하는 경우, 네트워크 사용자와 반대로 설계자는 서브넷 마스크가 지정되어 주어지는 것이 아니라 네트워크 크기를 고민해 서브넷 마스크를 결정하고 설계에 반영해야 합니다

  • 서브넷 하나의 네트워크에 IP를 몇 개나 할당해야 하는가? ( 또는 PC는 몇 대나 있는가? )
  • 그리고 서브넷된 네트워크가 몇 개나 필요한가?

예) 회사에 총 12곳의 지사가 있습니다

이 지사들에는 최대 12대의 IP가 필요한 pc와 복합기, IP 카메라가 운영될 예정입니다

현재 가진 네트워크는 103.9.32.0/24 네트워크입니다

  1. 서브넷된 하나의 네트워크에 12개 IP를 할당해야 합니다
  2. 네트워크는 2진수의 배수로 커지므로 4, 8, 16, 32, 64, 128, 256개 단위로 네트워크를 할당할 수 있습니다
  3. 12개 IP를 수용할 수 있는 가장 작은 네트워크는 16개이므로 16개짜리 네트워크를 할당합니다
  4. 16개짜리 네트워크 12개를 확보합니다
  5. 16의 배수를 0부터 나열해 네트워크 주소를 확인합니다

공인 IP와 사설 IP

인터넷에 접속하려면 IP 주소가 있어야 하고, 전 세계 유일해야 하는 식별자는 공인 IP입니다

하지만, 인터넷에 연결하지 않고 개인적인 네트워크를 구성한다면 공인 IP를 할당받지 않고 사설 IP를 통해 네트워크를 구축할 수 있습니다

TCP와 UDP

2계층, 3계층은 목적지를 정확히 찾아가기 위한 주소 제공이 목적이었지만 4계층에서 동작하는 프로토콜은 만들어진 목적이 2,3계층 프로토콜과 조금 다릅니다

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

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

4계층에서는 시퀀스 번호, ACK 번호가 있습니다

TCP/IP 프로토콜 스택에서 4계층은 TCP와 UDP가 담당합니다

4계층의 목적은 목적지를 찾아가는 주소가 아니라 애플리케이션에서 사용하는 프로세스를 정확히 찾아가고 데이터를 분할한 패킷을 잘 쪼개 보내고 잘 조립하는 것입니다

패킷을 분할하고 조립하기 위해 TCP 프로토콜에서는 시퀀스 번호와 ACK 번호를 사용합니다

TCP/IP 프로토콜 스택에서 4계층의 상위 프로토콜 지시자는 포트번호입니다

4계층 프로토콜 지시자인 포트 번호는 출발지와 목적지를 구분해 처리해야 합니다

HTTP TCP 80, HTTPS TCP 443, SMTP TCP 25와 같이 잘 알려진 포트를 웰 노운(well-known) 포트라고 합니다

이 포트들은 이미 인터넷 주소 할당기구인 IANA에 등록되고 1023번 이하의 포트번호를 사용합니다

다양한 애플리케이션에 포트 번호를 할당하기 위해 Registered Port 범위 (1024~49151)를 사용합니다

포트 번호를 할당받기 위해 신청하면 IANA에 등록되어 관리되지만 공식번호와 비공식번호가 혼재되어 있고 사설 포트 번호로 사용되기도 합니다

동적, 사설 임시 포트 범위는 49152~65535입니다

이 범위 포트 번호는 IANA에 등록되어 사용되지 않습니다

자동 할당되거나 사설 용도로 할당되고 임시 포트로 사용됩니다

TCP

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

TCP의 여러 역할 덕분에 네트워크 상태를 심각하게 고려하지 않고 특별한 개발 없이도 쉽고 안전하게 네트워크를 사용할 수 있습니다

패킷 순서, 응답 번호

TCP에서는 분할된 패킷을 잘 분할하고 수신 측이 잘 조합하도록 패킷에 순서를 주고 응답 번호를 부여합니다

순서를 부여하는 것을 시퀀스 번호,

응답 번호를 부여하는 것을 ACK 번호라고 합니다

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

TCP는 일방적으로 패킷을 보내는 것이 아니라 상대방이 얼마나 잘 받았는지 확인하기 위해 ACK 번호를 확인하고 다음 패킷을 전송합니다

송신자와 수신자가 먼 거리에 떨어져 있으면 왕복 지연시간이 늘어나므로 응답을 기다리는 시간이 더 길어집니다

그래서 데이터를 하나만 보내는 것이 아니라 많은 패킷을 한꺼번에 보내고 응답을 하나만 받습니다

가능하면 최대한 많은 패킷을 한꺼번에 보내는 것이 효율적이지만 네트워크 상태에 따라 유실 가능성이 있어 적절한 송신량을 결정해야 하는데,

이 때 한 번에 데이터를 받을 수 있는 데이터 크기를 윈도 사이즈라고 합니다

네트워크 상황에 따라 이 윈도 사이즈를 조절하는 것을 슬라이딩 윈도라고 합니다

3방향 핸드셰이크

패킷 네트워크에서는 동시에 많은 상대방과 통신하므로 정확한 통신을 위해서는 통신 전, 각 통신에 필요한 리소스를 미리 확보하는 작업이 중요합니다

TCP에서는 3번의 패킷을 주고받으면서 통신을 서로 준비하므로 3방향 핸드셰이크라고 부릅니다

서버에서는 서비스를 제공하기 위해 클라이언트의 접속을 받아들일 수 있는 LISTEN 상태로 대기합니다

클라이언트에서 통신을 시도할 때 Syn 패킷을 보내는데 클라이언트에서는 이 상태를 SYN-SENT라고 부릅니다

클라이언트의 Syn을 받은 서버는 SYN-RECEIVE 상태로 변경되고 Syn, Ack로 응답합니다

응답을 받은 클라이언트는 ESTABLISHED 상태로 변경하고 그에 대한 응답을 서버로 다시 보냅니다

서버에서도 응답을 받아 ESTABLISHED 상태로 변경됩니다

ESTABLISHED 상태는 서버와 클라이언트 간의 연결이 성공적으로 완료되었음을 나타냅니다

이런 과정이 생기다보니 기존 통신과 새로운 통신을 구분해야 합니다

헤더에 플래그라는 값을 넣어 통신하여 구분합니다

TCP 플래그는 총 6가지가 있습니다

  1. SYN
    1. 연결 시작 용도 (시작될 때 1로 표시)
  2. ACK
    1. ACK 번호가 유효할 경우, 1로 표시
  3. FIN
    1. 연결 종료 시 1로 표시 (데이터 전송을 정상적으로 마친 후 사용)
  4. RST
    1. 연결 종료시 1로 표시 (강제 종료를 위해 사용)
  5. URG
    1. 긴급 데이터인 경우, 1로 표시
  6. PSH
    1. 서버 측에서 전송할 데이터가 없거나 데이터를 버퍼링 없이 즉시 전달할 것을 지시할 때 사용

UDP

TCP와 달리 UDP는 4계층 프로토콜이 가져야 할 특징이 거의 없습니다

UDP는 데이터 전송을 보장하지 않는 프로토콜이므로 제한된 용도로만 사용됩니다

음성 데이터나 실시간 스트리밍과 같이 시간에 민감한 프로토콜이나 애플리케이션을 사용하는 경우나

사내 방송이나 증권 시세 데이터 전송에 사용되는 멀티 캐스트처럼 단방향으로 다수의 단말과 통신해 응답을 받기 어려운 환경에서 주로 사용됩니다

청각, 시각적으로 응답 시간에 민감한 경우에 사용됩니다

데이터 신뢰성보다 일부 데이터가 유실되더라도 시간에 맞추어 계속 전송하는 것이 중요한 화상회의 시스템과 같은 서비스의 경우 UDP를 사용합니다

UDP는 TCP와 달리 통신 시작 전, 3방향 핸드셰이크와 같이 사전에 연결을 확립하는 절차가 없습니다

대신 UDP에서 첫 데이터는 리소스 확보를 위해 인터럽트를 거는 용도로 사용되고 유실됩니다

같은 동영상 스트리밍이더라도 넷플릭스나 유튜브와 같이 시간에 민감하지 않은 단일 시청자를 위한 연결은 TCP를 사용합니다 이 경우, 네트워크에 잠시 문제가 발생하더라도 동영상이 끊기지 않도록 캐시에 저장합니다

하지만, 실시간 화상회의 솔루션의 경우, 데이터 전송이 양방향으로 일어나고 시간에 매우 민감하게 반응하므로 TCP 이용 환경에서 데이터 유실이 발생하면 사용자는 네트워크 품질이 나쁘다고 생각할 수 있습니다. 이 때는 UDP를 사용합니다

ARP

상대방의 MAC 주소를 알아내기 위해 사용되는 프로토콜이 ARP(Address Resolution Protocol)입니다

ARP란?

데이터 통신을 위해 2계층 물리적 주소 MAC 주소와 3계층 논리적 주소 IP 주소 2개가 사용됩니다

IP 주소 체계는 물리적 MAC 주소와 전혀 연관성이 없으므로 2개의 주소를 연계시켜주기 위해 ARP 프로토콜이 사용됩니다

통신을 시도할 때 출발지와 목적지 IP 주소는 미리 알고 있으므로 캡슐화가 가능합니다

하지만 상대방 MAC 주소는 알 수 없어 2계층 캡슐화를 수행할 수 없습니다

ARP 브로드캐스트를 이용해 네트워크 전체에 상대방의 MAC 주소를 질의합니다

이렇게 알아낸 후, 학습하고 패킷을 캡슐화해서 전달할 수 있습니다

ARP 동작

ARP 패킷은 송신자 하드웨어 MAC 주소, 송신자 IP 프로토콜 주소, 대상자 MAC 주소, 대상자 IP 프로토콜 주소 4개의 필드가 중요하게 사용됩니다

서버 A에서 B로 ping을 보내려고 할 때, 서버 A에서는 3계층의 IP 주소까지 캡슐화할 수 있지만, 목적지 MAC 주소를 모릅니다

서버 B의 MAC 주소를 알아내기 위해 ARP 요청을 네트워크에 브로드캐스트합니다

2계층 목적지 주소가 브로드캐스트이므로 이 ARP 패킷은 같은 네트워크 안에 있는 모든 단말에 보내지고 모든 단말은 ARP 프로토콜 내용을 확인하는데 ARP 프로토콜 필드의 대상자 IP가 자신이 맞는지 확인하고 아니면 패킷을 버리고 맞으면 그에 대한 응답을 보냅니다

GARP

일반적인 ARP 외에도 내용을 변경해 원래 ARP 프로토콜의 목적과 다른 목적으로 사용되는 GARP, RARP와 같은 프로토콜이 있습니다

Gratuitous ARP의 약자인 GARP는 대상자 IP 필드에 자신의 IP 주소를 채워 ARP 요청을 보냅니다

ARP는 상대방의 MAC 주소를 알아내는게 목적이지만, GARP는 자신의 IP와 MAC 주소를 알릴 목적으로 사용됩니다

IP 주소 충돌 감지

IP 주소는 유일하게 할당되어야 하는 값이지만, 여러 이유로 다른 사람이 내가 할당받은 IP를 사용하고 있을 수 있습니다

따라서 IP 충돌 때문에 통신이 안되는 것을 예방하기 위해 GARP를 통해 자신에게 할당된 IP가 이미 사용되고 있는지 확인할 수 있습니다

상대방(동일 서브넷에 있는)의 ARP 테이블 갱신

GARP의 두 번째 사용 목적은 동일 네트워크상 단말들의 ARP 테이블 갱신입니다

가상 MAC 주소를 사용하지 않는 데이터베이스 HA 솔루션에 주로 사용합니다

최근 네트워크 장비에서는 이런 문제가 발생하지 않는 가상 MAC을 사용하는 HA 솔루션이 사용됩니다

클러스터링, FHRP(VRRP, HSRP)

HA 솔루션의 경우처럼 장비 이중화를 위해 사용되만 실제 MAC 주소를 사용하지 않고 가상 MAC을 사용하는 클러스터링, VRRP, HSRP와 같은 FHRP에서도 GARP가 사용됩니다

클러스터링이나 FHRP의 GRAP 사용은 네트워크에 있는 스위치 장비의 MAC 테이블 갱신이 목적입니다

RARP

Reverse ARP의 줄임말입니다

말그대로 반대로 동작하는 ARP인데 GARP처럼 ARP 프로토콜 구조는 같지만 필드에 들어가는 내용이 다르고 원래 목적과 반대로 사용됩니다

RARP는 IP 주소가 정해져 있지 않은 단말이 IP 할당을 요청할 때 사용합니다

ARP는 상대방 MAC 주소를 모를 때 상대방의 IP 주소로 MAC 주소를 물어볼 목적으로 만들어진 프로토콜입니다

RARP는 반대로 나 자신의 MAC 주소는 알지만 IP가 아직 할당되지 않아 IP를 할당해주는 서버에 어떤 IP 주소를 써야 하는지 물어볼 때 사용됩니다

서브넷과 게이트웨이

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

로컬 네트워크는 ARP 브로드캐스트를 통해 MAC 주소를 알수있고 이 MAC 주소를 이용해 직접 통신할 수 있지만, 원격 네트워크 통신은 네트워크를 넘어 전달되지 못하는 브로드캐스트 성질 때문에 네트워크 장비의 도움이 필요합니다

이 장비를 '게이트웨이'라고 합니다

게이트웨이에 대한 정보를 PC나 네트워크 장비에 설정하는 항목이 '기본 게이트웨이'입니다

기본 게이트웨이는 3계층 장비가 수행하고 여러 네트워크와 연결되면서 적절한 경로를 지정해주는 역할을 합니다

출발지와 목적지 네트워크가 동일한 LAN 내에서 통신하는 것인지?

서로 다른 네트워크 간의 통신인지?

에 따라 통신 방식이 달라지므로 출발지에서는 먼저 목적지가 자신이 속한 네트워크의 범위인지 확인하는 작업이 필요합니다

이 때 서브넷 마스크가 사용됩니다

자신의 IP 주소와 서브넷 마스크를 and 연산해 나오는 값으로 확인할 수 있습니다

연산된 결괏값이 로컬 네트워크 주소에 목적지가 속해 있으면 로컬 통신이고 아니면 원격지 통신입니다

즉, 동일 네트워크 간의 통신과 서로 다른 네트워크 간의 통신을 구분하기 위해 사용되는 것이 서브넷 마스크입니다

로컬 통신은 단순한 ARP 요청으로 목적지를 찾아 통신할 수 있지만,

원격지 통신은 ARP가 라우터를 넘어가지 못하는 브로드캐스트이므로 외부와 통신이 가능한 장비의 도움이 필요합니다

2계층 통신 vs 3계층 통신

2계층 통신, 3계층 통신의 정확한 표현으로는 로컬 네트워크 통신, 원격지 네트워크 통신입니다

로컬 네트워크 통신의 경우 라우터와 같은 3계층 네트워크 장비 도움 없이 통신이 가능합니다

즉, 단말 간 연결해주는 네트워크 장비에서 2계층까지만 정보를 확인해 통신하고 ARP 요청을 보낼 때 직접 브로드캐스트를 이용하므로 이를 L2 통신이라고 부릅니다

반면, 원격지 네트워크와 통신해야 할 경우, 라우터와 같은 3계층 장비의 도움을 받아야 합니다

해당 패킷을 전송하는 네트워크 장비에서 3계층 정보까지 확인해야 하며 이것을 L3 통신이라고 합니다

통신하는 출발지, 도착지의 네트워크가 같다, 다르다 조건에 따라 통신 방식이 달라지는데,

이런 차이는 로컬과 리모트 통신을 위한 ARP 동작 방식이 다른 것으로 인해 발생합니다

같은 네트워크에 있는 단말 간 통신은 직접적으로 이루어집니다

상대방의 MAC 주소를 알아내기 위해 ARP 브로드캐스트를 이용하고 상대방의 MAC 주소를 알아내자마자 패킷이 캡슐화되어 통신이 시작됩니다

외부 네트워크와 통신이 필요할 때는 단말이 자신이 직접 보낼 수 없는 위치에 목적지가 있다고 판단하고 ARP 요청을 기본 게이트웨이의 IP 주소로 요청합니다

게이트웨이에서 ARP 응답을 받은 단말은 도착지 MAC 주소에 응답받은 기본 게이트웨이의 MAC 주소를 적어넣고 통신을 시작합니다

로컬 통신은 도착지 MAC 주소와 도착지 IP 주소가 같은 반면,

원격지 통신은 도착지 MAC 주소와 도착지 IP 주소가 다릅니다

도착지 IP 주소는 통신의 실제 도착지이고 도착지 MAC 주소는 디폴트 게이트웨이의 MAC 주소가 사용됩니다

댓글