CS/Network

IP : Internet Protocol

WakaraNai 2021. 12. 4. 03:57
728x90
반응형

Protocol in Control Plane, Data Plane

in control plane...

ICMP protocol : internet control message protocol - router 간, router와 host 간 에러 보고

routing protocol : routing을 위한 network 상태를 수집하여 routing algorithm 적용

  • path selection : end-to-end의 경로 설정

in data plane...

IP protocol : 어떻게 packet을 주고 받을 지 encapsulate해서 handle할 지

 


1.  IPv4 datagram format

datagram은 internet에서 중요한 역할을 함!

 

 

<router에서 처리>

timestamp

record route taken : 경유해온 router에 대해 저장

 

<server에서 처리>

specify list of routers to visit

 

<IP Header Field>

 

+) time to live : TTL

목적지에 이르지 못하는 경우

네트워크에서 떠도는 ghost datagram이 발생하지 않도록

하기 위한 IP header field

 

+) upper-layer protocol

IP datagram의 payload에 실린 데이터가

UDP 혹은 TCP 중 어느 프로토콜로 deliver 되어야 하는지를

알 수 있게 해 주는 IP header file name

 

 

application message를 TCP와 IP프로토콜을 사용해 전송하는 경우

최소한으로 발생하게 되는 protocol overhead는 byte : 40 = (20 TCP + 20 IP)

overhead 줄이기 위해 TCP에선 MSS만큼 보내려면

piggyback, cumulative ack 등을 해야 함

 

 


2.  Fragmentation & Reassembly

ethernet frame은 1500 byte까지 감당할 수 있지만

wide-area link가 고작 546byte까지 감당할 수 있다면

최대 bandwidth를 활용하지 못함

 

이러한 경우에 router에서 fragmentation을 통하여 

MTU(maximum transmission unit)에 따라

서로 다른 경로로 보냄

 

만약 더 많이 byte 보낼 수 있는 link를 받더라도

다시 reassembly하지 않음

한 번 쪼개면 그대로 끝까지 감

 

가장 마지막 host의 직전 router에서 reassembly함

 

 

 

대신 쪼개면 추가적으로 붙는 기본 내용들이 있어서 

총 길이가 길어지게 됨 (예시에서 확인하기)

(frag)flag=0인 것이 마지막임 (more bit 여부)

 

IP header에 fragment의 순서를 offset 필드에 명시함

첫 시작은 0

MTU 1500 byte에서 header 제외하면 1480 byte

이를 8로 나누어서 작은 숫자로 저장하려니 1480/8=185로 저장

 

만약 fragment 몇 개를 손실하면

TCP는 loss에 대한 recover로 해결

intermediate router에서  fragmentation이 발생했을 때
수정되어야 하는 IP header field는
length, offset, flag

 

 

예시2


3. IPv4 addressing

IP address : 32bit

host, router 자체가 아닌 이들의 interface를 식별하는 것

IP주소는 각 interface와 연관됨

interface란 host/router와 physical link 간 connection

 

router는 보통 여러 개의 interface를 가짐

host는 주로 하나 또는 두개 interface를 가짐

 

dotted address로 표현

 

Subnet

IP address

  • subnet part : high order bits
  • host part : low order bits

subnet?

  • 동일한 subnet part IP address를 가진 interface들을 모아서 구성
  • 이들은 router 없이 서로 직접적으로 연결됨
  • subnet part가 24bit라면, host part가 남은 8bit

 

이 사진에서 router를 제거하면 아래 사진

 

IP addressing : classful addressing

클래스 별로 subnet mask로 표현할 수 있는 가지수가 다르다.

IP주소의 32bit는 얼만큼 subnet으로 대체하는지에 따라서

Class C는 적은 수의 host(254개)만 제공

Class B는 좀 더 많이 제공하여 이것이 빠르게 확산됐지만,

poor uilization으로 인해 CIDR 체계를 사용하게 됨

CIDR의 필요성을 대두시킨
원래의 클래스 기반 고정 IP 주소체계의 주소 클래스는 
B다.

 

IP addressing : CIDR

Classes InterDomain Routing

subnet 용 주소의 길이가 저마다 다르게 설정

/ 뒤의 숫자를 subnet mask 또는 network prefix 또는 prefix라고 함

 

 

 

CIDR 주소체계에서는
subnet part address size가 가변적이지만,

원래의 IP 주소체계는
network을 표시하기 위해 사용하는 bit수가
address class에 따라 고정이었기 때문에
주소 space 사용이 비효율적이었다.

How to get IP address?

hard coding으로 한다면...

