모르면 답답해지는 네트워크 기초
네트워크 기초를 모르면
- 서버 개발자는 기본적인 네트워크 지식을 알아햐함
노드, 네트워크, 라우터
- 데이터를 송수신하는 모든 장치를 노드라고 함
- 노드가 서로 데이터를 주고받기 위해 연결된 시스템을 네트워크라고 함
- 네트워크간 연결을 하는것이 라우터의 역할
IP 주소와 도메인
- 네트워크에서 각 노드를 구분하기 위해 사용하는것이 IP 주소
- 일반적으로 사용하는 IP 주소는 IPv4
- 3.130.192.248 처럼 1바이트(2^8) 숫자 4개로 구성, 총 4바이트(2^32)까지의 고유한 주소 식별 가능
- IPv6는 128비트 사용
- 일반적으로 사용하는 IP 주소는 IPv4
- IP 주소에 이해하기 쉬운 이름을 붙힌게 도메인 이름
- 도메인 주소는 계층 구조를 가짐
- 1차
- 일반 최상위 - com, org, net 등
- 국가 최상위 - kr, jp, au 등
- 2차
- naver.com, google.com
- 3차
- cafe.naver.com, www.google.com
- 1차
- 도메인 주소는 계층 구조를 가짐
- 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 주소를 가질수 있음
- 네트워크 내부에서만 고유하면 됨
- 인터넷에 연결하는 모든 노드들이 공인 IP를 가진다면 IPv4주소는 한참전에 고갈됐을것
- 서버 네트워크, 회사, 가정과 같이 서비스를 제공해야하는 경우가 아닌경우 사설 IP를 사용해서 아직 IPv4를 사용가능
- 인터넷에 접속하는 모든 네트워크가 가지는 주소를 공인 IP라고함
NAT
- NAT(Network Address Translation)은 네트워크 주소 변환 기술
- 인터넷에 연결하려면 내부에서 사용하는 사설 IP와 인터넷에서 사용하는 공인 IP 주소간의 변환이 필요함, 이를 처리
- SNAT과 DNAT
- SNAT(Source NAT)
- 내부 네트워크에서 나가는 패킷의 사설 IP를 공인 IP로 변환
- DNAT(Destination NAT)
- 공인 IP로 들어온 패킷의 목적지를 사설 IP로 변환
- 서버를 구성할때 사용
- 네트워크를 구성할때 보안, 이중화 등을 고려
- 노드는 공인 IP가 아닌 사설 IP를 가짐
- 네트워크 장비(라우터, 방화벽 등)은 DNAT을 사용해서 공인 IP를 목적지를 가지는 패킷을 사설 IP를 가진 노드로 전송
- SNAT(Source NAT)
VPN
- VPN(Virtual Private Network)은 서버 네트워크의 노드에 안전한 접근을 지원하는 방법
- 공인IP 대신 사설 IP로 접근 지원
- 인터넷과 같은 공용 네트워크에서 서버가 존재하는 네트워크에 암호화된 연결을 제공
- VPN 클라이언트를 사용해서 서버 네트워크 접근
프로토콜과 TCP, UDP, QUIC
- 네트워크 상에서 두 노드가 데이터를 주고받기 위해 정의한 규칙을 프로토콜이라고 함
- 네트워크는 여러개층으로 구성되며 각 계층마다 사용하는 프로토콜이 존재함
- OSI 7 layer 또는 TCP 4 layer 참고
- 네트워크는 여러개층으로 구성되며 각 계층마다 사용하는 프로토콜이 존재함
- 개발자는 주로 전송 계층과 애플리케이션 계층의 프로토콜 사용
- 전송 계층에는 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는 이를 통합
- 멀티플렉싱 지원
- 한 연결에서 여러 스트림 동시 처리 지원
- TCP (Transmission Control Protocol)