본문 바로가기
CS/네트워크

[CS/네트워크] 3장 네트워크 통신하기

by ahj 2022. 4. 1.

MAC 주소, IP 주소. 주소 체계(서브넷, 게이트웨이) 용어와 프로토콜(ARP) 기능, 역할

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

데이터 전송할 때 사용하는 통신 방식의 종류

  • 유니캐스트
    • 1:1 통신
    대부분 통신.
  • 브로드캐스트
    • 1:모든 통신
    • 동일 네트워크 모든 호스트가 목적지
    유니캐스트 전 상대방 정확한 위치 알기 위해
  • 멀티캐스트
    • 1:그룹(멀티캐스트 구독 호스트) 통신
    • 다수의 특정 목적지
    IPTV, 사내 방송, 증권 시세 전송 등
  • 애니캐스트
    • 1:1통신(동일 그룹 내 1개 호스트)
    • 가장 가까운 호스트에서 응답
    가까운 DNS 서버 찾을 때 사용

최종 통신은 1:1로 유니캐스트와 애니캐스트가 동일 but 후보자는 다르다.

유니는 출발지도 1, 목적지도 1. 애니는 다수의 후보군

현재 주 사용 네트워크 주소 체계는 IPv4.

IPv6에서는 브로드 캐스트가 존재하지 않는다. 표 3-1 참고

중요한 점은 목적지 주소를 기준으로 구분한다는 것

BUM 트래픽

Broadcast, Unknown Unicast(플러딩), Multicast

유니캐스트이지만 겉으로 보이는 동작방식은 브로드캐스트에 가깝다. BUM 트래픽이 많아지면 네트워크 성능이 저하될 수 있다.

이더넷 환경에서는 ARP 브로드캐스트를 먼저 보내고 통신을 시작하므로 BUM 트래픽이 많이 발생하지 않는다.

3.2 MAC 주소

Media Access Control. 2계층 Data Link에서 통신을 위해 네트워크 인터페이스에 할당된 고유 식별자. IEEE 802 네트워크 기술(이더넷, 와이파이)에서 2계층 주소로 사용 됨. 네트워크에 접속하는 모든 장비는 MAC 주소라는 물리적 주소가 있어야 하고 이를 이용해 서로 통신하게 된다.

3.2.1 MAC 주소 체계

변경X. 하드웨어에 고정되어 출하. 네트워크 구성 요소마다 다른 주소를 가지고 있다. 매번 확인할 수 없으므로 한 제조 업체에 하나 이상의 주소 풀을 주고 제조 업체 자체적으로 풀 안에서 MAC 주소 할당. Vendor Code IEEE가 관리

48비트 16진수 12자리

앞 24비트(6자리) OUI - 제조사 코드 IEEE가 제조사에 할당

뒤 24비트(6자리) UAA - 제조사 자체적 할당

BIA(Burned-In Address)라고도 부름

  • 유일하지 않을 수도 있다
  • 제조사의 실수 or 의도 → 동일 네트워크만 아니면 문제될 것은 없다. 라우터 도움을 받을 때 라우터에서 MAC 주소가 변경
  • MAC 주소 변경
  • 결국 MAC도 메모리에 적재되어 구동되므로 여러가지 방법으로 MAC 변경해서 NIC 동작 가능. 윈도우는 Driver, 리눅스는 GNU MacChanger 등에서

3.2.2 MAC 주소 동작

NIC는 전기신호가 들어오면 2계층에서 데이터 형태(패킷)로 변환, 내용 구분. 패킷에 담긴 도착지 MAC 주소를 확인, 비교. NIC의 MAC과 다르면 패킷 폐기, 같거나 그룹주소(멀티캐스트, 브로드캐스트)면 처리할 주소로 인지, 패킷을 상위 계층으로 넘겨줌.

패킷을 폐기하지 않고 상위 계층으로 넘겨줘서 OS나 앱에서 처리하면 시스템에 부하가 작용.

가령 브로드캐스트 스톰: 네트워크 연결 모든 단말이 브로드캐스트 처리→ CPU 사용량 증가

  • 무차별 모드(Promiscuous Mode)와이어샤크
  • NIC에서 상관없는 패킷을 폐기하지 않고 메모리에 올릴 수 있도록 무차별모드 설정
  • MAC 주소를 여러개 갖는 경우
  • MAC은 NIC 종속적, 단말은 여러 NIC를 가질 수 있으므로 MAC도 여러개 가능.
  • MAC 주소로 제조 업체 찾기
  • OUI로 조회 가능

