study day-06

상훈·2024년 2월 4일

1. IP

  • 인터넷 프로토콜

컴퓨터로 네트워크에서 장치를 식별하고 통신을 가능하게 하는 주소 체계

  • 두 가지 주요한 IP 주소 형식 존재
    • IPv4
      • Ex) 192.0.2.1
    • IPv6
      • IPv6는 현재 주로 사용되는 Ipv4의 주소 고갈 문제를 해결하기 위한 새로운 주소 체계
      • Ex) 2001:0db8:85a3:0000:0000:8a2e:0370:7334
  • IP 프로토컬을 사용하여 캡슈화할 때 데이터에 IP 헤더가 추가됨
  • 이것을 IP 패킷이라고 함
  • 비트 -> 프레임 -> IP패킷 -> 세그먼트 -> 데이터
  • IP 주소 고갈 문제를 해결하기 위한 방법
    1. Subnetting
    2. DHCP

Subnet

서브넷이란 네트워크를 작은 네트워크로 분할한 것

  1. CIDR 설정

    • 10.0.0.0/16

    • prefix를 16을 주어 16비트를 네트워크 ID로 고정하고 뒤에 16비트를 호스트 id로 사용

    • 십진수로 보았을 때 10.0까지는 고정되며(네트워크 ID), 뒤에 0.0(호스트ID)는 자유롭게 값이 들어옴 (0~255)

    • prefix가 16일 때 실제 10.0.0.0은 네트워크 주소이고, 10.0.255.255 브로드캐스트 주소로 호스트 범위는 10.0.0.1~10.0.255.254

    1. AWS에서 subnet 사용 예시


  - 두 개의 가용 영역에 각각 public subnet, private subnet을 한 개씩 설정(고가용성)
  - CIDR : 24
    - 10.0.1(네트워크 ID) 고정, 마지막 옥텟은 1~254의 값을 자유롭게 가짐 
  - 기존 VPC에서 설정된 네트워크를 분할해서 사용하는 것
    - 기존 VPC의 IP 범위는 10.0.0.1~10.0.255.254
    - pub-sub1의 IP 범위는 10.0.1.1~10.0.1.254 
  - 하기와 같이 subnet 설정
    - pub-sub1
      - 가용 영역 : us-west-1a
      - IPv4 : 10.0.1.0/24
    - pri-sub1
      - 가용 영역 : us-west-1a
      - IPv4 : 10.0.2.0/24
    - pub-sub2
      - 가용 영역 : us-west-1c
      - IPv4 : 10.0.3.0/24
    - pri-sub2
      - 가용 영역 : us-west-1c
      - IPv4 : 10.0.4.0/24

DHCP

IP를 동적으로 할당하는데 사용되는 프로토콜

  • 호스트가 네트워크에 연결되면 DCHP 서버에게 요청을 보내고, DHCP 서버는 사용 가능한 IP 주소 중 하나를 동적으로 할당

  • DHCP는 호스트가 네트워크를 떠날 때 해당 IP 주소를 반환하고, 다른 호스트에게 재할당 가능

  • 동작 방식

    • DHCP Discover
      • DHCP 클라이언트는 DHCP 서버를 찾기 위해 DHCP Discover 메시지를 브로드캐스트로 전달
      • IP가 아직 없으므로 출발지는 Zero IP 주소(0.0.0.0), 목적지는 브로드캐스트 주소(255.255.255.255)
      • 출발지 UDP : 68, 도착지 UDP : 67
    • DHCP Offer
      • DHCP Discover를 수신한 DHCP 서버는 클라이언트에 할당할 IP 주소와 서브넷, 게이트웨이 등의 정보를 포함한 DHCP 메시지를 클라이언트로 전송
    • DHCP Request
      • DHCP 서버로부터 제안받은 IP 주소와 DHCP 서버 정보를 포함한 DHCP 요청 메시지를 브로드캐스트로 전송
    • DHCP Acknowledgement
      • 클라이언트로부터 IP 주소를 사용하겠다는 요청을 받으면 DHCP 서버에 해당 IP를 어떤 클라이언트가 언제부터 사용하기 시작했는지 정보를 기록하고 DHCP Request 메시지를 정상적으로 수신했다는 응답 전송
    • IP 임대
      • 클라이언트가 IP를 사용하는 도중에 임대 시간이 만료되면 사용하던 IP는 다시 수거되고 클라이언트는 다이 처음부터 DHCP Discover부터 시작해 IP를 재할당 받음
      • 갱신 과정으로 거쳐 IP주소가 IP 풀에 다시 반환되지 않고 계속 사용하는 경우도 있음
        • 임대 시간의 50%가 지나면 DHCP 갱신 과정을 수행
        • 이미 사용 중인 IP 정보가 있어 DHCP Discover와 DHCP Offer 과정을 생략하고 DHCP Request를 DHCP로 곧바로 전송하고DHCP 서버에서는 DHCK ACK를 보내면서 갱신 과정 진행
        • 만약 50%가 지난 시점에서 갱신을 실패하면 남은 시간의 50% 지점에서 다시 갱신을 시도하고, 이때도 실패하면 추가 갱신 없이 임대 시간이 모두 지난 후에 IP 반납하고 처음부터 IP를 할당 받음
    • DHCP 릴레이 에이전트
      • DHCP 서버 한 대로 여러 네트워크 대역에서 IP 풀을 관리하는 기능
      • DHCP 클라이언트와 DHCP 서버가 서로 다른 대역에 있는 경우, DHCP 패킷을 중간에서 중계하는 역할을 수행

