콰이엇의 개발기록

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

by 콰이엇
고재성, 이상훈 저자님의 “IT 엔지니어를 위한 네트워크 입문” 책을 학습하고 정리한 글입니다.

 

1. 네트워크 통신 방식

실제 데이터를 전달하려는 출발지 기준이 아니라, 목적지 기준으로 구분

📌 유니캐스트

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

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

📌 브로드캐스트

목적지 주소가 모든으로 정해져 있는 1:다 통신 방식

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

📌 멀티캐스트

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

IPTV와 같은 실시간 방송을 볼 때 멀티캐스트 통신 방식을 사용

📌 애니캐스트

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

가장 가까운 DNS 서버를 찾을 때 사용하거나 가장 가까운 게이트웨이를 찾는 기능에 사용

 

✍🏻 BUM 트래픽

더보기

📌 BUM 트래픽

B, U, M은 서로 다른 종류의 트래픽이지만 네트워크에서의 동작은 서로 비슷

 B (Broadcast), U (Unknown Unicast), M (Multicast)

📌 언노운 유니캐스트 (Unknown Unicast)

스위치가 목적지 주소를 학습하지 못한 상황에 모든 포트로 플러딩(전송)하는 유니캐스트

  • 유니캐스트지만 동작 방식은 브로드캐스트에 가까움
  • 유니캐스트라서 전달받는 모든 단말 NIC에서 도착지 주소를 확인하고 자신이 아니므로 패킷을 버림
  • 하지만 네트워크 입장에서는 불필요한 BUM 트래픽이 많아지면 네트워크 성능이 저하
  • 이더넷 환경은 ARP 브로드캐스트를 먼저 보낸 후 통신을 시작하므로 BUM 트래픽 발생이 적음 (3.5절 참고)

 

 

2. MAC 주소

📌 MAC 주소 (Media Access Control)

2계층에서 통신하기 위해 네트워크 인터페이스에 할당된 고유 식별자

  • 이더넷과 와이파이를 포함한 대부분의 IEEE 802 네트워크 기술에서 2계층 주소로 사용
  • 네트워크에 접속하는 모든 장비는 물리적인 MAC 주소를 가져야 하고, 이를 통해 서로 통신

 

2-1. MAC 주소 체계

✍🏻 MAC 주소 표현 방식

48비트 16진수 12자리로 표현

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

네트워크 카드나 장비를 생산할 때 하드웨어적으로 정해지므로 BIA(Burned-In Address)라고도 함

 

🧐 유일하지 않은 MAC 주소

더보기

네트워크 장비제조업체의 실수나 의도적으로 MAC 주소가 중복될 수 있다. MAC 주소는 동일 네트워크에서만 중복되지 않으면 동작하는 데 문제가 없다. 네트워크가 달라 라우터의 도움을 받을 경우, 라우터에서 다른 네트워크로 전달될 때 출발지와 도착지 MAC 주소가 변경되므로, 기존 출발지와 도착 MAC 주소를 유지하지 않는다.

 

🧐 MAC 주소 변경

더보기

BIA 상태로 NIC에 할당되어 변경하기는 어렵다. 하지만 MAC 주소도 메모리에 적재되어 구동하여 여러 방법으로 변경된 MAC 주소로 NIC 동작이 가능하다. 보안 상으로 MAC 변경을 막은 운영체제도 있지만, 쉽게 변경할 수 있는 운영체제도 존재한다.

📌 제조사 코드 (Vendor Code)

네트워크 장비 제조업체에 주소 풀을 할당하는 것

더보기

네트워크 장비 제조업체에서 장비가 출하될 때마다 MAC 주소를 할당하게 되는데 매번 이 주소의 할당 여부를 확인할 수 없으므로 국제기구 IEEE에서 한 제조업체에 하나 이상의 주소 풀을 주고, 자체적으로 MAC 주소를 할당

 

2-2. MAC 주소 동작

