[컴퓨터 네트워크] 네트워크 레이어

2025. 12. 15. 16:52·네트워크

IP 주소란

IP 주소는 네트워크에서 호스트와 라우터의 각 인터페이스마다 할당되어 있는 식별 번호이다.

(인터페이스: 호스트와 물리 링크 사이의 경계)

ip주소는 네트워크 주소와 호스트 주소로 나뉜다.

ip에는 두 가지 버전이 존재한다.(IPv4, IPv6)

IPv4와 IPv6는 어떤 차이점이 있을까?

  • IPv4
    • 32비트 이진수로 구성된다.
      • 11000001 00100000 11011000 00001001
    • 일반적으로 다음과 같이 8비트 단위로 끊어서 4부분으로 10진수와 .으로 표기한다.
      • 193.32.216.9
  • IPv6
    • 128비트 이진수로 구성된다.
    • 다음과 같이 16비트 단위로 끊어서 8부분으로 16진수 와 :으로 표기한다.
      • 2004:2ba8:13aa:0011:0000:0000:0000:abaa

서브넷과 서브넷 마스크의 차이

 

서브넷은 네트워크의 부분망이다. 위 그림에서 파란색으로 표시된 부분망 3개를 볼 수 있다.

각 서브넷의 각 IP주소의 왼쪽 24비트(8bit.8bit.8bit.8bit)는 동일함을 볼 수 있다.

위 그림에서 서브넷 마스크는 24이다. 이는 32비트 주소의 왼쪽 24비트가 서브넷 주소라는 것을 가리킨다.

즉, 왼쪽 24비트는 네트워크 주소 나머지 8비트는 호스트 주소이다.

각 서브넷에서는 2^8 -2 개의 호스트 IP가 존재할 수 있다. 왜 2^8 에서 -2를 ? → 바로 브로드 캐스트 주소와 네트워크 주소로 사용되기 때문이다. 호스트 주소 11111111는 브로드 캐스트 주소로 사용된다.(브로드 캐스트 주소는 255.255.255.255 이다. 같은 서브넷에 존재하는 모든 호스트들에게 패킷이 전송된다.) 호스트 주소 00000000 는 네트워크 주소(서브넷 자체를 식별하기 위한 이름표)로 사용된다.

라우팅이란?

라우팅은 어떤 네트워크 안에서 통신 데이터를 보낼 때 최적의 경로를 선택하는 과정이다. 최적의 경로는 주어진 데이터를 가장 짧은 거리로 또는 가장 적은 시간 안에 전송할 수 있는 경로다.

  • 무엇을 기준으로?
    • 목적지 IP가 어느 네트워크 대역(CIDR 프리픽스)에 속하는지
  • 어디서 결정하나?
    • 라우터(또는 L3 스위치)가 가진 라우팅 테이블

라우팅 테이블은 보통 두 방식으로 채워진다.

  • 정적 라우팅: 사람이 직접 경로를 넣음
  • 동적 라우팅: OSFP/RIP/BGP 같은 라우팅 프로토콜이 자동으로 경로를 학습/갱신

CIDR(Classless Inter-Domain Routing)

  • CIDR는 클래스 주소보다 더 유연하게 IP 주소를 나눠주는 라우팅 기법이다.
  • IPv4 주소를 보다 효율적으로 사용하게 해준다.
  • 32비트 IP 주소를 아래와 같이 두 부분으로 나눈다.
    • a.b.c.d / x
    • x는 처음 나오는 주소 부분의 비트 수를 의미한다. 이를 해당 주소의 prefix라고 한다.

예: 10.0.0.0/16

  • /16 → 앞 16비트가 네트워크
  • 남은 16비트가 호스트 → 호스트 경우의 수가 훨씬 많아짐

범위:

  • 10.0.0.0 ~ 10.0.255.255

CIDR(사이더)가 라우팅 테이블을 줄이는 방법

예를 들어 어떤 회사 내부망이 192.168.1.0/24라면 호스트는 200대 있을 수 있다.

  • 라우터가 호스트를 다 저장한다면:
  • 192.168.1.10/32, 192.168.1.11/32, … 200줄 필요
  • 실제로는 보통 이렇게 저장함:
  • 192.168.1.0/24 -> (이쪽으로 보내면 됨) 딱 1줄

라우터는 “저 네트워크로 가는 길”만 알면 되고, 그 네트워크 안에서 어떤 호스트인지(마지막 배송) 는 그 네트워크 내부에서 해결돼(스위치/ARP 같은 것).

  • 라우터의 일: “어느 네트워크로 보낼지” 결정
  • 마지막 홉(로컬망)의 일: “그 네트워크 안에서 정확히 어떤 기기인지” 찾아서 전달