정보 통신처로부터 받은 IP를 아래 경로에 보관

Window OS: control-panel -> network-> configuration -> TCP/IP -> Properties

UNIX OS : /etc/rc.config

 

DHCP : Dynamic Host Configuration Protocol

    서버로부터  temporary address를 받음

  • client-server protocol
  • plug and play 방식으로 정보를 주고받음
  • service/daemon runs over UDP (server port: 67)
  • client도 well-known port 68을 가짐. client가 IP 할당 전에 요청하기 때문에

 

 

DHCP : dynamic host configuration protocol

DHCP server

유저가 네트워크에 계속 있다면 IP address 재사용을 허용

유저가 네트워크를 떠나면 그 주소를 다른 유저에게 할당할 수 있음

(plug and play 방식?)

 

DHCP

IP 주소뿐만 아니라 네트워크에서 정보 공유할 때 필요한 모든 정보를 제공

  • 상대방의 DNS server (local name server + IP address)
  • network mask 
  • default gateway로 보내기 위한 first hop router 주소 (다른 인터넷까지 가야할 때)

 

네트워크에 접속하는 호스트는

제일 먼저 DHCP 서버와 contact하게 된다. 

이 때 호스트가 DHCP 서버로부터 얻게 되는 정보는

- 호스트가 사용할 IP address

- subnet mask

- first hop router

- name and address of DNS server

 

오른쪽 사진 속 각 칸의 정보의 의미를 해석하면 왼쪽 사진 : msg - discover->offer->request->ack

 

DHCP relay agent에 연결된 하나의 DHCP server로부터

 

각 client에 IP 할당

 

host는

자신의 IP주소와

목적지의 name을 번역해줄 DNS server와

나를 인터넷에 연결시켜줄 first hop router 주소가 필요

 

DHCP request는 UDP로 IP를 캡슐화

physical link를 통해 broadcast 되어

DHCP server를 running하는 router에 도착

 

Ethernet -> demux -> IP ->demux ->UDP -> demux ->DHCP

받은 DHCP server는 ACK으로 응답

여기에 클라이언트가 바라는 3가지를 보냄


Hierarchical addressing : Route Aggregation

각 기관은 ISP address space로부터 사용가능한 IP주소 portion을 할당 받음

만약 8개의 기관에 제공한다면 3비트로 각각 할당 (20+3)

동일한 network prefix를 가지게 되면 무조건 route aggregation!

이는, 동일한 network prefix에 대해 무조건 나에게 보내게 하는 것

 

Hierarchical addressing : More specific routes

Longest Prefix Matching

한 bit를 더 보고 어느 것과 일치하는지 살피기

그래서 뒤에가 1000 1010101010는 1번 인터페이스와 매칭

 

호스트는 서비스 받고 있는 ISP가 보유한 주소 블록으로부터

IP 주소를 할당 받으므로

ISP가 변경되면 longest prefix matching으로 인해

IP주소는 반드시 변경되지 않아도 된다.

 

EX

4개 구분에 3bit 필요

왜냐면 h=2bit로는 2^2-2=2가지 뿐이라

subnet mask = 32(IP전체)-3 =29

 

!! -2를 빼먹지 말자

!! h = host part

"2^h-2 >= 대상 개수" 를 만족하는 h를 찾아야함 - 이건 할당 가능한 IPv4 주소 개수를 구하는 공식임

이 때 subnet mask는 32 - h bit

(-2 를 하는 이유는 all 0, all 1은 꼭 다른 애가 쓰고 있어서)

(3) 은 route aggregation을 통해 23bit를 알아냄

32 - subnet  = host

32 - host = subnet

 

도메인 이름 분쟁 관리

ICANN, KRNIC

 


4. NAT : Network Address Translation

subnet 전체가 하나의 NAT IP address를 사용

보통 인터넷에 연결해주는 gateway router, 즉 NAT-enabled router와 동일한 경우가 많음

오로지 하나의 source NAT IP address를 사용하지만

대신 각기 다른 source port 번호를 사용 

(60000개가 동시에 연결되어도 16bit port 번호라서 버틸 수 있다)

local network 안에서는 사설 IP 주소로 서로를 식별하고 이곳을 벗어날 때는 무조건 하나의 IP주소로

NAT 뒤에 있는 사이트의 모든 호스트들은
외부와 통신할 때 모두 동일한 하나의 IP address를 사용하게 된다.

 

SOHO(small office, home office)의 subnet에 유용한 방식

ISP로부터 주소 범위가 아닌

단 하나의 IP 주소만 할당 받아서 모든 장치를 사용

 

보안적인 측면에서 IP주소가 드러나지 않기 때문에 좋음