✍🏻 NIC는 목적지 MAC 주소를 확인해 자신을 목적지로 한 패킷만 수용한다.

 

  1. 전기 신호가 들어오면 2계층에서 패킷으로 변환하여 내용을 구분한 후 도착지 MAC 주소를 확인
  2. 만약 도착지 MAC 주소가 자신이 갖고 있는 MAC 주소와 다르면 그 패킷을 폐기
  3. 패킷의 목적지 주소가 자기 자신이거나 그룹 주소면 처리해야 할 주소로 인지해 상위 계층으로 넘겨줌
더보기

📌 무차별 코드 (Promiscuous Mode)

MAC 주소와 상관없는 패킷이 들어와도 이를 분석할 수 있도록 메모리에 올려 처리하는 방식

⇒ 네트워크 상태를 모니터링 하거나 디버그, 분석 용도로 네트워크 전체 패킷을 수집해 분석할 경우 활용

 

🧐 MAC 주소를 여러 개 가질 수 있을까?

단말은 여러 개의 NIC를 가질 수 있으므로, MAC 주소도 여러 개 가질 수 있다.

⇒ 멀티레이어 스위치, 라우터 같은 복잡한 네트워크 장비에 해당

 

 

3. IP 주소

✍🏻 3계층 주소의 특징

  1. 사용자가 변경 가능한 논리 주소
  2. 주소에 레벨이 있어, 그룹을 의미하는 네트워크 주소호스트 주소로 나뉨

 

3-1. IP 주소 체계

✍🏻 IPv4 표기 방법

 

4개의 옥텟 (Octet) 8비트 단위로 나누고, 각 옥텟은 . 으로 구분

2계층의 MAC 주소가 16진수로 표기된 것과 달리 IP 주소는 10진수로 표기하므로 0~255의 값을 사용

  • 네트워크 주소 : 호스트들을 모은 네트워크를 지칭하는 주소
  • 호스트 주소 : 하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소

 

3-2. 클래스풀과 클래스리스

1. 클래스풀 (Classful)

클래스 기반의 IP 주소 체계

  • 과거의 IP 주소 체계로 현재는 사용하지 않는다
  • 이론적으로 사용할 수 있는 IP 개수는 43억여 개지만, 실제 사용할 수 있는 숫자는 훨씬 적다
  • 하나의 네트워크에서 IP가 사용되지 않더라도, 그 IP 주소를 다른 네트워크에서 사용하지 못한다

✍🏻 IP 주소 클래스 네트워크 분할기법 자세히 알아보기

✍🏻 IP 주소 부족과 낭비 문제를 해결하기 위한 3가지 보존, 전환 전략

  1. 클래스리스, CIDR(Classless Inter-Domain Routing) 기반의 주소 체계
  2. NAT와 사설 IP 주소
  3. 차세대 IP IPv6

 

2. 클래스리스 (Classless)

클래스 개념을 적용하지 않은 IP 주소 체계

  • 2진수 AND 연산을 통해 IP 주소에서 네트워크 주소를 식별할 수 있다
  • 클래스리스 기반 IP 네트워크를 표현하는데 반드시 서브넷 마스크가 필요하다

 

📌 서브넷 마스크 (Subnet Mask)

클래스리스 네트워크에서 네트워크와 호스트 주소를 나누기 위해 사용하는 구분자

 

3. 서브네팅

📌 서브네팅

원래 부여된 클래스 기준을 무시하고 새로운 네트워크-호스트 구분 기준을 사용자가 정해 원래 클래스풀 단위의 네트워크보다 더 쪼개 사용하는 것

2진수 1비트 단위로 네트워크를 분할

✍🏻 서브네팅 고려 오소

1. 네트워크 사용자 입장

  • 네트워크에서 사용할 수 있는 IP 범위 파악
  • 기본 게이트웨이와 서브넷 마스크 설정이 제대로 되어 있는지 확인

2. 네트워크 설계자 입장

  • 네트워크 설계 시 네트워크 내에 필요한 단말을 고려한 네트워크 범위 설계

 

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