2. TCP와 UDP(전송 계층)

  • 인터넷 계층은 데이터를 어디로 전송하는지
  • 전송 계층은 데이터를 제대로 전달하는 역할

TCP

  • 연결형 통신 : 신뢰할 수 있고 정확한 데이터를 전달하는 통신

  • 3-way 핸드셰이크

  • 연결 요청 : SYN - SYN + ACK - ACK

  • 연결 종료 : FIN - ACK + FIN - ACK

  • 연결 요청 후에는 일련 번호와 확인 응답 번호 사용

    • 일련 번호 : 보낸 데이터의 순서를 알려줌
    • 확인 응답 번호 : 몇 번 데이터를 수신했는지 알려줌
  • 통신을 할 때마다 확인 응답을 반환하는 방식이어서 효율이 낮음

  • 응답을 기다리는 대신 세그먼트를 연속해서 보내고 한 번에 확인하여 효율을 높일 수 있음

  • 윈도우 크기 : 얼마나 많은 세그먼트를 저장해놓을 수 있는지

UDP

  • 비연결형 통신 : 효율성을 중요시하는 방식
  • 일방적으로 데이터를 전달하며, 연결을 맺지 않고 전달
  • 요청 - 응답 + 응답 + 응답 ... (브로드캐스트 방식)

DNS

도메인 주소를 IP주소로 변환하는 역할

  • 네트워크 프로토컬
    • 데이터 프로토콜
    • 컨트롤 프로토콜 : 통신에 직접 관여하지 않지만 처음 통신 관계를 맺거나 유지하는데 역할을 함
      • ARP, ICMP, DNS

DNS란

  • 사이트에 접속하거나 링크에 지정된 주소

  • 문자열로 구성된 주소가 외우기 쉬움

  • IP가 변경되어도 도메인 주소를 사용하면 접속 방법 변경 없이 서비스 이용 가능

  • 흐름

    1. 사용자가 도메인 주소를 활용하여 www.naver.com 서비스 요청
    2. 네트워크 설정에 입력한 DNS로 해당 도메인에 대한 IP 주소 질의를 보냄
    3. 요청한 도메인의 서비스 IP 주소 받음

    사용자가 웹 브라우저에 naver.com을 입력하면 DNS 서버에서 naver.com 주소가 무엇인지 질의하고 DNS 서버는 naver.com의 IP 주소가 202.179.177.21이라고 사용자에게 알려줌. 이후 사용자는 DNS로 응답받은 202.179.177.21이라는 IP주소를 이용해 실제 naver.com에 접속