외부세계에 알리지 않고 local network 내의 장치들의 주소는 변할 수 있다

또한 local network 내의 장치들의 주소를 바꾸지 않아도 ISP를 바꿀 수 있음

 

NAT router를 거치면 NAT IP address,  새 포트번호로 교체

이를 NAT Translation table에 사설 IP 주소를 맵핑해둠

 

NAT is controversial

address shortage가 IPv6만 가능

router는 꼭 3 layer까지 가야함

NAT는 end-to-end connectivity 원칙을 위배

  • home network에서 돌아가는 서버에 문제를 일으킴 -ex) P2P
  • 자신만의 IP address를 갖지 않기 때문
  • 그러므로 NAT를 염두에 두고 웹을 만들어야 함
  • NAT traversal technique

 

NAT traversal technique

Solution 1 : 서버의 포트번호를 미리 저장해둠

 

Solution 2 : Universal Plug and Play (UPnP)

Internet Gateway Device (IGD) Protocol

NAT 형식의 host가

자동적으로 고정적인 NAT port mapping 정보를 넘김

 

 

NAT 뒤에 있는 호스트가
plug and play 방식으로 서버로 동작하기 위해 사용하는 프로토콜
IGD

 


5. IPv6

32bit 주소 공간의 부족을 해결하기 위해 128bit 이용

(IPv6 데이터그램 헤더에서 주소필드의 길이 = 128비트)

이외에도 router의 processing와 forwarding 속도 개선 

Quality of Service, 멀티미디어 스트리밍을 지원하기 위해

 

IPv6 datagram format

  • flow label : 해당 datagram들이 동일한 flow로 온다고 정의
    • flow의 종류는  audio/video transmission 있는데 정확히 정해진 개념은 아님
  • next header : = extension header가 있는 경우 다음의 extension header가 누구인지 지정.
    • 없으면 upper layer로 지정
    • 40 byte의 고정 길이 - 옵션필드가 사라짐

 

payload는 가변 길이

fragmentation을 허용하지 않기에 이에 대한 정보를 실지 않아서 간단해짐

error check도 사라짐 - 기술 발전이 되었기에 할 필요가 없다고 생각

 

 

Changes from IPv4 to IPv6

노랑: 그대로

초록: 새롭게 넣은 것

빨강: 삭제 (option -> extension header)

파랑: 위치와 이름 바꾸기 

  • TTL -> Hop Limit
  • Type of services -> Traffic Class
  • Total Length -> payload length (header길이가 고정되어 total 필요 없어짐)
  • protocol -> next header

고정 길이 40 byte header (32byte로 source/destination address 표현)

no fragmentation at router 

  • ICMP msg “Packet Too Big
  • next hop에 대해 MTU size만큼 제공
  •  최대 전송 단위(maximum transmission unit, MTU): 해당 레이어가 전송할 수 있는 최대 프로토콜 데이터 단위의 크기(바이트)

(X) header checksum : 각 hop에서 발생하던 processing time을 단축

(X) options : extension header로 하며 next header 필드에서 이를 정의

 

IPv6에서 IPv4의 option 필드 대신 사용하는 것은? extension header
IPv6 헤더에서 IPv4의 protocol 필드 역할을 할 수 있는 필드? next header

IPv6는 헤더 길이가 고정이기 때문에
header 길이를 표시하는 필드는 없고
payload 길이를 표시하는 필드만 있다

 

 

Transition from IPv4 to IPv6

1. Dual Stack IPv4/IPv6  : 주소의 형식에 따라 IPv4 스택에, IPv6 스택에 올림.

라우터가 이 두 가지 기능을 모두 탑재해야 함.

2. NAT-PT (NAT-Protocol Translation) : IPv4와 IPv6에 대해 NAT table을 참고하여 서로 주소 변환 

3. Tunneling : IPv6 datagram을 IPv4 datagram 속 payload에 실어서 보냄.

IPv6 입장에서 IPv4는 link layer를 통과할 수 있도록 포장해둔 것처럼 보임

다음과 같이 tunneling을 할 때,

IPv6 in IPv4 encapsulation을 하는 라우터는 어느 것인가?

정답 : B

 

IPv6 채택

구글은 8% 클라이언트의 요청을 IPv6로 처리

NIST : US 정부 domain의 3분의 1이 IPv6를 수용

유럽은 3GPP가 IPv6로 구체화됨 for mobile multimedia

배포에는 앞으로 20년은 더 걸릴 듯 : 


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

DHCP, NAT, CIDR(Classless InterDomain Routing), IPv6

 

728x90
반응형