✍🏻 네트워크 유효 범위 파악하는 방법

 

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

 

✍🏻 간단한 서브네팅 방법

더보기
  1. 서브넷 마스크를 2진수로 변환
  2. 현재 서브넷이 가질 수 있는 최대 IP 개수의 크기 파악 (2^6 = 64)
  3. 64의 배수로 나열하여 기준이 되는 네트워크 주소 파악
    - 0 ~ 63 / 64 ~ 127 / 128 ~ 191 / 192 ~ 255
  4. 103.9.32.146에서 호스트 주소 146이 속한 네트워크를 선택 (128 ~ 191)
  5. 필요한 주소를 정리
    - 네트워크 주소 : 103.9.32.128 (첫 번째 숫자)
    - 브로드캐스트 주소 : 103.9.32.191 (마지막 숫자)
    - 유효 IP 범위 : 103.9.32.129 ~ 103.9.32.190 (네트워크 주소와 브로드캐스트 주소 사이)

서브넷 마스크를 중심으로 네트워크 크기를 파악해 서브넷 된 네트워크 크기를 알아내는 것이 중요

 

 

2. 네트워크 설계자 입장

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

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

✍🏻 회사 네트워크 설계를 통해 서브넷 마스크 사용방법 알아보기

더보기

회사에 총 12곳의 지사가 있으며 각각 최대 12대의 IP가 필요한 PC와 복합기, IP 카메라가 운영될 예정으로 현재 가진 네트워크는 103.9.32.0/24 네트워크

  1. 서브넷 된 하나의 네트워크에 12개의 IP를 할당해야 한다
  2. 네트워크는 2진수 배수로 커지므로 4, 8, 16, 32, 64, 128, 256개 단위로 할당할 수 있다
    ⇒ 16개짜리 네트워크는 네트워크/브로드캐스트 주소로 사용할 2개 IP를 제외해야 하므로 실제 사용할 수 있는 IP는 14개로 필요한 12개에 포함되어 사용 가능하다
  3. 16개짜리 네트워크 12개를 확보한다 (16배수를 0부터 나열해 네트워크 주소를 확인한다)
  4. 총 16개의 네트워크 중 12개 네트워크를 할당한다

 

잘 설계된 네트워크를 디자인하려면 IP를 여유롭게 사용할 수 있는 사설 IP 대역으로 네트워크를 설계해야 한다.

 

 

3. 공인 IP와 사설 IP

📌 공인 IP

인터넷에 접속하기 위한 전 세계에서 유일해야 하는 식별자

📌 사설 IP

개인적으로 네트워크를 구성할 때 사용하는 식별자

  • 인터넷에 접속하지 않거나, NAT 기술을 사용할 경우 사설 IP 주소를 사용할 수 있다
  • 사설 IP를 사용하면 인터넷에 직접 접속하지 못하지만 IP를 변환해주는 NAT 장비에서 공인 IP로 변경한 후에는 인터넷 접속이 가능하다
  • 가정에서 많이 사용하는 공유기는 대표적인 NAT 장비이다
  • NAT를 사용해 인터넷에 접속하더라도 다른 사용자에게 할당된 IP를 사설 네트워크 주소로 사용하면 안된다
    다른 인터넷 연결에는 문제가 없지만, 내부 네트워크에 할당된 IP를 공식으로 사용하는 네트워크로 접속할 수 없으므로 인터넷 어느 구간에도 사용되지 않는 RFC에 명시된 사설 IP 대역 사용을 추천

📌 NAT (Network Address Translation)

네트워크 주소 변환 기술

 

4. TCP와 UDP

✍🏻 4계층 프로토콜의 역할

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

 

4-1. 4계층 프로토콜과 서비스 포트

인캡슐레이션과 디캡슐레이션 과정의 두 가지 정보

  • 각 계층에서 정의하는 정보
  • 상위 프로토콜 지시자 정보

TCP 프로토콜은 패킷을 분할하고 조합하기 위해 시퀀스 번호, ACK 번호를 사용한다