3.3 IP 주소

주소를 갖는 계층은 2계층(물리적 주소 MAC 주소), 3계층(논리 주소 IP 주소) TCP/IP 프로토콜 스택 ⇒ IP 주소 이해 매우 중요.

3계층 주소의 특징

  1. 사용자가 변경 가능한 논리 주소
  2. 주소에 레벨이 있음. 네트워크, 호스트 주소로 나뉨

3.3.1 IP 주소 체계

흔히 사용하는 32bit IPv4. IP는 v4, v6(128bit). 8bit(=1byte) 단위의 옥텟(Octet). “.”으로 구분.

MAC - 16진수 표기

IP - 10진수 표기 ⇒ 한 옥텟(8bit)은 0~255(2^8-1)값을 가짐.

MAC의 OUI(제조업체 코드), UAA(제조업체별 일련번호)처럼 IP주소도 2 부분으로 나뉜다.

  • 네트워크 주소
  • 호스트를 모은 네트워크를 지칭하는 주소. 네트워크 주소가 동일하면 로컬 네트워크
  • 호스트 주소
  • 하나의 네트워크내 호스트 구분 주소

24bit씩 절반으로 나누던 MAC과 달리 IP 주소에서 네트워크, 호스트를 나누는 기준은 고정 X. IP 주소 체계의 특징.

필요 호스트 IP 개수에 따라 네트워크 크기를 다르게 할당할 수 있는 Class개념 도입

A 클래스 : 가장 큰 주소. 약 1, 600만(2^24(8*3)) 개 IP 주소. 첫번째 “.”에 구분자(서브넷 마스크). 맨 앞 옥텟 주소 범위 0~127(0 0000000 ~ 0 1111111) 실제로 1.0.0.0~126.255.255.255 사용 가능

B 클래스 : 약 65,000(2^16(8*2))개. 두번째 “.”에 구분자. 맨 앞 옥텟 주소 범위 128~191(10 000000 ~ 10 111111)

C 클래스 : 약 250(2^8)개. 세번째 “.”에 구분자. 맨 앞 옥텟 주소 범위 192~223(110 00000 ~ 110 11111)

D 클래스 : 멀티 캐스트(Multicast)

E 클래스 : 예약(Reserved for futures)

클래스 개념 덕에 고정 체계에 비해 주소를 절약할 수 있다는 장점이 있다. 모두 같다면, 큰 네트워크를 호스트로 필요로 하는 조직에서 확보에 어려움이 있고, 작은 네트워크가 필요한 조직에서는 너무 많은 IP를 가져가 낭비가 된다.

현재는 이렇게 클래스 개념으로 분할하지 않는다. 1비트 단위로 상세히 분할

  • 네트워크에서 사용 가능한 호스트 개수 파악하기

IP에서는 네트워크 크기가 변경 되므로 사용 가능한 호스트 개수, 유효 IP 범위를 파악하는 것이 중요.

최근의 클래스리스(Classless) 네트워크의 경우 유효 IP 범위 파악이 매우 중요.

클래스체계에서 IP 체계에서 맨앞 숫자를 네트워크 주소, 맨뒤 숫자를 브로드캐스트 주소로 사용하므로 A 클래스는 2^24-2, B는 2^16-2, C는 2^8-2개를 IP로 실제로 사용할 수 있다.

3.3.2 클래스풀과 클래스리스

클래스 기반 : Classful → 처음 도입 때는 확장성, 주소 낭비 ⬇️ ⇒ 최적의 조건. 구분자(서브넷 마스크)가 필요 없음(맨 앞자리 숫자로 어느 클래스인지 구분하고 적용할 수 있었기 때문)

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

클래스풀 체계는 폭발적으로 증가한 호스트 숫자를 감당할 수 없었다. 이론적으로는 43억여 개이지만 실제로는 훨씬 적었다. 네트워크 주소를 계층화하고 분할하기 위해 낭비되는 IP도 많았음.

IP 주소 부족, 낭비 문제 ⇒ 3가지 보존, 전환 전략

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

