[CS] 네트워크 - 라우팅, IP 주소체계 + HTTP 헤더

팔랑이·2025년 1월 17일
0

CS

목록 보기
10/19

⛳️ 인프런 - cs 지식의 정석 강의를 듣고 학습한 내용입니다.


라우팅

1) 라우팅과 라우터

라우팅(routing)

  • 데이터를 목적지까지 보내기 위해 최적의 경로를 선택하는 과정
  • 라우터가 이를 수행하며, 데이터는 출발지에서 목적지까지 여러 라우터를 거쳐 전달됨

라우터

  • 네트워크 간 데이터를 전달하는 장치로, 보통 둘 이상의 네트워크를 연결
  • 데이터를 최적 경로로 전달하기 위해 라우팅 테이블을 기반으로 작동

2) 라우팅 테이블

  • IP 주소를 기반으로 경로 정보를 저장하는 데이터베이스

그림에서 보이는 라우팅 테이블의 구성 요소:

  • 네트워크 대상(Network Destination): 목적지 네트워크의 IP 주소
  • 서브넷 마스크(Netmask): 네트워크 범위를 나타냄
  • 게이트웨이(Gateway): 패킷이 다음으로 향하는 IP 주소
  • 인터페이스(Interface): 데이터를 전달할 네트워크 인터페이스
  • 메트릭(Metric): 최적의 경로를 선택하기 위한 우선순위 값

라우팅을 홉바이홉 통신이라고도 하는데...

  • 홉(hop): 네트워크에서 출발지와 목적지 사이에 위치한 장치를 의미
  • 홉 카운트(hop count): 데이터가 출발지와 목적지 사이에서 통과해야 하는 홉의 개수

네트워크 주소 체계

1) IP 주소 (Internet Protocol address)

  • 네트워크 상에서 장치를 식별하기 위한 논리적 주소
  • 통신은 물리적 주소인 MAC 주소를 기반으로 수행

2) MAC 주소 (Media Access Control address)

  • 네트워크 인터페이스 카드(NIC)에 할당된 고유 식별자로, 보통 장치의 NIC에 할당된다.

구성

  • 48비트로 이루어져 있으며, 24비트의 OUI와 24비트의 UAA로 구분된다.

  • OUI: 제조사 코드 (24비트)
  • UAA: 장치별 고유 코드 (24비트)

맥북 터미널에서는 ifconfig를 입력해 en0(wifi) 또는 en1(랜선) 에서 맥주소를 확인할 수 있다.

와이파이 설정에서 확인ifconfig에서 확인

3) ARP와 RARP

2번의 MAC 주소는 ARP를 통해 파악할 수 있다.

  • ARP(Address Resolution Protocol): 논리적 주소(IP)를 물리적 주소(MAC)로 변환
  • RARP(Reverse ARP): MAC 주소를 IP 주소로 변환

ARP 과정

  1. IP주소에 맞는 MAC 주소를 찾기 위해 해당 데이터를 브로드캐스팅을 통해 연결된 네트워크의 모든 장치에 보낸다
  2. 맞는 장치가 있다면, 해당 장치가 처음 데이터를 보낸 장치에 유니캐스트로 데이터를 전달하여 주소를 확인한다

4) IPv4, IPv6

IPv4

  • 32비트 주소 체계 (2^32 = 약 42억 개)
  • 8비트(=옥탯) 단위로 점(.)으로 구분
  • 주소 부족 문제 → NAT, 서브네팅 등 보조 기술 등장

IPv6

  • 128비트 주소 체계 (2^128 = 매우 많음)

  • 16비트씩 8개로 구분하고 16진수로 표현하며 콜론(:)으로 구분

  • IPv4의 한계 해결: NAT 불필요, IPSec 내장, 단순한 헤더 구조, 체크섬 필드 제거

-IPSec: 데이터 패킷을 암호화하는 보안 네트워크 프로토콜로, IPv6에 내장되어 있다.

5) Classful vs Classless

서브넷 마스크 구하는 방법, CIDR 표기법 나타내는 방법 등등은 정처기때 많이 해서...패스