📌 웰 노운 포트 (Well known port)

80 (HTTP TCP), 443 (HTTP TCP), 25 (SMTP TCP) 와 같이 잘 알려진 포트

  • 이러한 포트는 인터넷 주소 할당기구인 IANA (Internet Assigned Numbers Authority)에 등록
  • 1023번 이하 포트 번호를 사용

 

4-2. TCP

📌 TCP 프로토콜

4계층 프로토콜의 특징을 대부분 포함하고 있는 프로토콜

  • 신뢰할 수 없는 공용망에서도 정보유실 없는 통신을 보장하기 위해 세션을 안전하게 연결하고 데이터를 분할하고 분할된 패킷이 잘 전송되었는지 확인하는 기능이 있다
  • 패킷에 번호(Sequence Number)를 부여하고 잘 전송되었는지 응답 (Acknowledge Number)
  • 한꺼번에 얼마나 보내야 수신자가 잘 받아 처리할 수 있는지 전송 크기(Windows Size)까지 고려해 통신

 

1. 패킷 순서, 응답 번호

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

  • 시퀀스 번호 (Sequence Number) : 패킷에 순서를 부여하는 것
  • ACK 번호 (Acknowledge Number) : 응답 번호를 부여하는 것

⇒ 두 번호가 상호작용해 순서가 바뀌거나 중간에 패킷이 손실된 것을 파악할 수 있다

⇒ 시퀀스 번호와 ACK 번호의 기본 동작 방식, 패킷을 하나 보내고 이에 대한 응답을 받는다.

 

✍🏻 패킷 순서 및 ACK 번호의 기본 동작 방식

더보기
  1. 출발지에서 시퀀스 번호를 0으로 보낸다 (SEQ = 0)
  2. 수신 측에서는 0번 패킷을 잘 받았다는 표시로 응답 번호(ACK)에 1을 적어 응답한다. 이때 수신 측에서는 자신이 처음 보내는 패킷이므로 자신의 패킷에 시퀀스 번호 0을 부여한다.
  3. 이 패킷을 받은 송신 측은 시퀀스 번호를 1로 (수신 측이 ACK 번호로 1번 패킷을 달라고 요청했으므로), ACK 번호는 상대방의 0번 시퀀스를 잘 받았다는 의미로 시퀀스 번호를 1로 부여하여 다시 송신한다.

 

 

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

📌 윈도 사이즈

한 번에 데이터를 받을 수 있는 데이터의 크기

📌 슬라이딩 윈도

네트워크 상황에 따라 이 윈도 사이즈를 조절하는 것

✍🏻 윈도 사이즈와 슬라이딩 윈도 개념 도입 이유

더보기

 

TCP 방식은 패킷 전송 상태를 확인하기 위해 먼 거리일 수록 응답 시간이 길어지게 된다. 작은 패킷을 하나 보내고 응답을 받아야만 하나를 더 보낼 수 있다면 모든 데이터를 전송하기 위해 오래 걸리게 된다. 따라서, 데이터를 보낼 때 패킷을 하나만 보내는 것이 아니라 많은 패킷을 한 번에 보내고, 응답을 하나만 받는다.

 

TCP 헤더에서 윈도 사이즈로 표현할 수 있는 최대 크기는 2^16이다. 64K만큼 윈도 사이즈를 가질 수 있지만 회선 안정성이 높아지고 고속화되는 현대 네트워크에서는 너무 작은 숫자이다. 헤더 변경은 불가능하므로 뒤의 숫자를 무시하는 방식으로 윈도 사이즈를 증가시켜 통신한다 (무슨 의미?)

 

🧐 TCP 데이터 유실이 발생한다면?

