AWS에서 VPC 네트워크를 설정을 하다가 이 내용과 관련이 많은 것 같아서 정리합니다.
인터넷은 LAN(근거리통신망)과 WAN(전역통신망)이 합쳐진 것입니다. LAN과 WAN을 연결하는 장치가 Router입니다. 네트워크 층에 이러한 네트워크와 라우터가 모두 포함됩니다.
어떤 사람이 프로그램으로 다른 사람에게 메세지를 보냅니다. 그러면 응용층 -> 전송층 -> 네트워크층으로 패킷이 갑니다. 네트워크층은 데이터그램으로 패킷을 캡슐화하고 아래층인 데이터링크층으로 보냅니다. 목적지인 다른 사람에게 도달하면 데이터그램 캡슐이 벗겨지면서 네트워크층->전송층->응용층으로 전달됩니다. 이처럼 네트워크층은 패킷화를 하고, 라우팅을 합니다. 패킷화는 데이터에 헤더를 붙이는 것으로 간단히 하고 넘어갑니다. 라우팅을 설명합니다.
네트워크층은 패킷이 출발지에서 목적지까지 가도록 경로를 조정해야합니다. 네트워크층은 가장 좋은 경로를 정하는 규칙이 필요합니다. 라우터에 패킷이 도달할 때 하는 행동을 routing 또는 forwarding이라고 합니다. 패킷 헤더에 있는 목적지 주소를 사용해서 라우팅 테이블에서 매핑된 값을 찾습니다.
32비트 인터넷 주소입니다. 라우터나 호스트를 인터넷에 연결시켜 주는 용도입니다. IP 주소는 두 부분으로 구성됩니다.
접두사(네트워크를 정의)+ 접미사(장치(node)의 인터넷 연결을 정의)
인터넷의 초창기에 접두사의 길이를 고정하는 class기반의 주소지정 방식을 사용했습니다. 주소 고갈 문제때문에 클래스가 없는 주소지정방식(Classless addressing)을 사용합니다. (장기적인 주소 고갈 문제 해결책으로는 IPv6가 사용되고 있습니다.) Classless addressing에선 접두사의 길이를 제한하지 않습니다. 접두사의 길이를 알기 위해 주소 뒤에 '/접두사 길이'를 붙여줍니다. classless interdomain routing이라고 해서 CIDR라 합니다.
예시) 10.0.0.0/16
CIDR로 주어진 주소에서 접두사 길이만큼만 마스크를 취하면 네트워크의 주소를 알 수 있습니다. 접두사 길이가 길수록 작은 네트워크임을 알 수 있습니다. 접미사부분의 비트 수는 네트워크의 크기를 알려줍니다.
큰 기관으로부터 주소를 할당 받은 기관은(ICANN -> ISP -> 더 작은 기관 -> 더 작은 기관 ->... ) 서브네팅을 해서 주소를 더 나눌 수 있습니다. 서브넷 마스크를 적절히 조정하면 됩니다.(주소 뒤에 슬래시를 조정합니다)
Subnet과 반대로 나눠진 주소들을 합쳐서 라우팅할 수도 있습니다. 이것을 address aggregation이라 합니다.
Dynamic Host Configuration Protocol입니다. 서버-클라이언트 방식의 응용층 프로그램입니다. DHCP 클라이언트/서버는 라우팅에 대해 아무것도 모르면서 인터넷에 연결하려는 컴퓨터에게 필요한 정보를 제공할 수 있습니다. ip주소,접두사 길이,라우터 주소, DNS의 ip주소를 제공해줄 수 있습니다.