IPv4의 가장 큰문제 : 주소 자체의 부족 + 할당 받고 낭비. Classful에서는 한 개의 클래스 네트워크가 한 조직에 할당되기만 해도 다른 기관에서 사용할 수가 없었다. 이렇게 할당 받고 사용되지 않아 낭비되는 IP 주소만 해도 수천만 개.

⇒ 클래스 개념 자체를 버린 Classless. 현재 우리가 사용하는 체계.

클래스리스에서는 네트워크, 호스트를 나누는 구분자 사용 : 서브넷 마스크(Subnet Mask)

서브넷 마스크(Subnet Mask)

A 클래스 : 255.0.0.0 ( /8)

B : 255.255.0.0 (/16)

C : 255.255.255.0 (/24)

2진수의 and 연산을 통해 활용. 맨 앞 옥텟을 활용할 필요가 없음.

클래스리스에서는 반드시 서브넷 마스크가 필요하다.

3.3.3 서브네팅

네트워크-호스트 구분 기준을 사용자가 정해서 Classful 단위보다 더 쪼개 사용하는 것. 현대 Classless 네트워크의 가장 큰 특징. 더 잘개 쪼개서 1비트 단위로 분할하므로 이해하기 어렵다.

고민해줄 2가지 경우

  1. 디자인 단계에서 설계자가 효율적 분할을 위해 계획하는 경우
  2. 네트워크 내 필요한 단말을 고려한 범위 설계
  3. 이미 분할된 네트워크에서 자신과 원격지 네트워크 구분해야 하는 경우
  4. IP 범위 파악, 기본 게이트웨이와 서브넷 마스크 제대로 설정 확인

3.3.3.1 네트워크 사용자의 서브네팅 → 중요한 듯

사용자는 IP 주소 범위를 파악해야 한다. 하지만 비트 단위는 사용자가 판단하기 어렵다.

서브네팅 방법

  1. 내 IP를 2진수 표현
  2. 서브넷 마스크를 2진수 표현
  3. 2진수 AND 연산으로 서브네팅 네트워크 주소 알아내기
  4. 호스트 주소 부분 → 모두 2진수 1로 변경 ⇒ 브로드캐스트 주소 알아내기
  5. 유효 IP 범위 파악. 서브네팅된 네트워크 주소 + 1이 유효 IP 중 최소
  6. 브로드캐스트 주소 - 1은 유효 IP 중 최대
  7. 2진수 결과값을 10진수로 변환

서브넷 마스크가 핵심. 항상 이 구분자를 중심으로 계산이 이루어져야 함.

간단한 서브네팅 방법

  1. 서브넷 마스크 2진수 변환
  2. 현재 서브넷 최대 IP 개수 크기 파악 (ex. 2^6 = 64)
  3. 서브넷 최대 IP 개수 크기로 나열 → 기준이 되는 네트워크 주소 파악.(ex. 0~63/64~127/128~191/192~255)
  4. 호스트 주소가 속한 네트워크 선택
  5. 필요한 주소 정리
    • 네트워크 주소
    • 브로드캐스트 주소
    • 유효 IP 범위

중요한 것은 서브넷 마스크 중심으로 파악하고 서브넷 네트워크 크기를 알아내는 것.

3.3.3.2 네트워크 설계자 입장

설계자가 고민할 부분

  • 서브넷된 하나의 네트워크에 IP를 몇 개 할당?(or PC는 몇 대?)
  • 서브넷된 네트워크가 몇 개 필요?
  1. 서브넷된 하나의 네트워크에 특정 개수
  2. 거기에 맞게 2진수 배수 단위 확인 (+ 네트워크 주소, 브로드캐스트 주소로 사용할 2빼주고 계산)

가능하면 사설 IP 대역을 사용해 충분한 IP 대역을 사용하는 것이 좋다. 공인 IP는 인터넷에서 유일하게 사용되므로 수가 제한되어 있다. 사용하지 않는 IP는 할당기관이 회수한다. 사설 IP는 회사 내부에서만 사용, 제한 없이 큰 네트워크 사용 가능.

최대한 같은 크기의 네트워크, 10진수 표현해도 쉽게 이해할 수 있는 C 클래스 단위인 24bit로 쪼개 할당하는 것이 바람직.

잘 설계된 네트워크는 네트워크 전체 성능 향상, 관리 편리 but IP 주소 낭비. → 사설 IP 대역으로 네트워크 설계.

3.3.4 공인 IP와 사설 IP

