본문 바로가기

CS/컴퓨터네트워크

Network layer - IP4


Network layer에 있는 protocol 종류

1) Routing protocols

2) IP protocol : data와 관련

3) ICMP protocol : router가 자신의 상태를 보고하기 위해 사용(host에게 error reporting 하는 용도)

 

IPv4 datagram format

protocol이 하는 일 -> protocol의 data unit의 header 보면 알 수 있다

  • type of service = type of data
  • length = header + data
  • 색칠한 3가지 : fragmententation & reassemble에 사용됨
  • time to live = datagram이 유령처럼 frop 안되고 계속 네트워크 돌아다니는 걸 방지하기 위해 (한 hop지날때마다 1씩                         줄임, source가 내보낼 때 setting 한다)
  • upper-layer protocol : TCP/UDP 중 어디에 배달되는지 알아야 해서
  • header checksum : IP header만 checksum된다

-> 하나의 message 전송하는데 드는 overhead

   : 40 bytes(20 bytes of TCP, 20 bytes of IP) + app layer overhead for TCP+IP


IPv4 fragmentation

: 필요한 이유 -> MTU 사이즈의 차이 때문에!! (MTU란 link level frame이 최대로 carry할 수 있는 data 양)

  (MTU가 큰 링크에서 작은 link로 전송하려면 중간 router에서 fragmentation 해줘야 함)

: 같은 사이즈의 data에 비해 header 양이 많아져서 overhead가 커진다

IPv4 Reassemble

: final destination host에서만 reassemble 된다 (final destination 도착 전까지는 안됨)

: 아까 위의 IPv4 datagram header에서 본 3 가지가 identify하고 order 정하는데 사용됨

( 하나의 datagram이 여러 fragment로 나뉘어 도착하므로 같은 datagram에 속하는지, 해당 datagram 내에서 순서 어떻게 되는지 다 표시해주어야 함)

: 최종 목적지에 하나의 fragment라도 도착하지 않으면 해당 datagram 자체를 버려 버린다 ( TCP가 이 loss를 recover한다)

 

IPv4 fragmentation 문풀 -> 20 bytes header 유의!!

4000 bytes datagram = (3980+20) data, header

1500 bytes MTU = (1480+20) data, header

  • length = data+header(20)
  • ID : fragment가 같은 datagram에 해당되는지 판단할 때 이용 (fragment들끼리 같은 ID면 같은 datagram에 속함)
  • fragflag : 내가 해당 datagram의 마지막 fragment인지 아닌지 나타냄 (0이면 마지막 flag / 1이면 마지막 아님)
  • offset : original datagram에서 내가 어느 부분인지 나타냄 (번째 data/8)

-> Network layer ppt p.37 다시 풀어보기


IPv4 addressing -> "주소가 모자르다"는 가정하에 이해하면 수월~~~

IP adress: host/router의 interface마다 붙여지는 identifier (32 bit짜리 id). 내가 보는 건 8bit씩 잘라서10진수로 표현한 형태

즉, interface마다 IP주소가 할당되게 된다

  -> interface란? : host/router와 link를 연결해주는 connection 부분

                           : interface들은 link layer에서 연결되어 있다

 

cf) 주소 절약 효과가 있는 프로토콜

   1) CIDR

   2) DHCP

   3) NAT

 

subnet

-> 중간 router 없이 연결되어 있는 interface들의 모임

-> 같은 subnet에 위치한 device interface들은 IP address에서 subnet part 값이 같고 router 개입없이 서로에게 도달할 수        있다

IP address = subnet part + host part

 -> subnet mask = subnet part bit을 부르는 호칭 

 -> host part : host를 identify 하기 위해 사용

 

IPv4 addressing 방법

1) classful addressing

-> first few bit을 보고 어디까지가 subnet portion인지 쉽게 찾을 수 있다

  but, IP 주소 공간을 매우 낭비해서 쓰게 됨!

2) classless addressing

-> CIDR

   -> 주소 절약 하기 위해 고정된 길이가 아닌 가변길이의 subnet portion을 사용한다.( /x에서 x가 어디까지가 subnet          portion인지 나타냄)

    -> x = subnet mask / network prefix / prefix

ppt 연습 문제 풀어보기!


그렇다면 이런 IP address를 어떻게 얻을까?!

-> 이건 사실 두 개의 질문이다 (host가 & network가)

 

1) host가 어떻게 IP address를 얻을까?

  1. hard-coded (config 파일에 내가 직접 타이핑 해줌)
  2. DHCP (Dynamic Host~) 

 -> 자신이 속한 기관으로부터 IP 주소 얻는다

2) network가어떻게 IP address얻을까?

  1. 주소의 subnet part를 통해

 -> 각 기관은 ISP로부터 IP 주소 얻는다


먼저, 1) host가 IP address를 어떻게 얻는지부터 살펴보자!!

 

DHCP

: server로 부터 일시적인 주소를 dynamically하게 얻는다

  • Client-Server protocol
  • Plug-and-play
  • UDP위에서 동작한다 (암기용 : dynamic하게 주려면 빠른 UDP가 나아서 라고 외우기,,ㅎ)
  • server & client 둘 다 well-known port를 사용!! (client IP address가 없고 broadcast 하기 때문)
  • 목표 -> network에 "join"하게 되면 dynamically network로부터 IP address를 얻는다
  • 주소 재사용 가능! (세 명이 동시에 네트워크에 접속하고 있지않으면 하나의 주소로 세 명의 user를 support 가능)
  • join / leave 하는 moblie user들 support해줌 (방을 옮겨서 새로운 network에 접속하면, 바로 DHCP가 background로 돌아서 새 IP 주소를 자동으로 configure 해준다)

