////
Search

IP: Internet Protocol

Created
2022/09/03 11:15
1 more property

End system에 IP가 지정되는 방법

1.
시스템 관리자에 의해서 IP 주소를 지정하는 방법
a.
이런 방법으로 IP가 할당되면 좀처럼 바뀌는 일이 없음
2.
DHCP (Dynamic Host Configuration Protocol)을 이용해 서버를 통해서 얻는 방법

DHCP : Dynamic Host Configuration Protocol

DHCP를 이용해서 서버로부터 다이나믹하게 주소를 받아오게 되면 Host가 네트워크에 접속하고 있는동안에만 IP를 할당하고 네트워크를 나가면 해당 주소를 재사용 할 수 있음
즉 IP의 효율성이 높아짐
특히 모바일 유저의 경우 해당 네트워크에 상시로 속해 있는게 아니기 때문에 DHCP를 이용하는게 효율적임

DHCP Overview

DHCP도 어플리케이션계층으로 구성되어 있음
Host가 DHCP서버를 발견하기 위해 서브넷에 boradcast 하는 DHCP discover 메세지
Optional
DHCP서버가 자신을 서브넷에 알리기 위해 브로드캐스트 하는 DHCP offer 메세지
Optional
호스트가 자신이 사용할 IP를 요청하는 DHCP request 메세지
DHCP가 응답해주는 DHCP act 메세지

DHCP 동작 시나리오

1.
arriving client는 DHCP서버를 발견하기 위해 DHCP discover 메세지를 브로드캐스트함
a.
src ip 주소가 0.0.0.0 인데 나의 IP주소를 모르는 경우에 사용할 수 잇는 방법
b.
dest ip는 브로드캐스트라는 의미를 가진 255.255.255.255를 사용
c.
yiaddr은 자신이 DHCP를 통해 할당 받은 주소를 의미함
d.
transaction ID를 통해서 어떤 메세지의 응답인지 구분이 가능하게 함
2.
DHCP서버는 DHCP offer 메세지를 통해서 자신이 DHCP서버라는걸 알려줌과 동시에 사용 가능한 IP 주소를 넘겨 줌
3.
DHCP서버를 확인한 얼라이빙 클라이언트는 DHCP request를 DHCP offer에 함께 실려온 IP주소의 사용을 확정합니다.
4.
DHCP서버는 DHCP ack을 통해서 ip 주소를 할당을 확정합니다.

DHCP: more than IP addresses

DHCP는 IP 주소를 할당하는것 뿐만 아니라 End system이 인터넷에 연결해서 통신하는데 필요한 몇가지의 중요한 정보를 제공함
First-Hop Ip의 주소를 제공함
상대의 IP주소를 알아낼 수 있도록 로컬DNS 서버의 주소를 제공
할당하는 IP주소에서 서브넷 portion이 얼마만큼 인지도 알려주는 network mask 제공

DHCP: example

1.
랩탑을 켜게되면 자동적으로 DHCP 클라이언트가 구동되어 DHCP request를 생성
2.
생성된 DHCP request는 랩탑의 protocol stack을 따라 내려가면서 캡슐화됨
3.
생성된 DHCP request를 DHCP서버에서 캡슐화를 풀어가며 해석함
4.
동일하게 DHCP서버는 DHCP ack을 만들어 protocol stack을 따라 캡슐화된 데이터를 전송
5.
클라이언트도 동일하게 protocol stack을 통해 캡슐화를 풀어가며 DHCP ack을 해석

IP addresses: how to get one?

서브넷은 그 서브넷을 인터넷에 연결해주는 ISP로 부터 일련의 IP블록을 할당받게 됨
ISP는 추가적인 3비트를 식별자로 할당하게 됨

Hierarchical addressing: route aggregation

ISP들은 자기에 속한 기관들에서 사용되고 있는 IP주소를 advertise 해줘야 함
개별 IP주소 각각의 위치를 알리는 대신 목적지 IP주소의 시작지가 동일한 경우 모두 자신에게 보내라 명시함
예를 들어 200.23.20.16.0의 첫 20비트로 시작하는건 Fly-By-Night-ISP가 받게 됨

만약 ISP를 변경한다면???

조직 1이 ISP를 변경했을 때 ISPs-R-US는 자신의 IP를 변경해주어야만 하는가?
답은 변경하지 않아도 된다.
조직 1의 IP 주소를 추가로 advertise 해주면 됨!

Longest prefix matching