Public IP와 Privte IP

  • 공인 IP(Pulbic IP)
    • 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 제공자)가 제공하는 IP주소입니다. 외부로 공개되어 있는 IP주소입니다.
      • 공인 IP는 전세계에서 유일한 IP 주소를 갖습니다.
      • 공인 IP 주소가 외부에 공개되어 있기에 인터넷에 다른 PC로부터의 접근이 가능합니다.
      • IPv4 주소의 부족으로 인해 IPv6 주소 체계가 도입되어 점차 확산되고 있습니다.
  • 사설 IP(Private IP)
    • 공인 IP주소가 공개형이라면 사설 IP 주소는 폐쇄형이다.
    • 즉, 사설 IP주소는 외부에 외부에 공개되지 않아 외부에서 검색, 접근이 불가능하다.
    • 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용해서 인터넷에 접속하기 위해 사용한다.
    • 사설 IP는 사설망 안에서만 의미 있는 주소이다.
    • 사설 IP 주소는 주소 대역이 3개로 고정되어 있다.
      • 192.168.xxx.xxx
      • 172.10.xxx.xxx
      • 10.xxx.xxx.xxx
    • 예를 들어 인터넷 공유기 IP 주소가 100.100.100.100 이고, 공유기에 연결된 컴퓨터에는 192.168.0.10 등과 같은 사설 IP 주소가 할당된다.

라우팅 프로토콜이란?

라우팅 프로토콜(routing protocol)은 라우터들이 서로 정보를 주고받아서 “어떤 목적지 네트워크로 가려면 어느 이웃(next hop)으로 보내야 하는지”를 자동으로 계산/갱신하게 해주는 알고리즘이다.

라우팅 프로토콜 vs 라우팅(포워딩)

  • 라우팅 프로토콜: 길을 학습/계산해서 라우팅 테이블을 만든다
  • 포워딩: 실제 패킷이 들어오면 테이블 보고 다음 홉으로 전달한다

IP는 어떻게 할당될까

사람이 직접 기기에 설정 → 정적 IP(Static)

DHCP을 사용하여 동적으로 할당 → DHCP(일반적으로 사용)

DHCP(동적 할당) - Dynamic Host Configuration Protocol

DHCP는 새로운 호스트가 도착하면 IP를 할당해준다.

  • 동작과정
    • DHCP 서버 발견
    • DHCP 서버 제공
    • DHCP 요청
    • DHCP ACK

NAT(Network Address Translation)

 

  • NAT는 공인 IP와 사설 IP를 변환해주는 기술이다.
  • 위 그림을 보자 IP주소 138.76.29.7을 갖는 라우터(또는 공유기)에 3대의 컴퓨터가 속해있다.
  • 10.0.0.4 라는 사설 IP 주소를 갖는 서브넷에 10.0.0.1, 10.0.0.2, 10.0.0.3 3개의 사설 IP주소를 갖고 있는 컴퓨터가 속해있다.
  • 사설 IP 10.0.0.1를 갖는 호스트가 IP 128.119.40.186인 웹 서버(포트80)에게 웹 페이지를 요청한다고 가정하자.
    • 호스트는 자신의 IP와 출발지 포트번호 3345와 함께 패킷을 전송한다.
    • NAT 라우터는 패킷을 받아서 패킷에 대한 출발지 포트번호 5001를 생성한다. 인터넷으로 연결되는 라우터 인터페이스 공인 IP 138.76.29.7 으로 출발지 IP 주소를 변경하고 새롭게 생성한 출발지 포트번호 5001로 포트번호를 바꾼다.
    • 웹 서버는 NAT 라우터 IP 138.76.29.7와 5001 포트번호에 대해 응답한다.
    • 패킷이 NAT 라우터에 도착했을 때 라우터는 사설망 IP 주소 10.0.0.1 포트번호 3345로 응답 패킷을 보낸다.

ICMP(Internet Control Message Protocol)

IP 네트워크에서 “오류/상태를 알리는 메시지”를 주고받는 제어용 프로토콜이다.