IP주소는 네트워크 주소와 호스트 주소 두 부분으로 나뉜다.
네트워크 호스트는 네트워크에 연결된 컴퓨터나 기타 장치를 말한다.
네트워크 주소는 호스트들을 모은 네트워크를 지칭하며, 호스트 주소는 호스트를 구분하기 위한 주소이다.

클래스풀

: 네트워크 주소를 매기고 그에 따라 네트워크의 클래스를 할당하는 주소체계

A, B, C (D, E) 클래스를 기반으로, 서브넷 마스크를 기준자로 사용한다.

  • 클래스 A: 1~126
  • 클래스 B: 128~191
  • 클래스 C: 192~223

각 클래스의 맨 앞자리는 네트워크 주소, 맨 뒷자리는 브로드캐스팅 주소

단점: IP 낭비와 유연성 부족 문제

클래스리스

: 클래스풀의 단점을 해결하기 위해 클래스가 아닌 서브넷마스크를 중심으로 네트워크 주소와 호스트 주소를 나눈다. 현대 주소체계는 클래스리스를 사용중.

  • 가변 길이 서브넷 마스크(VLSM)를 사용해 네트워크를 유연하게 분할
  • CIDR 표기법을 사용 (예: 192.168.0.0/22)
  • 더 유연하게 네트워크를 할당하고, 주소 낭비를 줄일 수 있다.

6) 공인IP, 사설IP, NAT

공인 IP (Public IP)

: 인터넷 상에서 고유하게 식별 가능한 주소. 전 세계에서 유일해야 하며, 인터넷 서비스 제공자(ISP)가 할당.

사설 IP (Private IP)

: 내부 네트워크에서만 사용 가능한 주소. 같은 네트워크 내에서만 유효하며, 인터넷에서는 직접적으로 접근 불가

사설 IP 주소 범위 (IPv4 기준):

  • 클래스 A: 10.0.0.0 ~ 10.255.255.255
  • 클래스 B: 172.16.0.0 ~ 172.31.255.255
  • 클래스 C: 192.168.0.0 ~ 192.168.255.255

NAT (Network Address Translation)

NAT는 공인 IP 부족 문제를 해결하기 위해 사용되는 기술로, 내부 네트워크에서 사설 IP를 사용하고 인터넷으로 통신할 때 공인 IP로 변환하여 외부와 연결되도록 한다.

예시로 공유기 IP를 생각하면 쉬움.

역할

  1. IP 주소 절약: 하나의 공인 IP로 여러 장치가 인터넷에 연결 가능
  2. 보안성 강화: 내부 네트워크의 IP 주소를 숨겨 외부로부터 직접 접근을 방지

동작 방식

  1. 내부 장치가 인터넷에 데이터를 전송할 때, NAT는 사설 IP를 공인 IP로 변환
  2. 외부에서 오는 응답 데이터를 NAT가 다시 내부 장치의 사설 IP로 변환하여 전달

NAT의 한계

  • NAT는 네트워크 주소를 변환하기 때문에 엔드 투 엔드 통신이 어려움.
  • 이를 보완하기 위해 IPv6는 더 많은 주소 공간을 제공하여 NAT의 의존성을 줄임.

+) HTTP 헤더

헤더의 구성

  • 요청 헤더: 클라이언트에서 서버로 요청 시 포함 (ex: User-Agent, Accept)
  • 응답 헤더: 서버에서 클라이언트로 응답 시 포함 (ex: Server, Set-Cookie)
  • 일반 헤더: 요청과 응답에 모두 사용 (ex: Cache-Control, Date)

javascript 예시 코드: 커스텀 HTTP 응답 헤더 설정

const http = require('http');
const server = http.createServer((req, res) => {
    res.setHeader('Content-Type', 'text/plain; charset=utf-8');
    res.setHeader('Custom-Header', 'Value');
    res.end('Hello, World!');
});
server.listen(3000, () => console.log('Server running on port 3000'));

HTTP의 유연성

  • 헤더를 통해 추가 정보를 자유롭게 포함하여 확장 가능
  • 표준화된 키 외에도 커스텀 헤더를 정의 가능
profile
정체되지 않는 성장

0개의 댓글