IP: Internet Protocol
- Created
- 2022년 9월 3일 PM 8:15
End system에 IP가 지정되는 방법#
- 시스템 관리자에 의해서 IP 주소를 지정하는 방법
- 이런 방법으로 IP가 할당되면 좀처럼 바뀌는 일이 없음
- 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 동작 시나리오#


- arriving client는 DHCP서버를 발견하기 위해 DHCP discover 메세지를 브로드캐스트함
- src ip 주소가 0.0.0.0 인데 나의 IP주소를 모르는 경우에 사용할 수 잇는 방법
- dest ip는 브로드캐스트라는 의미를 가진 255.255.255.255를 사용
- yiaddr은 자신이 DHCP를 통해 할당 받은 주소를 의미함
- transaction ID를 통해서 어떤 메세지의 응답인지 구분이 가능하게 함
- DHCP서버는 DHCP offer 메세지를 통해서 자신이 DHCP서버라는걸 알려줌과 동시에 사용 가능한 IP 주소를 넘겨 줌
- DHCP서버를 확인한 얼라이빙 클라이언트는 DHCP request를 DHCP offer에 함께 실려온 IP주소의 사용을 확정합니다.
- DHCP서버는 DHCP ack을 통해서 ip 주소를 할당을 확정합니다.
DHCP: more than IP addresses#
DHCP는 IP 주소를 할당하는것 뿐만 아니라 End system이 인터넷에 연결해서 통신하는데 필요한 몇가지의 중요한 정보를 제공함
- First-Hop Ip의 주소를 제공함
- 상대의 IP주소를 알아낼 수 있도록 로컬DNS 서버의 주소를 제공
- 할당하는 IP주소에서 서브넷 portion이 얼마만큼 인지도 알려주는 network mask 제공
DHCP: example#

- 랩탑을 켜게되면 자동적으로 DHCP 클라이언트가 구동되어 DHCP request를 생성
- 생성된 DHCP request는 랩탑의 protocol stack을 따라 내려가면서 캡슐화됨
- 생성된 DHCP request를 DHCP서버에서 캡슐화를 풀어가며 해석함
- 동일하게 DHCP서버는 DHCP ack을 만들어 protocol stack을 따라 캡슐화된 데이터를 전송
- 클라이언트도 동일하게 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와 주고받는 예시#

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