모르면 답답해지는 네트워크 기초

네트워크 기초를 모르면

  • 서버 개발자는 기본적인 네트워크 지식을 알아햐함

노드, 네트워크, 라우터

  • 데이터를 송수신하는 모든 장치를 노드라고 함
  • 노드가 서로 데이터를 주고받기 위해 연결된 시스템을 네트워크라고 함
  • 네트워크간 연결을 하는것이 라우터의 역할

IP 주소와 도메인

  • 네트워크에서 각 노드를 구분하기 위해 사용하는것이 IP 주소
    • 일반적으로 사용하는 IP 주소는 IPv4
      • 3.130.192.248 처럼 1바이트(2^8) 숫자 4개로 구성, 총 4바이트(2^32)까지의 고유한 주소 식별 가능
    • IPv6는 128비트 사용
  • IP 주소에 이해하기 쉬운 이름을 붙힌게 도메인 이름
    • 도메인 주소는 계층 구조를 가짐
      • 1차
        • 일반 최상위 - com, org, net 등
        • 국가 최상위 - kr, jp, au 등
      • 2차
        • naver.com, google.com
      • 3차
        • cafe.naver.com, www.google.com
  • IP 주소를 도메인 이름으로 변환하는 체계가 DNS (Domain Name System)
    • 브라우저는 도메인을 DNS 서버에 질의, DNS 서버는 IP 주소를 응답
    • 도메인 이름에 매핑되는 IP는 여러개일수 있음, nslookup 명령어를 사용해서 확인 가능
$ nslookup youngwon.io
Server:		168.126.63.1
Address:	168.126.63.1#53

Non-authoritative answer:
Name:	youngwon.io
Address: 185.199.110.153
Name:	youngwon.io
Address: 185.199.109.153
Name:	youngwon.io
Address: 185.199.108.153
Name:	youngwon.io
Address: 185.199.111.153
  • 고정 IP와 동적 IP
    • 동일 네트워크 상에서 각 노드는 서로 다른 IP 주소를 가져야함
    • 노드 IP는 두 가지 방식으로 지정
      • 고정 IP
        • 예를 들면 서버는 고정된 IP를 가져야함
      • 동적 IP
        • DHCP(Dynamic Host Configuration Protocol) 서버에서 IP를 제공받는 방식
  • 공인 IP와 동적 IP
    • 인터넷에 접속하는 모든 네트워크가 가지는 주소를 공인 IP라고함
      • 인터넷에서 서로 같은 주소를 가질 수 없음
    • 네트워크 내부에서만 적용되는 주소를 사설 IP라고함
      • 네트워크만 다르면 같은 사설 IP 주소를 가질수 있음
      • 네트워크 내부에서만 고유하면 됨
    • 인터넷에 연결하는 모든 노드들이 공인 IP를 가진다면 IPv4주소는 한참전에 고갈됐을것
      • 서버 네트워크, 회사, 가정과 같이 서비스를 제공해야하는 경우가 아닌경우 사설 IP를 사용해서 아직 IPv4를 사용가능

NAT

  • NAT(Network Address Translation)은 네트워크 주소 변환 기술
    • 인터넷에 연결하려면 내부에서 사용하는 사설 IP와 인터넷에서 사용하는 공인 IP 주소간의 변환이 필요함, 이를 처리
  • SNAT과 DNAT
    • SNAT(Source NAT)
      • 내부 네트워크에서 나가는 패킷의 사설 IP를 공인 IP로 변환
    • DNAT(Destination NAT)
      • 공인 IP로 들어온 패킷의 목적지를 사설 IP로 변환
      • 서버를 구성할때 사용
        • 네트워크를 구성할때 보안, 이중화 등을 고려
        • 노드는 공인 IP가 아닌 사설 IP를 가짐
        • 네트워크 장비(라우터, 방화벽 등)은 DNAT을 사용해서 공인 IP를 목적지를 가지는 패킷을 사설 IP를 가진 노드로 전송

VPN

  • VPN(Virtual Private Network)은 서버 네트워크의 노드에 안전한 접근을 지원하는 방법
    • 공인IP 대신 사설 IP로 접근 지원
  • 인터넷과 같은 공용 네트워크에서 서버가 존재하는 네트워크에 암호화된 연결을 제공
    • VPN 클라이언트를 사용해서 서버 네트워크 접근

프로토콜과 TCP, UDP, QUIC

  • 네트워크 상에서 두 노드가 데이터를 주고받기 위해 정의한 규칙을 프로토콜이라고 함
    • 네트워크는 여러개층으로 구성되며 각 계층마다 사용하는 프로토콜이 존재함
  • 개발자는 주로 전송 계층과 애플리케이션 계층의 프로토콜 사용
  • 전송 계층에는 TCP와 UDP가 존재
    • TCP (Transmission Control Protocol)
      • 3-Way Handshake 수행
      • 신뢰성을 보장 (순서 보장, 패킷 유실시 재전송 보장)
      • HTTP, SMTP 등의 애플리케이션 계층 프로토콜 존재
      • UDP에 비하면 느림
    • UDP (User Datagram Protocol)
      • 연결과정없이 바로 데이터를 전송
      • 정상전송 여부를 알 수 없고 순서를 보장하지 않음
      • 위와 같은 이유로 TCP에 비하면 빠름, 신뢰성 보다 속도가 중요할때 사용
      • DNS, VoIP, 게임 등이 존재
    • 신뢰성이 있으면서 빠른 프로토콜(위 두 프로토콜의 장점을 합친)의 목적으로 개발된게 QUIC
      • UDP를 기반으로 동작
      • TLS(Transport Layer Security)를 통합
        • HTTPS는 TCP연결을 위한 3-Way Handshake와 TLS 연경르위한 TLS Handshake를 진행, QUIC는 이를 통합
      • 멀티플렉싱 지원
        • 한 연결에서 여러 스트림 동시 처리 지원