인터넷에선 개별 IP 주소별로 advertise 하지 않고, subnet prefix를 통해서 advertise함
라우터에선 advertise된 prefix를 가능한 경우엔 종합해서 가능한 forwarding table의 엔트리를 줄이기도 함
라우터는 지휘적으로 먼 루트일 수록 더 크게 route aggergation하게 됨
서울 주변의 표지판에선 경상도의 도시나 동내에 개별적 표지판을 두지 않지만
경상도로 진입하면 그 목적지의 자세한 표지판이 등장함
forwarding table을 lookup 하기 위해선 패킷의 목적지 주소와 forwarding table의 prefix간의 longest prefix 매칭을 하게됨

IP addessing: the last word

ISP는 어찌 IP블록을 할당받는가?
우리나라에선 한국인터넷정보 센터에서 할당함!
국가의 전반적 ISP어드레스 관리와 DNS 관리
특정 도메인에 대해 보유권 주장에 대한 쟁의 발생시 이를 조정함

NAT: network address translation

NAT도 CIDR/DHCP와 같이 IP주소 고갈에 대응하고자 조금더 IP를 효율적으로 이용할 수 있도록 만든 기술
NAT을 사용하면 서브넷이 하나의 IP주소만을 가지고 외부에 연결 할 수 있도록 만들어주는 메커니즘
NAT을 사용시 로컬 서브넷 내에선 임의로 결정된 IP prefix를 이용해 end-system에게 할당
NAT에선 외부로 나가는 모든 데이터그램은 138.76.29.7로 나가게 됨
NAT를 이용함으로서 서브넷 개별로 IP주소를 할당받을 필요가 없어짐 단 한개의 IP 주소만을 할당 받으면 됨
Local network에 관리되는 IP주소가 외부와는 무관하기 때문에 IP주소 변경이 자유롭다.
ISP를 변경한다 하더라도 Local network의 영향이 없음
외부와 내부의 주소관리가 모두 독립적으로 이루어질 수 있음
외부에서는 내부 디바이스의 IP가 invisible 하기 때문에 보안 측면에서도 좋음

Subnet에 속하는 device들이 NAT을 통해서 통신을 하는지

NAT라우터가 외부와 내부의 네트워크를 연결하고 있음
로컬 네트워크에서 외부로 나갈때는 NAT라우터를 지나가게 됨
로컬 네트워크의 디바이스가 데이터그램을 만들어서 내보낼때 source IP를 자신의 사설 IP를 적어서 내보내게 됨
NAT라우터에선 source IP와 포트를 변경하게 됨 → NAT IP address와 새로운 포트 번호
외부에선 사설IP에서 보낸것인지 알 수 없음
NAT정보로 변경하면서 해당 매핑정보를 기억해둠
다시 응답이 돌아오면 해당 매핑정보를 통해서 사설IP로 변경해서 되돌려 줌

NAT을 이용해 Local network와 주고받는 예시

1.
10.0.0.1 디바이스가 128.119.40.186:80 에 데이터를 내보냄
a.
해당 데이터그램의 source IP와 포트번호는 10.0.0.1:3345라 가정
2.
NAT 라우터에선 해당 응답을 137.76.29.7:5001로 변경하고 NAT translation 테이블에 해당 매핑정보를 저장함
3.
외부의 목적지에서 응답 데이터 그램이 올때 NAT에서 변경된 source를 통해서 전달받기 때문에 NAT에서 변형된 목적지 주소로 전달 됨
4.
NAT 라우터에서는 translation 테이블을 참조해서 응답 메세지를 변경해서 전달 함
NAT는 6만여개의 커뮤니케이팅 커넥션을 지원 가능
NAT는 어플리케이션 디자인에서 여러 제약을 가지게 됨
NAT에서 연결되는 네트워크에 연결되려면 End-system이 먼저 데이터그램을 내보내야만 함
그런데 서버의 경우엔 외부에서 서버로 연결되는 방식이라서 요게 어렵다!
이에 대한 해결책은
NAT뒤에서 특정 서버프로세스가 만들어지면 관리자가 수동적으로 NAT 매핑 테이블을 만들어두는 것!
해당 프로세스를 자동적으로 수행해주는 프로토콜 = UPnP
서버프로세스가 생성되면 UPnP를 이용해 서버 IP주소를 습득함 라우터에게 자신의 IP와 포트번호를 lease 해달라는 요청을 한다.
궁극적으로 IP고갈 문제는 IPv6를 이용해야 한다.