[컴퓨터네트워크] 02. (3)Network Layer(네트워크 계층) - DHCP, NAT

2024. 4. 7. 01:12·Computer Science/Network

(3) Network Layer(네트워크 계층) - DHCP, NAT


IPv4 주소

DHCP(Dynamic Host Configuration Protocol)

  • 기관에 블록 주소가 할당되면, 관리자는 각각의 호스트나 라우터에 수동으로 주소를 할당할 수 있다
  • 하지만 DHCP를 통해 주소할당을 자동으로 할 수 있다.
  • DHCP는 클라이언트-서버 패러다임을 이용하는 응용 계층 프로그램으로서, TCP/IP의 네트워크 계층을 도와준다

DHCP 메시지 포맷

  • Opcode, Htype, HLen, HCount, Flags, .... , Options 존재
    • Opcoe : Operation code, request(1)(DHCPDISCOVER, DHCPREQUEST 등) or reply(2)(DHCPOFFER, DHCPACK 등)
    • Flags : First bit defines unicast(0) or multicast(1); other 15bits는 사용되지 않음
    • Options : A 64-byte field with dual purpose described in text
      • Value : DHCPDISCOVER, DHCPOFFER, DHCPREQIEST, DHCPDECLINE, DHCPACK, DHCPNACK, DHCPRELEASE, DHCPINFORM
      • Tag(53), Length(1), Value로 표현하며, TLV 표현 방식이라고 함

 

DHCP 동작

  • 부팅
  • Client가 DHCPDISCOVER를 Broadcast
  • Server가 DHCPOFFER(이 주소 사용할거야?)
  • Client가 DHCPREQUEST(이 주소 사용할게)
  • SERVER가 DHCPACK(확인 응답)
  • DHCP는 UDP(TCP 아님), IP를 이용하는 프로토콜임

DHCP 클라이언트의 FSM(Finite State Machine)

  • 클라이언트가 주소를 받으면 임대 시간이 정해져 있어서, 50% 정도가 지나면, 다시 임대를 요청함(DHCPREQUEST를 보냄)
    • RENEWING : 임대 시간의 50%가 경과하면, 클라이언트는 DHCP 서버에게 주소 임대 연장을 요청
    • REBINDING : 임대 연장 요청이 실패하면, 클라이언트는 다른 서버로부터 주소를 재임대(rebinding) 받기 위해 다시 요청을 시작(INIT)

NAT(Network Address Translation)

  • 대부분의 경우, 작은 네트워크에서의 인터넷의 동시접속은 많지 않음
  • 사설(private) 주소와 공인(public) 주소의 매핑을 제공하고, 가성의 사설 주소를 지원하는 시스템이 NAT임
  • 이 기술은 사이트 내부에서 사설 주소를 이용해 내부 통신을 하고, 인터넷의 컴퓨터와 통신을 할 때, 공인 주소를 통해 통신을 가능하게 한다
  • GPT : 사설 네트워크 내의 여러 장치들이 단 하나의 공인 IP 주소를 사용하여 인터넷과 통신할 수 있도록 합니다.
  • ex) Internet에 연결되어 있는 라우터의 주소테이블에서(공인 주소: 203.240.~~) 공인 주소를 사설주소로 매핑해줌
    • 사설 주소를 사설 주소로 바꿔줄 수도 있고, 공인 주소를 공인 주소로 바꿔줄 수도 있다
  • 10.0.0.0/8(A class) 와 같이 10점대 주소는 전부 사설 주소
  • 172.16.255.255 ~ 172.31.255.255 은 B class의 사설 주소
  • 192.168.0.0 ~ 192.168.255.0 은 C class의 사설 주소

 

  • 주소 변환 표

  • TCP를 주로 지원하고, UDP도 지원할 수 있음

 

  • PAT : 포트번호 + 주소를 변경
    • Public IP 1개 만으로도 65536개 연결 지원 가능

'Computer Science > Network' 카테고리의 다른 글

[컴퓨터네트워크] 03. Network Layer Protocols(1) - 네트워크 계층 프로토콜  (0) 2024.04.10
[컴퓨터네트워크] 02. (4)Network Layer(네트워크 계층) - IP 패킷의 포워딩  (0) 2024.04.07
[컴퓨터네트워크] 02. (2)Network Layer(네트워크 계층) - IPv4 주소  (0) 2024.04.07
[컴퓨터네트워크] 02. (1)Network Layer(네트워크 계층) - 네트워크 계층 서비스 / 성능, 패킷 스위칭  (0) 2024.04.07
[컴퓨터네트워크] 01. OSI 7계층과 TCP/IP  (0) 2024.04.07
'Computer Science/Network' 카테고리의 다른 글
  • [컴퓨터네트워크] 03. Network Layer Protocols(1) - 네트워크 계층 프로토콜
  • [컴퓨터네트워크] 02. (4)Network Layer(네트워크 계층) - IP 패킷의 포워딩
  • [컴퓨터네트워크] 02. (2)Network Layer(네트워크 계층) - IPv4 주소
  • [컴퓨터네트워크] 02. (1)Network Layer(네트워크 계층) - 네트워크 계층 서비스 / 성능, 패킷 스위칭
lumana
lumana
배움을 나누는 공간 https://github.com/bebeis
  • lumana
    Brute force Study
    lumana
  • 전체
    오늘
    어제
    • 분류 전체보기 (457)
      • Software Development (27)
        • Performance (0)
        • TroubleShooting (1)
        • Refactoring (0)
        • Test (8)
        • Code Style, Convetion (0)
        • DDD (0)
        • Software Engineering (18)
      • Java (71)
        • Basic (5)
        • Core (21)
        • Collection (7)
        • 멀티스레드&동시성 (13)
        • IO, Network (8)
        • Reflection, Annotation (3)
        • Modern Java(8~) (12)
        • JVM (2)
      • Spring (53)
        • Framework (12)
        • MVC (23)
        • Transaction (3)
        • AOP (11)
        • Boot (0)
        • AI (0)
      • DB Access (1)
        • Jdbc (1)
        • JdbcTemplate (0)
        • JPA (14)
        • Spring Data JPA (0)
        • QueryDSL (0)
      • Computer Science (130)
        • Data Structure (27)
        • OS (14)
        • Database (10)
        • Network (21)
        • 컴퓨터구조 (6)
        • 시스템 프로그래밍 (23)
        • Algorithm (29)
      • HTTP (8)
      • Infra (1)
        • Docker (1)
      • 프로그래밍언어론 (15)
      • Programming Language(Sub) (77)
        • Kotlin (1)
        • Python (25)
        • C++ (51)
        • JavaScript (0)
      • FE (11)
        • HTML (1)
        • CSS (9)
        • React (0)
        • Application (1)
      • Unix_Linux (0)
        • Common (0)
      • PS (13)
        • BOJ (7)
        • Tip (3)
        • 프로그래머스 (0)
        • CodeForce (0)
      • Book Review (4)
        • Clean Code (4)
      • Math (3)
        • Linear Algebra (3)
      • AI (7)
        • DL (0)
        • ML (0)
        • DA (0)
        • Concepts (7)
      • 프리코스 (4)
      • Project Review (6)
      • LegacyPosts (11)
      • 모니터 (0)
      • Diary (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
lumana
[컴퓨터네트워크] 02. (3)Network Layer(네트워크 계층) - DHCP, NAT
상단으로

티스토리툴바