윈도 사이즈를 절반으로 떨어뜨리고 정상적인 통신이 되는 경우 서서히 하나씩 늘린다. 패킷 드롭이 생기면 작아진 윈도 사이즈로 인해 데이터 통신 속도가 느려져 회선을 제대로 사용하지 못할 수 있다. 이런 경우, 경합을 피하기 위해 회선 속도를 증가시키거나 경합을 임시로 피하게 할 수 있는 버퍼가 큰 네트워크 장비를 사용하거나 TCP 최적화 솔루션을 사용해 문제를 해결한다.

 

 

3. 3방향 핸드셰이크

📌 3-way handshake

유실없는 안전한 통신을 위해 3번의 패킷을 주고 받으면서 통신을 서로 준비하는 사전 연결작업

 

✍🏻 3방향 핸드셰이크의 상태 정보

  • LISTEN : 서버에서 서비스를 제공하기 위해 클라이언트의 접속을 받을 수 있는 상태
  • SYN-SENT : 클라이언트에서 통신을 시도할 때 Syn 패킷을 보내는 상태
  • SYN-RECEIVED : 클라이언트의 Syn 패킷을 받은 서버의 상태
  • ESTABLISHED
    - 클라이언트 : 서버로부터 SYN, ACK를 응답받은 상태
    - 서버 : 클라이언트로부터 ACK 응답받은 상태

📌 플래그 (Flag)

어떤 패킷이 새로운 연결 시도이고 기존 통신에 대한 응답인지 구분하기 위한 헤더 값

 3방향 핸드셰이크 과정의 탄생으로 기존 통신과 새로운 통신을 구분해야 할 필요가 생김

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

 

 

✍🏻 3방향 핸드셰이크 과정

더보기
  1. 통신을 처음 시도할 때 송신자는 플래그에 있는 SYN 필드를 1로 표기해 패킷을 보낸다.
  2. SYN 패킷을 받은 수신자는 SYNACK 비트를 플래그에 1로 표기해 응답한다. 자신이 보내는 첫 패킷이므로 SYN을 1로 표기하고 기존 송신자가 보냈던 패킷의 응답이기도 하므로 ACK 비트도 함께 1로 표기한다. 이때 자신이 사용할 시퀀스 번호를 적고 ACK 번호는 송신자가 보낸 시퀀스 번호에 1을 추가한 값을 넣어 응답한다.
  3. 수신자의 응답을 받은 송신자는 연결을 확립하기 위해 다시 한 번 응답 메시지를 보낸다. 이때부터는 기존 메시지의 응답이므로 ACK 필드만 1로 표기한다. 수신자가 ACK 번호를 11로 표기해 보냈으므로 시퀀스 번호를 11로 표기해 응답한다. 동시에 수신자의 시퀀스 번호 20에 대한 응답이므로 ACK 번호를 21로 보낸다.

 

 

4-3. UDP

📌 UDP 프로토콜

4계층 프로토콜이 가져야 할 특징을 가지고 있지 않은 프로토콜

⇒ 신뢰 통신을 위한 내용(시퀀스 번호, ACK 번호, 플래그, 윈도 사이즈 등)이 없다

  • 데이터 전송을 보장하지 않는 프로토콜이므로 제한된 용도로 사용
  • 음성 데이터나 실시간 스트리밍 ⇒ 시간에 민감한 프로토콜 또는 애플리케이션을 사용하는 경우
  • 사내 방송이나 증권 시세 데이터 전송에 사용하는 멀티캐스트 ⇒ 단방향으로 다수 단말과 통신해 응답 받기 어려운 환경

신뢰성보다 일부 데이터가 유실되더라도 시간에 맞추어 계속 전송하는 것이 중요한 시스템에서 사용

 

✍🏻 UDP의 특징

  • 3방향 핸드셰이크와 같이 사전에 연결을 확립하는 절차가 없다
  • 대신 UDP에서 첫 데이터는 리소스 확보를 위해 인터럽트(interrupt)를 거는 용도로 사용되고 유실된다
  • UDP 프로토콜을 사용하는 애플리케이션이 대부분 이런 상황을 인지하고 동작
  • 또는, 연결 확립은 TCP 프로토콜을 사용하고 애플리케이션끼리 모든 준비를 마친 후 실제 데이터만 UDP 사용

 

