ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 10주차: Net) Dhcp, NAT
    교내 강의/컴퓨터 네트워크 2024. 5. 19. 17:46

    IPv4 address exhaustion:

    IPv4에서 사용할 수 있는 주소가 고갈이 되고 있음.
     
    Solution:

    • CIDR(classless Inter-Domain Routing)
    • DHCP(Dynamic Host Configuration Protocol)
    • NAT(Network Address Translation)
    • IPv6(IP version 6)

    DHCP(Dynamic Host Configuration Protocol):

    DHCP는 IP 주소 및 기타 통신 매개변수를 네트워크에 연결된 장치에 자동으로 할당한다. (NordVPN)
    (호스트가 자신의 IP 주소를 할당받아 사용하는 'hard-coded' 방식을 사용하면 호스트가 네트워크를 사용하지 않을 때에도 그 호스트의 IP 주소를 사용할 수 없기 때문에 비효율적이다. 따라서 DHCP 방식을 사용한다.)
     
    DHCP는 app layer의 프로토콜이고 UDP통신을 사용한다.
     
    plug-and-play라고도 불림:
        connected되어 있을 때만 주소를 할당 받음,
        disconnected되면 그 주소를 다른 기기에 할당할 수 있음.

    DHCP의 동작 과정

    *DHCP는 UDP통신이다.
    1. 호스트가 DHCP discover 메시지를 broadcast함 (DHCP 서버를 찾기 위함) 

    • src, dest는 미정이기 때문에 위와 같이 설정
    • 포트번호는 지정되어 있다.
    • ID로 타 패킷과 구분

    2. DHCP 서버가 DHCP offer 메시지(ack)를 broadcast함  (optional)

    • 보낸 주소를 모르기 때문에 broadcast함.
    • 본인의 src를 명시함.
    • yiaddrr로 src에게 IP주소를 넘겨줌
    • lifetime은 해당 IP주소를 얼마나 사용할지 명시 (이는 연장(re)이 가능함)

    3. 호스트가 IP 주소를 요청하는 DHCP request 메시지를 보냄 (캐시가 있는 경우)

    • Broadcast하는 이유: DHCP서버가 여러개일 경우 모두에게 그 주소를 사용한다는 것을 알려야 함.(Unicast로 가능 경우도 있음)
    • ID가 이때 바뀜 (+1)

    4. DHCP 서버가 이에 응답하는 DHCP ack 메시지를 보냄

    • Unicast로 가능 경우가 있음
    • first-hop router (바로 다음에 향할 라우터)의 주소 포함
    • DNS 서버의 이름과 IP 주소 포함
    • 네트워크 마스크 (어디까지가 네트워크 주소인지를 나타냄) 포함

    How to get one?:

    ISP가 가지고 있는 IP주소를 쪼개서 가진다.
    서브넷 마스크가 변한 것을 확인하자. (20->23 하나의 ISP가 총 8개로 나눠짐)


    Hierarchical addressing:

    효율적인 라우팅을 위해 계층을 나누어서 관리한다.

    Fly-By-Night-ISP, ISPs-R-Us 총 두개의 ISP가 있다
    두 네트워크는 서로 네트워크 주소가 다르다. 그리고 각각의 네트워크는 특정 요청을 자신한테로 보내면 된다는 것을 인터넷에 알려준다.
    예컨대 Fly-By-Night-ISP ISP는 "200.23.16.0/20 으로 시작하는 IP는 나한테로 보내시오" 라고 한다.
    이 때 organization 1이 ISPs-R-Us 밑으로 이동한다고 해보자.

    그러면 이동한 organization 1은 주소를 변경해야 할까?
    답은 '변경하지 않아도 된다' 이다.
    기본적으로 routing algorithm은 longest prefix matching 원칙을 따르기 때문이다. (200.23.18.0/23이 더 긴 prefix이다.)
     

    ICANN(Internet Corporation for Assigned Names and Numbers, 국제인터넷주소관리기구):

    ISP는 ICANN을 통해 ISP block을 할당받는다.
    DNS를 관리하고 할당하며, 충돌 등을 해결한다.


    NAT(network address translation):

    라우터에서 사설ip<->공인ip를 바꾸어 인터넷으로 들어오고 내보낸다.
    24, 20, 16 bit block이 존재한다.
     
    ISP는 하나의 공인 IP만 관리하면 되기 때문에 관리가 쉽다.
    local network의 주소는 외부에게 알리지 않고 바꿔도 된다.
    local network의 주소를 바꾸지 않고 ISP를 바꿀 수 있다. (라우터는 교체)
    보안 효과도 있다(해커는 공인ip로 라우터까지 밖에 접근할 수 없다.)

     
    1) 먼저 로컬 네트워크에서 10.0.0.1 IP, 3345 포트를 사용하는 호스트가 128.119.40.186 으로 데이터그램을 보낸다. 이는 NAT 라우터로 전달된다.
    2) NAT 라우터는 이 데이터그램에서 source IP address 부분을 NAT IP인 138.76.29.7로 변경하고, 새 포트번호인 5001번으로 변경한다. 그리고 NAT translation table에 10.0.0.1 IP, 3345 포트를 사용하는 호스트가 5001번 포트를 사용하고 있다는 사실을 기록한다.
    3) 외부에서 destination이 138.76.29.7 IP (NAT IP에 해당), 5001번 포트번호가 기록된 데이터그램이 들어오면 포트 번호를 table에서 찾은 후 10.0.0.1 IP, 3345 포트를 사용하는 호스트가 목적지임을 알게 된다.
    4) 데이터그램의 destination 정보를 10.0.0.1 IP, 3345 포트로 변경하여 올바른 호스트에게 전달한다.
    *홀펀칭 방식으로 서버로 운영할 경우 별도의 port forwarding처리가 필요하다.

    16 bit block: 총 65536의 주소를 하나의 LAN side에서 관리할 수 있다.
     
    논쟁:
        port number를 수정하는데 network layer에서 transport layer가 담당하는 port를 건드는 것은 잘못되었다!
        NAT traversal: 클라이언트가 집안에 여러개의 서버를 두고 싶다면?
     
     

    NAT traversal: 

    만약 클라이언트가 HTTP(80) 서버를 두개 둔다면 어카냐? 
    LAN side는 상관이 없지만(다른 IP) WAN side는??

Designed by Tistory.