인터넷 접속 → IP 주소. 전세계에서 유일해야 하는 식별자인 공인 IP. 인터넷 접속이 아닌 개인 네트워크 구성에는 공인 IP가 아니어도 된다. 이런 경우를 사설 IP라고 한다.

공인 IP - IP 할당기관(한국 KISA)에서 인터넷 독립기관 주소(Autonomous System Number, ASN) 할당, 독립 IP 할당. 과정이 복잡.

사설 IP - 인터넷 접속 X, NAT(Network Address Translation, 네트워크 주소 변환) 기술 등에서 사용.공유기나 회사 방화벽 사용. NAT 장비로 IP 변환, 공인 IP로 변경하고 인터넷 접속 가능. 가정 공유기가 대표적 예

  • 인터넷 표준
  • 특별한 RFC(Request for Commants)와 그 집합. RFC는 인터넷 표준 문서는 아니다. 의미있는 표준 문서는 국제 인터넷 표준화 기구(IETF)를 통해 표준으로 인정받는다.

회사 내부 사설 네트워크 구축서는 NAT 사용하더라도 다른 사용자에게 할당된 공인 IP를 사용하면 안 된다. 규모가 클 때는 A클래스 크기의 10.0.0.0/8 네트워크. 규모가 작을 때는 C 클래스 192.168.x.0/24 사용. 공유기에서 가장 많이 사용되는 기본 IP가 192.168.1.0 인 이유. 모바일 디바이스 테더링 기능은 B클래스

  • Bogon IP
  • IANA가 예약해놓아 공인 IP로 할당하지 않는 주소. Bogon IP 대역의 주소 사용 시도는 해킹 목적인 IP 스푸핑(Spoofing, 주소 변조)이거나 실수이므로 적절히 필터링 해주는 것이 좋다. 새로 할당되는 경우도 있으므로 변경을 확인해야 한다.
  • IP 주소 발신자 확인 방법
  • IP 주소를 보고 발신자 신원, 소속 조직 이름을 알 수 있다.

3.4 TCP와 UDP

2계층 MAC과 3계층 IP는 목적지를 정확히 찾아가기 위한 주소 제공이 목적.

4계층에서는 목적이 좀 다름. 단말 안에서 여러 앱 프로세스 중 통신해야 할 목적지 프로세스를 정확히 찾아가고 패킷 순서가 바뀌지 않도록 잘 조합 ⇒ 원래 데이터를 잘 만들어내기 위한 역할

TCP/IP 프로토콜 스택의 4계층에서 동작하는 TCP와 UDP 프로토콜

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

인캡슐, 디캡슐 과정에 각 계층 헤더 추가, 여러가지 정보. 가장 중요한 2가지 정보는

  1. 각 계층에서 정의하는 정보4계층에서는 시퀀스 번호, ACK 번호
  2. 수신 측 동일 계층에서 사용하기 위한 정보
  3. 상위 프로토콜 지시자 정보
  4. 상위 계층 프로토콜 or 프로세스를 적확히 찾아가기 위한 목적. 2계층 이더타입, 3계층 프로토콜 번호, 4계층 포트 번호

4계층은 TCP, UDP가 담당. 앱 프로세스 정확히 찾고 패킷 잘 쪼개 보내고 잘 조립하기 → 이를 위해 TCP 프로토콜에서는 시퀀스 번호와 ACK 번호 사용

일반적으로 TCP/IP에서는 Client-Server 방식으로 서비스를 제공. Client용 프로그램, Server용 프로그램을 구분해 개발.

2,3계층의 상위 프로토콜 지시자는 출발지 목적지 구분 x 1개만 사용. 포트 번호(4계층)는 출발지, 목적지를 구분해 처리해야 한다.

평소 표현하는 포트 번호는 Server의 포트. 이 중 웰노운 포트는 IANA에 등록된 1023번 이하 포트 번호

다양한 앱에 포트 번호 할당 위해 Registerd Port 범위 사용.1024~49151. 신청하면 IANA에 등록되어 관리 공식, 비공식 혼재, 사설 포트번호로 사용되기도

동적, 사설, 임시 포트 범위 49152~65535. IANA 등록 X.

IP에서도 출발지, 목적지가 반대가 되듯이 서비스 요청, 응답에서 요청 패킷과 응답 패킷이 반대가 된다.