데이터를 옮기기 보단 “지금 전달이 안돼”, “시간 초과”, “경로를 알려줄게” 같은 피드백을 전달한다.

  • 어디 계층?
    • 보통 네트워크 계층쪽으로 분류하고 ICMP 메시지는 IP 패킷 안에 실려서 이동한다.
  • 왜 필요할까?
    • IP 자체는 실패/문제를 자세히 말해주지 않는다.
    • ICMP가 그 빈자리를 채워서 진단/에러 리포트를 해준다.
  • 대표적인 ICMP 메시지
    • Echo Request / Echo Reply: ping이 쓰는 것(살아 있나 확인)
    • Destination Unreachable: 목적지에 못 감
    • Time Exceeded: TTL이 0이 돼서 폐기됨
    • Redirect: 그 목적지는 나 말고 다른 게이트로 가는 것이 더 좋다.
  • TCP/UDP랑 관계
    • TCP/UDP는 데이터 전송용 vs ICMP는 네트워크 상태 알림용
    • UDP로 보냈는데 상대 포트가 닫혀 있으면, 종종 ICMP Port Unreachable이 돌아와서 포트 닫힘 상태를 알려줌

브라우저에 www.google.com을 입력하면 어떤 일이 일어날까

  1. 주소창에 URL을 입력하고 ENTER입력
  2. 웹 브라우저가 URL을 해석
  3. URL이 문법에 맞으면 URL에 인코딩을 적용
  4. HSTS(HTTP Strict Transport Security) 목록을 로드한다.
  5. DNS를 조회하여 IP주소를 얻어낸다.
  6. ARP(Address Resolution Protocol)로 IP주소에 대한 MAC 주소를 얻어낸다.
  7. TCP 통신을 시작한다.
  8. HTTPS인 경우 SSL(TLS) handshake 과정이 추가된다
  9. HTTP 프로토콜로 요청한다.
  10. HTTP 서버가 응답한다.
  11. 웹 브라우저가 렌더링한다.

브라우저 주소창에 www.google.com을 입력했을 때 웹 브라우저 요청 흐름을 패킷 관점에서 설명해보자 (TCP/IP 통신의 흐름)

  1. 다음 4가지를 먼저 확정한다.
    1. 목적지 IP(DNS 결과)
    2. 나의 IP/ 서브넷 / 기본 게이트웨이
    3. 기본 게이트웨이의 MAC
    4. 사용할 전송계층 프로토콜/포트
  2. PC→DNS로 질의결과로 IP 값 획득
  3. ARP
    1. 구글 서버는 내 LAN 밖에 있으니까, 내 PC는 패킷을 기본 게이트웨이(공유기)로 보내야 한다. 근데 이더넷 프레임에는 목적지 MAC이 필요하니, 게이트웨이의 MAC을 모르면 먼저 ARP를 한다.(이미 ARP 캐시에 있으면 스킵 가능)
  4. TCP 3-way handshake
    1. 목적지 IP(구글)로 TCP연결을 건다.
    2. 집 공유기 환경이면 NAT 때문에 공유기가 내 IP를 공인IP로 바꿔서 인터넷에 보낸다.
  5. TLS handshake
    1. TCP 연결 위에서 TLS를 올린다.
  6. HTTP 요청/응답
  7. 연결 유지/종료
    1. keep-alive로 연결을 유지할 수도 있고 필요 없어지면, FIN→ACK→FIN→ACK(4-way close)

HTTP/3(QUIC): TCP가 아니라 UDP 443로 시작할 수 있다.

 

'네트워크' 카테고리의 다른 글

[컴퓨터 네트워크] TCP & UDP  (1) 2025.12.09
[컴퓨터 네트워크] 애플리케이션 계층 -2- (보안, JWT, 프록시, REST..)  (0) 2025.12.04
[컴퓨터 네트워크]애플리케이션 레이어  (0) 2025.11.26
[컴퓨터 네트워크] 네트워크 기초와 로드 밸런싱 기법 정리  (0) 2025.11.20
'네트워크' 카테고리의 다른 글
  • [컴퓨터 네트워크] TCP & UDP
  • [컴퓨터 네트워크] 애플리케이션 계층 -2- (보안, JWT, 프록시, REST..)
  • [컴퓨터 네트워크]애플리케이션 레이어
  • [컴퓨터 네트워크] 네트워크 기초와 로드 밸런싱 기법 정리
youth._.o
youth._.o
youth
  • youth._.o
    youth님의 블로그
    youth._.o
  • 전체
    오늘
    어제
    • 분류 전체보기 (33)
      • 운영체제 (0)
      • 네트워크 (5)
      • DB (4)
      • 코딩테스트 (0)
      • 아키텍처 (7)
      • 회고 (1)
      • 언어(java, kotlin, python ..... (5)
      • 우아한 테크코스 프리코스 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    MySQL
    분산락
    정렬방식
    filesort
    redis
    Using temporary
    좋아요api
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
youth._.o
[컴퓨터 네트워크] 네트워크 레이어
상단으로

티스토리툴바