2023. 02.03 15:00 복습 시작
IP
IP 주소는 32비트이며 라우터, 호스트 인터페이스에 할당된다.
네트워크 인터페이스에 할당된다는 개념이 중요하다.
인터페이스란 호스트와 라우터들을 연결하는 물리적 링크이다.
IP 주소는 32비트 즉, 4바이트다. 한 가지 예시를 들어보겠다.
223.1.1.1, 223.1.1.2, 223.1.1.3 주소끼리 묶이고 223.1.2.1, 223.1.2.2 끼리 마지막으로 223.1.3.1, 223.1.3.2 끼리 묶여있다.
223.1.1과 223.1.2, 223.1.3은 네트워크 아이디며 뒤에 마지막 숫자 하나는 호스트 아이디다.
223.1.1.1 = 11011111 00000001 00000001 00000001 IP 주소 예시다.
IP address class 즉 IP 주소 클래스가 있다.
A, B, C 클래스만 살펴보겠다.
- A클래스는 IP 주소에서 네트워크 ID부분 바이트가 1이다. 호스트 ID에 들어갈 수 있는 IP 개수 2^24.
- B클래스는 IP 주소에서 네트워크 ID부분 바이트가 2이다. 호스트 ID에 들어갈 수 있는 IP 개수 2^16.
- C클래스는 IP 주소에서 네트워크 ID부분 바이트가 3이다. 호스트 ID에 들어갈 수 있는 IP 개수 2^8.
A클래스가 네트워크 ID 크기가 1 바이트면 호스트 ID 가 3바이트로 네트워크 크기가 제일 크다.
서브넷
서브넷이란 물리적으로 연결되어 라우터가 필요 없는 네트워크다.
서브넷을 결정하려면 먼저 호스트나 라우터에서 각 인터페이스를 분리하고 고립된 네트워크를 만든다.
이 고립된 네트워크의 종단점은 인터페이스의 끝이 된다.
이렇게 고립된 네트워크 각각을 서브넷이라고 부른다. 서브넷은 브로드캐스팅이 가능하다.
서브넷 마스크
- 서브넷 마스크가 주어지면 IP와 AND 연산을 통해 네트워크 ID를 알아낼 수 있다.
CIDR
CIDR은 Classless Interdomain Routing 약어이다. CIDR은 주소체계 표기를 일반화한다.
서브넷 주소체계로서, 32비트 IP 주소는 두 부분으로 나누고,
이것은 다시 점으로 된 십진수 형태의 a.b.c.d/x를 가지며, 여기서 x는 주소 첫 부분의 비트 수이다.
네트워크 ID에 비트 수라고 이해하면 되겠다.
네트워크 클래스를 이용해 x 에는 8 16 24 밖에 들어가지 못하는데 CIDR을 이용하면 유연하게 23 22같이 다른 숫자가 들어갈 수 있다.
클래스가 없는 네트워크 지원은 CIDR이 한다.
x는 넷마스크의 길이와 같다. 다시 강조! 넷마스크와 IP를 이용해 네트워크 ID를 알아낼 수 있다.
DHCP
- 동적 호스트 구성 프로토콜은 호스트 IP 구성 관리를 단순화하는 IP 표준이다.
- 동적 호스트 구성 프로토콜 표준에서는 DHCP 서버를 사용하여 IP 주소 및 관련된 기타 구성 세부 정보를 네트워크의 DHCP 사용 클라이언트에게 동적으로 할당하는 방법을 제공한다.
- 즉 서버가 요청을 보낸 클라이언트(이용자)에게 임의로 동적인 IP를 부여한다.
게이트웨이
- 쉽게 말해 다른 네트워크를 가기 위한 제일 가까운 라우터다. 가장 처음 통과하는 라우터의 주소가 게이트웨이 주소다.
IP주소 체계를 v4에서 v6으로 바로 못 바꾸는 이유는 거대 통신사들이 설치한 라우터가 IPv4 기반이라서 그런다.
즉 돈이 겁나게 들어서..!
IPv4는 최대 개수가 10억 개 정도다. 어떻게 이런 적은 개수로 전 세계가 IPv4를 이용하고 있을까?
어마어마하게 많은 사설 IP를 사용하고 있기 때문이다. 이에 관해서 NAT에 관해 알아보겠다.
NAT 네트워크 주소 변환
홈 네트워크의 4개 인터페이스 모두 같은 네트워크 주소 10.0.0.0./24를 갖는다.
이런 수많은 사설 IP를 가져서 우리는 IPv4를 아직까지도 사용하고 있다.
이런 내부 사설망은 우리 홈 네트워크에서만 의미가 있는 주소이다. 글로벌 IP에 10.0.0.1이 있고 홈 네트워크에도 10.0.0.1이 있다.
만약 글로벌 인터넷과의 송수신에서 IP주소가 겹치면 오류가 발생할 것이다. 이런 일이 어떻게 일어나지 않을까?
해답은 NAT이해에 있다.
NAT 가능한 라우터는 외부 세계에서는 라우터처럼 보이지 않는다.
대신 NAT 라우터는 외부세계로는 하나의 IP 주소를 갖는 하나의 장비로 동작한다. 따
라서 홈 네트워크의 IP가 글로벌 IP와 겹쳐도 문제가 발생하지 않는다. 이번에는 홈 네트워크 사설 IP가 글로벌 IP에게 요청을 보내는 상황이다.
내부 IP가 외부 네트워크에 요청을 보내려고 한다. 요청이 출발하면 홈 네트워크의 사설 IP가 아닌 라우터 인터페이스 IP로 IP가 바뀐다.
응답이 돌아오면 사설 IP에 다시 이 응답을 보내줘야 하는데 어떻게 보낼 수 있을까?
이때 포트 번호를 이용한다. 우리는 사설 IP가 나갈 때 라우터의 공식 IP를 이용한다. 대신 NAT Table에 Port를 할당한다.
그리고 호스트의 주소를 매핑한다. 이런 방식을 이용해 외부 네트워크와 통신을 할 수 있다.
더 많은 포트 번호를 사용하려면 IP를 더 사용하면 된다.
IPinIP 터널링
- IPv4 데이터그램을 보내고 라우팅 하며 받는 IPv6는 존재한다.
- 그러나 반대의 경우인 IPv4로 구축된 시스템은 IPv6 데이터 그램을 처리할 수 없다.
- 이를 어떻게 해결해야 하는가? 듀얼 스택이라는 방법이 존재한다. 그냥 IPv4와 IPv6를 따로 받는 것이다.
- 그러나 실제로 널리 사용하는 방법은 터널링이다.
IPv6 사이에 있는 IPv4 라우터들을 터널이라고 한다.
이제 IPv6 데이터 그램이 저곳을 지나면 문제가 생기는 것이다.
그럴 경우를 해결해주는 방법이 IPv4내부에 IPv6를 인캡슐레이션 하는 방법이다.
IPv6 라우터는 IPv4 데이터그램의 데이터 필드에 IPV6 데이터 그램을 넣는다.
이 IPv4 데이터그램에 목적지 주소를 터널의 수신 측에 IPv6 라우터에 적어서 터널의 첫 번째 라우터에게 보낸다.
터널 내부에 있는 IPv4라우터는 IPv4 데이터그램이 IPv6 데이터 그램을 가지고 있다는 사실을 모른 채 다른 데이터그램을 처리하는 방식으로 이 IPv4를 처리한다.
터널 수신 측에 있는 IPv6 라우터는 IPv4 데이터그램을 받고 이 IPv4데이터그램이 실제 IPv6 데이터그램이라는 것을 결정한다.
이를 디캡슐레이션 하는 것이다. 이런 과정을 통해서 IPv6를 IPv4 기반 라우터에서를 지날 수 있다.
라우팅 프로토콜
네트워크 레이어의 역할인 routing 프로토콜이다.
intra-AS routing
내부에서 라우팅 하는 프로토콜이다. 예를 들어 우리 회사 내부 사설 Ip에서 라우팅을 하는 것이다.
inter-AS routing
외부 네트워크도 라우팅 하는 프로토콜이다. 예를 들어 우리 학교에서 다른 학교까지 라우팅을 하는 것이다.
“link state” algorithms
우리가 직접 취득한 정보를 기반으로 라우팅을 하는 알고리즘이다. 예시로 다익스트라 알고리즘이 있다.
“distance vector” algorithms
상대에게서 정보를 받아 만들어진 라우팅을 하는 알고리즘이다. 불완전하다.
2023. 02.03 16:15 정리
참고자료
컴퓨터 네트워킹 하향식 접근 제 7판
댓글