이런 포트의 방향 변화는 문제 해결에서 서비스 흐름을 이해하는 데 매우 중요하다.

3.4.2 TCP

4계층 특징 대부분 포함. 신뢰할 수 없는 공용망에서도 정보 유실 없는 통신 보장 위해 세션을 안전하게 연결, 데이터 분할, 패킷이 잘 전송되었는지 확인하는 기능.

패킷에 번호(Sequence Number) 부여, 잘 전송되었는지에 대해 응답(Acknowledge Number). 한꺼번에 얼마나 보내야 수신자가 잘 받아 처리할 수 있는지 전송 크기(Window Size)까지 고려해 통신.

TCP의 이러한 여러 역할 덕에 네트워크 상태를 심각하게 고려 안해도, 특별한 개발 없이도 쉽고 안전하게 네트워크 사용 가능

3.4.2.1 패킷 순서, 응답 번호

분할된 패킷을 잘 분할하고 수신 측이 잘 조합하도록 패킷에 순서(시퀀스번호)를 주고 응답 번호(ACK 번호)를 부여한다.

두 번호가 상호작용 ⇒ 순서, 패킷 손실 파악

받은 번호보다는 송신하는 측에서 보내는 순서가 Seq에 담기는 것

  1. 출발지에서 SEQ 0
  2. 수신에서 0 잘 받았다고 ACK 1 응답. 수신 측에서는 처음 보내는 패킷이니까 얘 입장에서 SEQ 0 부여
  3. 반복

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

TCP는 일방적으로 패킷을 보내는 것이 아니다. 상대방이 잘 받았는지 확인하기 위해 ACK 번호를 확인하고 다음 패킷을 전송한다. 패킷 전송 확인을 위한 패킷 수신 통신 시간. 먼 거리에서는 왕복 지연 시간(Rount Trip Time, RTT)가 더 늘고, 응답 기다리는 시간이 더 길어진다.

작은 패킷이 여러개 왔다갔다 하는 건 긴 시간. 그래서 데이터 보낼 때 패킷을 한꺼번에 보내고 응답 하나만 받기. 가능하면 많이 보내면 좋겠지만 유실 가능성을 고려해서도 적절한 송신량을 결정해야 한다.

이 때 한번에 받을 수 잇는 데이터 크기를 윈도 사이즈

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

데이터 유실 발생 → 윈도 사이즈 절반

정상통신 → 윈도 사이즈 하나씩 증가

네트워크 경합 ⇒ 패킷 드롭 → 작아진 윈도 사이즈 ⇒ 느려져 회선 제대로 못하는 상황 가능.

회선 속도 증가 or 경합 임시로 피하게 하기.

3.4.2.3 3방향 핸드셰이크

안전 통신을 위해 통신 시작 전 사전 연결 작업 진행. 각 통신에 필요한 리소스를 미리 확보하는 작업 중요. 3번의 패킷을 주고 받으며 통신을 준비 : 3방향 핸드쉐이크

3방향 핸드쉐이크 진행에 따라 상태 정보를 부르는 이름이 다르다.

LISTEN :서버에서 클라이언트 접속 받기 위해 대기, 클라이언트가 통신 시도 때는 Syn 패킷을 보낸다. 클라이언트 SYN-SENT → Syn을 받은 서버는 SYN-RECEIVE 상태. Syn, Ack로 응답 → 클라이언트 ESTABLISHED 응답 → 서버도 응답 받고 ESTABLISED

둘 다 ESTABLISHED면 연결이 성공적으로 완료 됐음.

이 과정으로 기존 통신과 새로운 통신을 구분해야하게 됐음. 새연결시도인지 기존에 대한 으압인지 구분하기 위해 헤더에 Flag 값을 넣어 통신

TCP 플래그

통신 성질 나타냄. 초기 연결, 응답, 정상 종료, 비정상 정료 등의 용도

  • SYN
  • 연결 시작 용도. 시작 때 1 표시
  • ACK
  • 유효하면 1로 표시
  • FIN
  • 종료시 1로 표시 양방향 종료시 사용
  • RST
  • 종료시 1로 표시 일방적으로 끊을 때 사용
  • URG
  • 긴급 데이터면 1로 표시
  • PSH
  • 서버 측에서 전송할 데이터가 없거나 버퍼링 없이 응용 프로그램으로 즉시 전달할 것을 지시할 때 사용

3.4.3 UDP