5. ARP

🧐 2계층 MAC 주소와 3계층 IP 주소 간에는 아무 관계가 없는데 어떻게 IP 주소로 통신할까?

📌 ARP (Address Resolution Protocol)

상대방의 MAC 주소를 알아내기 위해 사용하는 프로토콜

⇒ 논리적 IP 주소 체계는 물리적 MAC 주소와 전혀 연관성이 없으므로 두 개의 주소를 연계시켜 주기 위한 매커니즘

⇒ 3계층 논리적 주소와 2계층 물리적 주소 사이에 관계가 없는 프로토콜에서 물리적 주소와 논리적 주소 연결을 위해 사용

 

5-1. ARP란?

✍🏻 ARP 특징

1. 처음 연결을 시도할 때는 패킷을 바로 캡슐화(Encapsulation) 할 수 없다

더보기

상대방의 MAC 주소를 모르는 상태에서 2계층 캡슐화를 수행할 수 없기 때문이다. 상대방의 MAC 주소를 알아내려면 ARP 브로드캐스트를 이용해 네트워크 전체에 상대방 MAC 주소를 질의해야 한다. ARP 브로드캐스트를 받은 목적지는 ARP 프로토콜을 이용해 자신의 MAC 주소를 응답한다. 이 작업이 완료되면 출발지, 목적지 둘 다 상대방에 대한 MAC 주소를 학습하고, 이후 패킷이 정상적으로 인캡슐레이션되어 상대방에게 전달할 수 있다.

 

2. 목적지 MAC 주소를 매번 ARP 브로드캐스트로 찾는 것은 네트워크 통신의 효율성이 크게 떨어진다.

더보기

성능 유지를 위해 IP 주소와 MAC 주소를 1:1 대응하여 ARP 테이블로 저장한다. 성능을 위해서는 ARP 테이블이 한 번 생성되면 오래 유지될수록 좋다. 하지만 논리 주소는 언제든 바뀔 수 있으므로 일정 시간 통신이 없으면 이 테이블은 삭제된다.

 

 

5-2. ARP 동작

✍🏻 ARP 패킷은 4개의 필드를 활용한다.

  • 송신자 하드웨어 주소 (2계층) - MAC 주소
  • 송신자 프로토콜 주소 (3계층) - IP 주소
  • 대상자 하드웨어 주소 (2계층)
  • 대상자 프로토콜 주소 (3계층) - IP 주소

  1. 서버 A는 목적지 서버 B의 MAC 주소를 알아내기 위해 ARP 브로드캐스트를 시도한다.
  2. 브로드캐스트를 받은 서버 B는 자신의 IP를 확인하고 응답을 보낸다.
    • 브로드캐스트 받은 다른 서버는 대상자 IP가 아니므로 ARP 패킷을 버린다.
    • 서버 B는 ARP 요청을 보낸 서버 A의 IP 주소와 MAC 주소를 알고 있으므로 모든 ARP 필드를 채울 수 있다.
    • ARP 요청에서 받은 서버 A의 정보를 이용해 대상자 MAC, IP 주소와 자신인 송신자 MAC, IP 주소를 채워 응답한다.
    • ARP 응답을 보낼 때는 목적지 주소를 알고 있으므로 유니캐스트로 송신한다.
  3. 응답을 받은 서버 A는 ARP 테이블을 갱신하고 서버 B로 패킷을 송신하여 네트워크 통신을 진행한다.

 

5-3. GARP

📌 GARP (Gratuitous ARP)

자신의 MAC, IP 주소를 알리기 위해 대상자 IP 필드에 자신의 IP 주소를 채워 ARP 요청을 보낸다.

🧐 GARP를 통해 MAC, IP 주소를 알리는 이유?