DNS 서버의 구조와 명명 규칙

  • 역트리 구조

    www.naver.com.

    • root : .
    • Top-Level : com
    • Second-Level : naver
    • Thrid-Level www
  • 루트 도메인

    • 도메인을 구성하는 최상위 영역
    • DNS 서버는 사용자가 쿼리한 도메인에 대한 값을 직접 갖고 있거나 캐시에 저장된 정보를 이용해 응답
    • DNS 서버에 해당 도메인 정보가 없으면 루트 DNS에 쿼리
  • Top-Level Domain(TLD)

    TLD는 IANA(Internet Assigned Numbers Authority)에서 구분한 6가지 유형으로 구분

    • Generic(gTLD)
      • 특별한 제한 없이 일반적으로 사용되는 최상위 도메인
      • 세 글자 이상으로 구성
        • com : 일반 기업체
        • edu : 4년제 이상 교육기관
        • gov : 미국 연방정부기관
        • int : 국제기구, 기관
        • mil : 미국 연방군사기관
        • net : 네트워크 관련 기관
        • org : 비영리기관
    • country-code(ccTLD)
      • 국가 최상위 도메인
      • ISO 3166 표준에 의해 규정된 두 글자의 국가 코드 사용 (우리나라 : kr)
    • sponsored(sTLD)
      • 특정 목적을 위한 스폰서를 두고 있는 최상위 도메인
        • 특정 민족공동체, 전문가 집단, 지리적 위치 등
        • ['.aero', '.asia', '.edu', '.museum']
    • infrastructure
      • 운용상 중요한 인프라 식별자 공간을 지원하기 위해 전용으로 사용되는 최상위 도메인
    • generic-restricted(grTLD)
      • 특정 기준을 충족하는 사람이나 단체가 사용할 수 있는 최상위 도메인
    • test(tTLD)
      • 개발 프로세스에서 테스트 목적으로 사용하는 최상위 도메인

DNS 동장 방식

  • hosts 파일 : 도메인과 IP 주소를 설정해두면 해당 도메인 리스트는 항상 DNS 캐시에 저장

    1. 도메인 쿼리
    2. DNS 캐시 정보 확인
    3. 캐시에 없다면 DNS 서버로 쿼리 수행
    4. 결과를 캐시에 저장
  • 쿼리 과정

    zigispace.net 도메인을 클라이언트가 DNS에 쿼리

    1. DNS 서버는 루트 DNS에 다시 쿼리
    2. 루트 DNS 는 .net에 대한 정보를 관리하는 DNS 주소 정보를 DNS 서버에 응답
    3. 응답을 받은 DNS 서버는 .net을 관리하는 DNS 서버에 zigispace.net에 대해 쿼리
    4. .net을 관리하는 DNS 서버는 zigispace.net을 관리하는 DNS 관련 정보를 처음 DNS 서버에 응답
    5. DNS 서버는 마지막으로 zigispace.net을 관리하는 DNS에 쿼리하고 zigispace.net에 대한 최종 결과값을 받게됨

재귀적 쿼리 : 쿼리를 보낸 클라이언트에 서버가 최종 결괏값을 반환하는 서버 중심 쿼리

반복적 쿼리 : 최종값을 받을 때까지 클라이언트에서 쿼리를 계속 진행하는 방식

마스터와 슬레이브

DNS 서버는 마스터(Master, Primary) 서버와 슬레이브(Slave, Secondary) 서버로 나눌 수 있음

  • 마스터 서버가 우선 순위가 더 높지 않고 두 서버 모두 도메인 쿼리에 응답
  • 도메인에 대한 존(zone) 파일을 직접 관리하는지 여부
    • 마스터 : 존 파일을 직접 생성해 도메인 관련 정보를 관리
    • 슬레이브 : 마스터에 만들어진 존파일을 복제 (영역 전송)

GSLB

DNS에서 동일한 레코드 이름으로 서로 다른 IP 주소를 동시에 설정할 수 있음. 이렇게 설정하면 도메인 질의에 따라 응답받는 IP 주소를 나누어 로드밸런싱 할 수 있음. 이것을 DNS 로드 밸런싱이라고 함

  • DNS 서버는 특정 서비스에 문제가 있을 때 이것을 감지하지 못함
  • GSLB는 이런 문제점을 해결해 도메인을 이용한 로드밸런싱 구현
  • 도메인 질의에 응답 + 연결된 서비스가 정상적인지 헬스 체크 수행

profile
문송 개발자

0개의 댓글