TCP와 달리 UDP는 4계층 특징이 거의 없다. UDP 헤더는 TCP와 비교하면 내용이 거의 없다.

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

음성, 실시간 스트리밍과 같이 시간에 민감한 프로토콜 or 애플리케이션 사용하는 경우, 멀티캐스트처럼 단방향으로 응답 받기 어려운 환경에서 주로 사용

신뢰성보다는 시간에 맞춰 계속 전송하는 것이 중요하면 UDP 사용

사전 연결 확립 절차 X 그 대신 첫 데이터는 리소스 확보를 위해 인터럽트를 거는 용도로 사용되고 유실.보통 TCP로 앱끼리 모든 준비 마치고 실제 데이터만 UDP를 이용하는 경우가 대부분

3.5 ARP

2,3 계층은 목적지를 찾아갈 수 있도록 해주지만 2,3계층 주소간은 관계가 없다.

2계층은 NIC 종속

3계층은 직접 할당 or DHCP이용 자동 할당

실제 통신은 IP 주소 기반으로 일어나고 MAC은 상대방 주소를 자동으로 알아내 통신하게 된다. 이 때 상대의 MAC 주소를 알아내기 위해 사용되는 프로토콜이 ARP(Address Resolution Protocol)

3.5.1 ARP란?

IP, MAC은 전혀 연관이 없어서 둘을 연계시켜주기 위한 메커니즘이 필요한데 그것이 ARP

ARP는 TCP/IP 프로토콜 스택을 위해서만 동작하는 것은 아니다. TCP-이더넷 등에서도 ARP를 이용해 물리적 주소와 논리적 주소를 연결

통신 시도시 출발지, 목적지 IP주소는 미리 알고 있지만 상대 MAC 주소는 알 수 없어서 인캡슐 과정에서 2계층 캡슐화를 수행할 수 없다. 그래서 상대 MAC 주소를 알아내려면 ARP 브로드캐스트를 이용해 네트워크 전체에 상대 MAC을 질의해야하고 해당 ARP 브로드캐스트를 받은 목적지는 역시 ARP 프로토콜을 이용해 MAC 주소를 응답한다. 이제야 정상적으로 인캡슐이 되고 상대방에 전달 될 수 있다.

ARP 프로토콜을 이용해 IP&MAC을 매핑하면 “동적” → PC에서 쉽게 파악 가능

패킷 네트워크에서는 큰 데이터를 잘라 전송 ⇒ 여러 패킷 전송 → 패킷 보낼때마다 ARP 브로드캐스트 수행 → 통신 효율 ⬇️ → 메모리에 정보(ARP 테이블)를 저장해두고 재사용.

ARP 테이블 오래 유지하면 좋지만 논리 주소는 언제든 바뀔 수 있으므로 일정시간 통신이 없으면 테이블은 삭제

ARP 작업은 하드웨어 가속이 아니느 CPU 직접 수행이기 때문에 많은 ARP 요청이 짧은 시간 안에 들어오면 큰 부하로 작용(해커들이 많이 수행) ⇒ 네트워크 장비들은 일반 PC보다 ARP 테이블 저장 기간을 길게 설정 ⇒ 필터링 or 천천히 처리하는 방식으로 장비 보호. ARP 테이블을 수동으로 갱신하도록 운영하기도.

ARP 테이블 외에도 DNS 캐시, 라우팅 캐시등 다양한 계층에서 네트워크 성능을 높이기 위해 캐시 테이블을 가지고 있다.

3.5.2 ARP 동작

송신자 MAC 주소, IP 프로토콜 주소, 대상자 MAC 주소, IP 프로토콜 주소. 이렇게 4개의 필드가 중요하게 사용된다.

서버 A : 목적지 MAC을 모르기에 정상적으로 패킷을 만들 수 없다. ⇒ 목적지 MAC(B 서버)을 알기 위해 ARP 요청을 네트워크에 브로드캐스트 : 브로드캐스트 목적지 MAC 주소는 브로드캐스트(FF-FF-FF-FF-FF-FF)로 채우고 ARP 프로토콜 필드에서 대상자 MAC 주소는 00-00-00-00-00-00으로 채워 뿌린다.

|패킷 필드에서 사용되는 출발지, 목적지 IP, MAC 주소는 송신자, 대상자 IP, MAC 주소와 구분해 사용된다.|