더보기
  1. IP 주소 충돌 감지
    • IP 주소는 유일한 값이므로, IP 충돌로 통신이 안되는 것을 예방하기 위해 확인하는 용도
  2. 상대방(동일 서브넷 상의 다른) ARP 테이블 갱신
    • 가상 MAC 주소를 사용하지 않는 데이터베이스 HA 솔루션에 주로 사용 (High Available, 고가용성)
    • 데이터베이스 HA는 주로 두 데이터베이스 서버가 하나의 가상 IP 주소로 서비스한다. 이때 두 대의 데이터베이스 중 한 대만 동작하고 나머지 한 대는 대기하는 액티브-스탠바이로 동작한다. 액티브 상태인 서버가 가상 IP 주소 요청에 응답해 서비스 하지만 MAC 주소는 가상 주소가 아닌 실제 주소를 사용한다. 만약 액티브 장비가 동작하지 않을 경우 스탠바이 장비가 액티브 상태가 되는데, 기존의 액티브 DB와 통신하던 단말이 있다면 이를 인지하지 못할 때 통신이 불가능해진다. 이런 경우를 방지하기 위해 스탠바이에서 액티브로 변경된 장비의 상태를 알리기 위해 사용한다.
  3. HA(고가용성) 용도의 클러스터링, VRRP, HSRP
    • 네트워크에 있는 스위치 장비의 MAC 테이블 갱신 (2번 사례와 비슷한 이유)

 

 

5-4. RARP

📌 RARP (Reverse ARP)

반대로 동작하는 ARP

  • IP 주소가 정해져 있지 않은 단말이 IP 할당을 요청할 때 사용
  • 과거 네트워크 호스트 주소 할당에 사용되었지만 제한된 기능으로 인해 BOOTP와 DHCP로 대체 됨

 

6. 서브넷과 게이트웨이

6-1. 서브넷과 게이트웨이 용도

📌 게이트웨이 (Gateway)

원격지 네트워크와 통신에 사용하는 장비

  • 원격 네트워크 통신에서 네트워크를 넘어 전달되지 못하는 브로드캐스트의 성질을 해결하기 위함
  • 기본 게이트웨이 (Default Gateway) : 게이트웨이에 대한 정보를 PC나 네트워크 장비에 설정하는 항목

⇒ 5장에서 자세히 다룰 예정

 

📌 서브넷 마스크

출발지에서 목적지 네트워크가 자신의 네트워크 범위인지 확인하기 위한 방법

📒3. 네트워크 통신하기 - 3-3. 서브네팅 을 참고하면 네트워크 범위를 파악할 수 있다.

더보기

📌 프록시 ARP (Proxy ARP)

ARP를 대행해주는 기능

  • 프록시 ARP 활성화 시 원격지 네트워크와 통신할 수 있다.
  • 편리한 것 처럼 느껴지지만, 장애가 발생했을 때 쉽게 해결할 수 없게 만드는 장애 요소가 되기도 한다.

 

 

6-2. 2계층 통신 vs 3계층 통신

✍🏻 로컬 네트워크 통신 & 원격지 네트워크

로컬 네트워크에서 직접 통신할 경우 라우터와 같은 3계층 네트워크 장비 없이 통신이 가능하다.

📌 L2 통신

2계층 까지만 정보를 확인해 통신하고 ARP 요청을 보낼 때 직접 브로드캐스트를 이용하는 로컬 네트워크 통신

📌 L3 통신

라우터 같은 3계층 장비를 활용해 3계층 정보를 확인하는 원격지 네트워크 통신

 

같은 네트워크에 있는 단말 간 통신은 ARP 브로드캐스트를 이용하여 직접 통신한다.

외부 네트워크와 통신은 단말이 직접 보낼 수 없어 ARP 요청을 기본 게이트웨이 IP 주소로 요청하여 통신한다.

 

참고자료

  • 책 - IT 엔지니어를 위한 네트워크 입문 (고재성/이상훈, 2020년 10월)
  • Catsbi's Dlog - 네트워크 통신하기

 

 

블로그의 정보

콰이엇의 개발기록

콰이엇

활동하기