본문 바로가기
BE 📙/주니어백엔드개발자가반드시알아야할실무지식

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

by 경아ㅏ 2025. 6. 13.


네트워크 지식을 모르면

 

ex. 서버에서 외부 API 를 받아서 사용하고 있는데, 요청이 안된다.
외부 API 를 제공하는 팀에 문의하면 잘 응답한다고 한다.

아웃바운드, 인바운드 허용 정책도 이상 없었다.

 

원인을 살펴보니, 서버에서 외부로 나갈 때 사용하는 IP를 외부 API 제공 팀에 잘못 알려주었기 때문
➡️ 네트워크 엔지니어가 아니더라도 개발자라면 네트워크에 대한 이해가 필요

 

노드, 네트워크, 라우터

 

노드

: 데이터를 송수신 하는 모든 장치
: ex. 휴대폰, 노트북, 서버 등

네트워크

: 노드가 서로 데이터를 주고 받기 위해 연결된 시스템

패킷
: 노드가 네트워크를 통해 주고 받는 데이터의 단위
: 패킷 = 헤더(송수신 정보) + 페이로드(데이터)

라우터
: 공유기에 연결된 기기(노드)들은 같은 네트워크 상에서 통신
: 반면, 휴대폰에 연결된 앱과 앱서버는 다른 네트워크 상에서 통신

➡️ 다른 네트워크 상에 있는 노드들은 직접 연결하여 패킷을 송수신 할 수 없고, 라우터를 거쳐 데이터 전송

 

 

IP 주소와 도메인

 

IP 주소

 

  • 노드를 구분하기 위해 사용하는 주소
  • IPv4: 32비트 (4바이트)
  • IPv6: 128비트 (16바이트), IPv4 가 고갈될 것이라고 예상하여 만들었으나 사설 IP, NAT 등으로 여전히 IPv4 범위 내에서 사용

 

DNS(Domain Name System)

 

IP 주소는 기억하기 어렵기 떄문에 해당 주소에 이름을 붙여 도메인 이름으로 치환하여 사용

(도메인 이름 ↔️ IP 주소) 변환 체계를 DNS 라 함

도메인 이름
: 일반 상위 도메인(com, org, net, gov, ... )은 오른쪽에서 두번째 자리가 도메인의 주요 이름
: 국가 최상위 도메인(kr. au. jp, ...)은 일반적으로 두번째 자리까지는 정해져있고 세번째 자리가 도메인 주요 이름

 

브라우저 DNS 질의
: 브라우저는 www.naver.com  입력시 DNS 서버에 IP 주소를 질의하고, 응답을 받아 해당 주소로 다시 패킷 전송

: /etc/hosts 에 [도메인-IP 주소]를 정의해놓으면 DNS 서버에 정의된 것보다 더 우선적으로 변환 가능

 


고정 IP, 동적 IP

 

  • 고정 IP: 고정된 IP
  • 동적 IP:  네트워크에 연결할 때마다 IP를 할당하는 방식,  일반적으로 공유기에 기기를 연결하면 DHCP 서버를 통해 (IP 주소, 게이트웨이 주소, 서브넷 마스크, DNS 서버 주소)를 지정

 

공인 IP, 사설 IP

 

  • 공인 IP:  모든 네트워크에서 접속 가능
  • 사설 IP: 네트워크 내부에서만 적용되어 네트워크 외부에서는 접속 불가, 네트워크가 다른 노드들은 같은 사설 IP를 가질 수 있음

 

NAT

 

네트워크 내부의 사설 IP와 공인 IP 주소 사이의 변환, 주로 라우터와 같은 장비가 담당

 

SNAT

 

  • 내부 네트워크에서 나가는 패킷의 사설 IP를 공인 IP로 변환 

 

DNAT

 

  • 공인 IP로 들어온 패킷의 목적지를 사설 IP로 변환
  • 서버는 주로 보안상의 이유로 사설 IP를 가지고, 라우터/방화벽 등에 공인 IP 주소를 할당한 후 해당 장비에서 사설 IP를 가진 서버 노드로 전송

 

 

VPN

 

모든 노드들은 각자만의 사설 네트워크에 연결되어있는데, 다른 네트워크에 있는 개발자 컴퓨터에서 서버/DB에 접근하려면

 

a. NAT를 이용하여 공인 IP와 사설 IP를 매핑
➡️ 모든 사설 IP 마다 공인 IP를 매핑하기 어렵고, 하나의 공인 IP 로 모든 서버의 노드가 노출되는 위험 존재

 

b. VPN 이용
➡️ 서로 다른 네트워크 간에 암호화 연결을 제공, 개발자는 VPN 클라이언트를 통해 서버 네트워크의 노드에 접근 가능

 

프로토콜과 TCP, UDP, QUIC

 

TCP

 

  • 데이터를 주고받기 전 3-Way Handshake 수행
  • 패킷 순서 보장
  • 유실된 패킷을 재전송
  • 신뢰성 있는 프로토콜
  • but, 전체적인 전송 속도가 느림

 

UDP

  • 데이터 유실 확인, 패킷 순서 보장 등의 기능을 제공하지 않음
  • but, TCP 에 비해 속도가 빠름


QUIC 

  • TCP의 신뢰성 + UDP의 속도 이점을 모두 갖추기 위해 개발된 프로토콜
  • UDP를 기반으로 하되, TCP의 혼잡제어/패킷유실복구/연결관리 기능을 QUIC 수준에서 추가 제공
  • TCP 사용시 TLS 통신을 별도로 수행했으나, QUIC 은 TLS를 통합하여 시간 단축

 

댓글