브로드캐스트 ⇒ 모든 단말이 ARP 프로토콜 내용을 확인 후 폐기 or 처리(B서버) → 응답. 이때 B 서버에서는 목적지가 되는 A 서버의 IP, MAC을 알기 때문에 ARP 필드를 채워 응답할 수 있다.

이렇듯 ARP 요청은 처음 보낼 때는 브로드캐스트인 반면, 응답을 보낼 때는 유니캐스트이다.

A는 B로부터 ARP 응답을 받아 자신의 ARP 테이블 갱신. 정해진 시간동안 유지, 시간 안에 다시 통신 이루어지면 시간 초기화

ARP 캐시 테이블 갱신 → 상대 MAC 주소를 알고 있으므로 목적지 MAC 주소를 완성 → ping 패킷 보내기

3.5.2 GARP

ARP 프로토콜 필드를 그대로 사용, 내용을 변경해 원래 목적과 다르게 사용하는 GARP, RARP와 같은 프로토콜이 있다.

Gratuitous ARP : 대상자 IP에 자신의 IP를 채워 ARP 요청 send. 즉, 자신의 IP와 MAC 주소를 알릴 목적으로 사용. 목적지 MAC 주소는 브로드캐스트(목적이 자신을 알리는 것이므로).

송신자 IP - 자신, MAC - 자신, 대상자 IP - 자신, MAC - 00:00:00:00:00:00

GARP을 사용해 동일 네트워크에 자신의 IP 주소, MAC 주소를 알려주는 이유?

  1. IP 주소 충돌 감지
  2. 상대방(동일 서브넷 상의 다른)의 ARP 테이블 갱신
  3. HA(고가용성) 용도의 클러스터링, VRRP, HSRP

3.5.2.1 IP 주소 충돌 감지

여러 이유로 할당 받은 IP를 다른 사람이 사용하고 있을 수 있다(IP는 유일하게 할당되어야 하지만). 출동 예방을 위해 이미 사용 중인 IP인지 GARP를 통해 확인. GARP 응답이 오면 사용 중인 단말이 있다는 것.

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

동일 네트워크상 단말들의 ARP 캐스 테이블 갱신이 목적. 가상 MAC 주소를 사용하지 않는 데이터베이스 HA(High Availability, 고가용성) 솔루션에서 주로 사용. DB HA는 두 DB 서버가 하나의 가상 IP 주소로 서비스. 한 대 동작-한대 대기 : 액티브-스탠바이(Active-Standby)로 동작.

A가 Active, B가 Standby였다가 A가 Standby, B가 Active가 되었을 때 A의 MAC 주소를 가지고 있는 단말에서는 잘못된 요청을 보낼 수 있기 때문에 GARP로 Active 장비가 변경되었을을 알려줄 수 있다.

최근 네트워크 장비들은 보안상의 이유(패킷 가로채는 기법)로 가상 MAC을 HA 솔루션으로 쓰고 실제 MAC 때문에 사용하던 GARP는 거의 사용하지 않는다.

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

HA 솔루션처럼 장비 이중 화를 위해서도 사용되지만 가상 MAC을 사용하는 클러스터링, FHRP(VRRP, HSRP 등, First Hop Redundancy Protocol)에서도 GARP가 사용.

HA 솔루션 → 단말의 ARP 테이블 갱신이 목적

클러스터링, FHRP → 네트워크 내 스위치 장비의 MAC 테이블 갱신이 목적

  • FHRP : 디폴트 게이트웨이 장애 발생 ⇒ 외부 통신 할 수 없는 문제 해결 위해 개발

가상의 MAC 주소 → ARP 테이블 갱신 필요 X 클러스터링 중간 스위치의 MAC 테이블은 마스터 변경시 갱신 필요. 마스터 역할이 바뀌면 새로 마스터되는 쪽에서 GARP 전송해서 스위치에서 MAC 주소에 대한 포트 정보를 변경해 MAC 테이블 갱신

  • 클러스터링, HA 솔루션에서 빠른 시간 안에 정상적으로 페일오버(Failover, 장애 극복)하지 못할 경우, HA 자체 문제인 경우도 있지만 GARP를 받은 스위치가 MAC 테이블을 빨리 갱신하지 않아서 발생하는 경우도 있다. 따라서 HA 솔루션 도입시 이런 부분이 반드시 함께 고려, 테스트 되어야 한다. → GARP 보내는 시간, 횟수 조절 스위치와 연결된 포트 순간적으로 리셋(플랩)해서 MAC 테이블 초기화 하기도