DHCP 과정

1) host가 DHCP discover mesg를 broadcast 한다 -> optional (기억하고 있거나 이전에 할당된 걸 재사용할 경우 안 거침)

2) server가 DHCP offer mesg로 reply한다 -> optional (기억하고 있거나 이전에 할당된 걸 재사용할 경우 안 거침)

3) host가 DHCP request mesg로 IP address 요구

4) server가 DHCP ack mesg로 주소 보내준다

-> 네 가지 모두 broadcast 된다!!

 

DHCP client-server scenario

: DHCP는 subent별로 subnet에 존재한다

: 노트북을 키면 DHCP client 프로그램이 저절로 동작(plug-and-play)해서 주소를 DHCP 서버로 부터 받아오게 된다

1) src : 0.0.0.0 -> 나는 아직 주소가 없어서

          : 68 -> well-known 포트 번호

    dest : 255.255.255.255 -> broadcast니까 전부 1이다

          : 67 -> well-known 포트 번호

    yiaddr : assign 받은 address

    transaction ID : client쪽 mesg와 server쪽 mesg를 mapping 시키기 위해 (둘다 broadcast 하기에

                             어느 메시지에 대한 답인지 알아내기 위해 붙는다)

 

2) 내가 DHCP 서버야. 너 이 IP 쓸래?

   yiaddr : 이 주소 사용할지 suggest 한다

   lifetime : 일시적이다

 

3) yiaddrr : 이거 쓸게 / 이거 써도 돼?

    transaction ID 바뀜!

    lifetime : 너가 제시한대로 쓸게

 

 

-> 모든 DHCP message는 목적지가 broadcast 된다

   + host에서부터 보내지는 것들은 src가 0.0.0.0이고 server에서부터 보내지는 것들은 src가 서버의 주소다


Host가 DHCP로부터 얻게 되는 정보

 1) network mask (subnet mask)

   -> DHCP가 주는 IP address에서 어디까지가 subent portion인지 알려줌

 2) first-hop router의 address

 3) DNS서버의 이름&IP주소

 4) host의 IP address

 

DHCP 예시

laptop을 connect 하기 위해서는 laptop의 IP주소, first-hop router의 주소, DNS의 주소를 알아야 함

-> DHCP 사용하기

1) DHCP request가 ethernet에서 encapsulate됨

2) 이게 broadcast 되어 DHCP 서버가 동작하는 router에게 도착

3) DHCP 서버에서 receive한 걸 demux하고 DHCP ACK을 만든다 (client의 IP주소, first-hop router의 IP주소, DNS 서버의      이름&IP주소가 들어있음)

4) 이걸 DHCP 서버에서 encapsulate하고 client에게 frame forward한다

5) client가 이를 demux하여 client의 IP주소, first-hop router의 IP주소, DNS 서버의 이름&IP주소를알게 된다


이제 아까 위에서 언급했던 2) network가어떻게 IP address얻을까? 에 대해 살펴보자!

 

먼저, 다시 기억을 복귀해보자

host자신이 속한 기관으로부터 IP 주소를 얻어 왔다!

그렇다면 각 기관은 어떻게 IP 주소 block을 얻을까?! (network가 IP주소의 subnet part를 어떻게 얻을까?)

 -> 그 기관을 인터넷에 연결해주는 서비스를 제공하는 ISP로부터 얻는다!!!

-> 8개의 기관을 식별하기위해 3bits가 더 필요

-> Route aggregation : first 20bits기 이렇게 시작하는 애들은 다 나한테 보내죠~

   -> 목적지에서 멀수록 aggregate해서 advertise 하게 된다

 

Route aggregation

first 20 bit가 200.23.16으로 시작하는애들은 나한테 보내줘~

 

Longest prefix matching

: forwarding table entry와 목적지  주소를 match 할 때 가장 길게 match 되는 것을 갖고 forwarding을 어디로 할지 결정

ppt p.63 문제 풀어보기


그렇다면 ISP들은 IP 주소 block들을어디서 받아오는걸까?!

-> ICANN (ISP들에게 주소 block 할당해주는 일을 총괄하는 기관)

   -> 근데 얘네들이 모든 ISP에게 할당해주기 힘드니까 전세계적으로 5개의 regional registries를 두고 이들을 통해

        local registers에게 주소 block 할당해준다

 

그럼 주소 block 할당 과정을 총 정리 해보자!!

ICANN -> Regional Registries -> Local Registries -> ISP -> 기관 -> host

 

근데 ICANN에서 IPv4 주소의 마지막 chunk를 2011년에 할당해버렸다,,,

이제 남은 주소 block이 없는데?!

-> NAT를 이용한다

 

NAT란? 

: 한 local site가 block of IP address가 아니라 IP address 한개만 받아오고 이 local site에 있는 컴퓨터들이 세상에 대해 그 주소 하나에 대해 공통으로 사용하는 방식

 

다음 글에서 NAT에 대해 자세히 살펴보자~~~

'CS > 컴퓨터네트워크' 카테고리의 다른 글

Network layer - IPv6  (0) 2023.12.13
Network layer - NAT  (0) 2023.12.13
Network layer - Router  (0) 2023.12.12
Network layer - overview of Network Layer  (0) 2023.12.12
transport layer 용어정리  (0) 2023.10.27