IP addressing: CIDR
- CIDR(Classless InterDomain Routing)
- subnet part와 host part로 나뉨 -> 0x32와 1x32(0이 32개 혹은 1만 32개)인 경우는 사용하지 않음
- subnet part가 늘어날수록 host part는 줄어듦
- IP address는 independent함 -> 각각 다른 컴퓨터에서도 사용이 가능(동시사용은 불가능)
- /23은 subnet이 23비트 차지하고 있다는 의미
DHCP(Dynamic Host Configuration Protocol)
- 할당 받을 때마다 address가 바뀜
- 목적 : 임의의 host가 network안(wifi 등)에 들어가서 인증 후에 network server로부터 IP address를 받아야 할때 -> join할 때마다 새롭게 받을 수 있음
- 접속하여 받은 address를 접속을 끊은 후에 다른 기기에서 재사용 가능
- 모바일 유저에 엑티브하게 활용 가능
- DHCP overview
- DHCP discover : 호스트 브로드캐스트
- DHCP offer : server만 responds함 -> address 권유
- DHCP request : IP address 요청
- DHCP ack : IP address가 포함된 ACK
- 예제
- 같은(근처) 서브넷안의 DHCP server로만 요청가능
- DHCP discover : server에 브로드 캐스트 모두 F인 address는 broadcast - 모두가 받을 수 있음
- DHCP offer : 서버가 사용할 수 있는 IP주소를 제안
- DHCP request : 클라이언트가 제안받은 주소를 사용하겠다고 요청
- DHCP ack : ACK를 받으면 이때부터 IP address를 가지고 수행
- 예제
- 노트북에 연결하려면 IP 주소, 첫 번째 홉 라우터의 주소, DNS 서버의 주소가 필요
- UDP로 캡슐화 된 DHCP 요청, IP로 캡슐화 된 패킷, 802.11 이더넷으로 캡슐화 된 DHCP 요청
- DHCP 서버를 실행하는 라우터에서 수신 된 LAN의 이더넷 프레임 브로드 캐스트 (dest : FFFFFFFFFFFFF)
- IP 역 다중화 된 이더넷, DHCP로 UDP 역 다중화 된 이더넷
- DCP 서버는 클라이언트의 IP 주소, 클라이언트의 첫 번째 홉 라우터의 IP 주소, DNS 서버의 이름 및 IP 주소를 포함하는 DHCP ACK를 공식화
- DHCP 서버의 캡슐화, 클라이언트에 전달 된 프레임, 클라이언트에서 DHCP 로의 demuxing
- 클라이언트는 이제 DSN 서버의 IP 주소, 이름 및 IP 주소, 첫 번째 홉 라우터의 IP 주소를 알고 있음
IP address를 얻는 방법
- ISP's block -> 서브넷 까지만 표시 - ex) 200.23.16.0/20 -> 가장 상위에서 20비트까지만 서브넷 part라는 의미 -> 나머지 2^12까지 디바이스 관리 가능
- 하위로 내려갈수록 서브넷이 넓어지고 관리할 수 있는 디바이스가 줄어듦 - Hierarchical(계층적)
- 계층적으로 연결되어 있어서 연결이 안되어 있다면 상위로 들어가서 찾을 수 있음
- 예제 - 가장 상위 ISP가 1000 0000이라고 가정해보자, 아래로 2개의 서브넷이 있으며 내려오면서 각각 1000 0000, 1100 0000의 주소를 할당 받는다. 그리고 그 아래로 각각 4개씩 총 8개의 서브넷이 00, 01, 10, 11을 할당받고 가장 아래에 또 두개씩 0,1을 할당받는다.
- 여기서 가장 하위의 서브넷인 11111에서 10000의 서브넷으로 메시지를 보내고자 함
- 먼저 연결된 상위 서브넷(1111)으로 이동후 하위의 서브넷들을 검사는데 없다면 더 상위의 서브넷(11)으로 이동
- 다시 하위의 서브넷들을 검사하고 그래도 없다면 더 상위(1)의 서브넷으로 이동 후 하위의 서브넷들 검사
- 10으로 시작하는 서브넷을 찾았으니 그쪽으로 이동 아래로 이동하면서 원하는 서브넷의 주소에 해당하는 디바이스를 찾아냄 -> 메시지 전송
NAT(Network address translation)
- ICANN(Internet Corporation for Assigned Names and Numbers)라는 회사에서 IP할당 -> 2011년부터 IPv4지급이 끝나고 NAT를 이용하여 네트워크를 사용하기 시작
- NAT
- 그림과 같이 중앙의 router가 단일 주소인 138.76.29.7을 가지고 있고 아래로 서브넷들이 10.0.0.1~10.0.0.3을 가지고 있다면 실제로 IPv4를 할당 받은 것은 연결된 router하나이고 하위 서브넷들은 router의 주소 하나를 이용하여 통신
- NAT router must
- 패킷을 받았을 때 header를 바꾸고 저장(기억)
- NAT translation table에 기억 -> 응답에 대한 목적지가 router이기 때문에 하위 서브넷들에게 전송하기 위함
- 응답을 받았으면 다시 헤더를 원래 목적지로 바꾼 후 전송
- 서브넷에서 IP address를 보내면 router가 받아 새로운 address(자기자신)와 port넘버(서브넷을 위한 것)를 할당
- 다시 응답을 받으면 port number를 보고 자신과 연결된 subnet에 응답을 전송(목적지를 바꿈)
- 서브넷으로부터 메시지를 받은 목적지에서는 응답에 대한 목적지를 라우터로 인식하기 때문에 포트넘버를 할당해야 최종 목적지로 전송 가능
- subnet은 중간에 router가 개입한 것을 모르고 있음
- 2^16개의 port를 할당가능
IPv6
- 사용률이 적음, 5%정도
- 단점 : 개발을 했을 때 연결되어있는 그 공간에서는 잘 실행되지만 다른 공간으로 가서 사용하는 경우 실행되지 않음
- 서브넷에 외부 IP와 매칭시키면 외부에서 서브넷과 연결 시 공유기 설정을 바꿔줘야됨
- IPv4의 address가 부족해서 만들어짐 -> 40바이트의 헤더로 고정
- no fragmentation -> 대신 압축을 사용
- format
- pri(우선순위) : 흐름에서 데이터 그램 간의 우선 순위 식별
- flow Label(흐름 레이블) : 동일한 "흐름"의 데이터 그램을 식별합니다.
- next header(다음 헤더) : 데이터의 상위 계층 프로토콜 식별
- payload len : 데이터 파트
- 체크섬 : 각 홉에서 처리 시간을 줄이기 위해 완전히 제거
- 옵션 : 허용되었지만 header 외부, "next header"필드로 표시됨
- ICMPv6 : 새로운 버전의 ICMP 추가 메시지 유형, 예 : "너무 큰 패킷" 멀티 캐스트 그룹 관리 기능
- Transition from IPv4 to IPv6
- 모든 라우터들을 최신 버전에 맞게 업그레이드 할 수 없으므로 이 방식을 사용
- IPv4의 데이터그램이 IPv6를 통째로 data형식으로 감싸는 방식
- Tunneling
- IPv6를 통째로 IPv4의 datagram payload에 놓고 감싸서 보냄
- 목적지는 그 다음에 받을 IPv6의 라우터로 지정
- IPv6에 도착하면 다시 감싼걸 풀어서 전송
- Google : 8 %의 고객이 IPv6을 통해 서비스에 액세스
- NIST : 모든 미국 정부 도메인 중 1/3은 IPv6 가능
'네트워크 설계' 카테고리의 다른 글
[11월28일]chapter 6 - Link layer and LANs (0) | 2018.12.03 |
---|---|
[11월26일]Generalized Forward and SDN (0) | 2018.11.26 |
[11월19일]IP:Internet Peotocol (0) | 2018.11.23 |
[11/14]Chapter 4: network layer (0) | 2018.11.20 |
[11월12일]TCP congestion control (0) | 2018.11.17 |