3.5.4 RARP

Reverse ARP. 반대로 동작하는 ARP. 구조는 같지만 필드에 들어가는 내용이 다르고, 원래 목적과 반대로 사용

IP 주소가 정해져 있지 않은 단말이 IP 할당을 요청할 때 사용.

즉, ARP와 반대로 MAC은 아는데 IP를 모를 때 질의할 때 사용.현재는 BOOTP와 DHCP로 대체되어 사용되지 않는다.

3.6 서브넷과 게이트웨이

초기 네트워크는 LAN을 고려해 통신방법이 매우 간단했다. 모든 단말이 하나의 네트워크에 존재하는 로컬 네트워크(LAN). 인터넷 기술의 발달 ⇒ LAN 간 통신의 중요성 ⬆️

LAN 내에서와 LAN 간 통신은 동작방식, 필요 네트워크 장비가 모두 다르다.

원격지 네트워크와 통신에 사용하는 장비 : 게이트웨이, 3계층 장비(라우터, L3 스위치)가 역할 수행

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

LAN 내에서는 ARP 브로드캐스트를 통해 도착지 MAC을 알고 이를 이용해 직접 통신가능 했지만 브로드캐스트는 네트워크를 넘어 전달되지 못해서 원격 네트워크 통신은 네트워크 장비의 도움이 필요. 이 장비가 게이트웨이(Gateway)

게이트웨이에 관한 정보를 PC나 네트워크 장비에 설정하는 항목이 ‘기본 게이트웨이(Default Gateway)’ : 여러 네트워크와 연결 ⇒ 적정한 경로를 지정해주는 역할

출발지에서는 목적지가 자신이 속한 네트워크 범위인지 확인하는 작업이 필요 ⇒ 이 때 필요한 방법이 서브넷 마스크. 자신의 IP 주소와 서브넷 마스크 and 연산 ⇒ 자신이 속한 네트워크. 목적지가 이 결과값 즉, LAN 주소에 있으면 로컬 통신 아니면 원격지 통신

  • 프록시 ARP편리하게 느껴지지만 설정 오류나 필수 입력이 비어도 동작하는 경우가 많아 장애 대응에 방해가 되기도 한다.
  • ARP를 대행해주는 기능. 원래 원격지 통신은 기본 게이트웨이를 통해서 서로 주고 받아야만 통신할 수 있었는데, 기본 게이트웨이에 프록시 ARP가 활성화 된 경우, 원격지더라도 로컬에 ARP를 보내 통신 할 수 있다. 프록시 ARP가 활성화된 기본 게이트웨이(라우터)는 자신이 대행해 ARP 응답을 한다. 그러면 패킷이 기본 게이트웨이로 보내지고 원격지 경로로 전달될 수 있다.

3.6.2 2계층 통신 vs 3계층 통신

정확한 표현들은 아니다. 정확히는 2계층 통신 : 로컬 네트워크 통신, 3계층 통신 : 원격지 네트워크 통신

로컬 네트워크 내 통신은 3계층 네트워크 장비의 도움 없이 통신이 가능. 2계층까지만 정보 확인해 통신, ARP 때는 브로드캐스트로 MAC까지만 이용하니까 이를 L2 통신이라고 부른다. 같은 네트워크 내에서는 직접적으로 통신이 이루어진다. MAC 주소를 알기 위해 ARP 브로드캐스트를 이용, 상대 MAC 알자마자 패킷이 캡슐화되어 통신 시작

반면, 원격지 네트워크 통신은 라우터와 같은 3계층 장비 도움 없이는 통신할 수 없다. 패킷 전송하는 네트워크 장비에서 3계층 정보까지 확인해야 한다. L3 통신이라고 한다. 직접 보낼 수 없는 목적지 위치 → ARP 요청을 기본 게이트웨이의 IP 주소로 요청. 게이트웨이에서 응답받으면 도착지 MAC에 응답 받은 기본 게이트웨이 MAC 주소를 넣고 통신 시작

L2 - 도착지 MAC, IP가 같다.

L3 - 도착지 IP는 통신의 실제 도착지, MAC은 디폴트 게이트웨이의 MAC 주소가 사용

댓글