본문 바로가기
프로그래밍/TCP IP

[TCP/IP] 인터넷 계층과 라우팅

by yonmoyonmo 2022. 1. 15.

이전 포스팅 : https://wonmocyberschool.tistory.com/99?category=965066 

 

[TCP/IP] 트랜스포트 계층

이전 포스팅 : https://wonmocyberschool.tistory.com/98?category=965066 [TCP/IP] 애플리케이션 계층 1편 링크 : https://wonmocyberschool.tistory.com/84?category=965066 [TCP/IP] 컴퓨터 네트워크 [ TCP/I..

wonmocyberschool.tistory.com

인터넷계층

인터넷 계층은 네트워크 인터페이스 계층과 협력하여 다른 컴퓨터에게 데이터를 전달하는 역할을 한다. 하드웨어에 의존해야 하는 부분은 네트워크 인터페이스 계층이 담당하고, 인터넷 계층은 IP 어드레스(IP address)라고 하는 식별자 정보를 실마리로 데이터를 전달할 수 있는 체계를 제공한다.

라우터와 라우팅

데이터를 목적지까지 전달하기 위해 라우터(router)라고 하는 네트워크 장비가 필요하다. 라우터는 네트워크와 네트워크를 연결하는 역할을 한다. 하나의 라우터는 데이터를 목적지까지 전달하기 위해 다음 네트워크의 경로를 찾고, 그 경로상에 있는 라우터에게 데이터 전달을 위임하게 된다. 최종 목적지를 찾기 위해 계속 위와 같이 반복되는데 이를 라우팅(routing)이라고 한다.

아래는 인터넷 계층과 관련된 내용을 정리했다.


IPv4

IPv4는 전체 32비트의 IP 어드레스가 사용된다. 32비트를 8비트씩 4개 단위로 끊어서 10진수로 표현한다. 

예) 192.168.100.1 == 11000000 10101000 01100100 00000001

32비트로 중복되지 않는 IP 어드레스를 표현하다보니 요즘 같은 인터넷 시대에는 IP 어드레스가 고갈될 수도 있다. 프라이빗(private) 어드레스와 퍼블릭(public) 어드레스를 나눠 구분 사용하여 IP 어드레스를 아낄 수도 있지만 근본적인 갯수 제한 문제를 해결할 수 있는 IPv6의 도입도 요즘은 가속화되고 있다고 한다.

IPv4 헤더

IPv4 패킷의 IP헤더에는 송신지와 수신지의 IP 어드레스 외에도 다영한 정보들이 포함되어 있다(트랜스포트 계층의 어느 프로토콜에 전달할지를 판단하는 값, 패킷의 생존 기간 등등등)

TTL(Time To Live) : 패킷의 생존기간.

패킷이 목적지를 찾지 못하고 네트워크를 무한히 빙빙 돌면 네트워크가 혼잡해져서 문제가 생길 것이다. 그래서 IPv4 헤더에는 TTL이라는 패킷 생존 기간을 설정할 수 있고 초과될 때 패킷은 소멸한다.

MTU(Maximum Transmission Unit)

한 번에 전송할 수 있는 최대 데이터 크기를 MTU라고 한다. 이 값은 통신 경로의 상태에 따라 달라진다. 라우터에는 MTU에 따라 패킷을 분할 전송하는 기능이 구현되어 있다. 하지만 분할 된 패킷의 일부가 유실되거나 하면 복원이 어려워진다. 그래서 애초에 라우터가 데이터를 송신하기 전에 통신 경로 전체의 MTU를 살핀 후 MTU보다 작은 크기의 패킷을 만들도록 설정하기도 한다. 분할된 패킷은 식별자가 있어서 도착지에서 식별된 패킷끼리 복원할 수 있다.

IPv6

전체 128비트로 이루어진 IP 어드레스를 사용한다. 미래에는 IPv6이 IPv4를 모두 대체할 수도 있지만 현재는 병행하여 사용하고 있다. 엄청나게 많은 수의 중복 없는 IP 어드레스를 할당할 수 있어서 IPv4의 IP 고갈 문제를 해결할 수 있다. 8개의 단위로 구분하여 16진수로 표현하고 단위를 클론(:)으로 구분한다.

예) 2408:210:8441:c700:22c9:d0ff:fe8a:8cbd

IPv4와 IPv6는 어드레스나 패킷이 서로 호환되지 않기때문에 여러 기법을 통해 두 가지를 같이 쓸 수 있도록 하기도 한다.

듀얼스택(dual stack) : 하나의 장비에 두 종류의 어드레스를 할당한 후 둘 다 사용 가능하도록 만든다.

터널링(tunneling) : IPv4 패킷 안에 IPv6패킷을 채워서 보내어 IPv4네트워크를 지나갈 수 있도록 만든다.

네트워크 부와 호스트 부, 어드레스 클래스

IPv4어드레스 안에서 네트워크가 서로 다름을 식별할 수 있는 부분과 호스트가 서로 다름을 식별할 수 있는 부분을 나누어 전자를 네트워크 부 후자를 호스트 부라고 부른다. 어디까지가 네트워크 부인지를 미리 길이를 고정하여 연결해 둔 것을 어드레스 클래스라고 부른다.

클래스 A 네트워크 부 8비트 - 호스트 부 24비트
클래스 B 네트워크 부 16비트 - 호스트 부 16비트
클래스 C 네트워크 부 24비트 - 호스트 부 8비트
클래스 D 네트워크 부 32비트(UDP 멀티 캐스트로 사용되는 특수한 어드레스)

서브넷 마스크

서브넷 마스크(subnet mask)를 사용하면 네트워크 부의 길이를 비트 단위로 유연하게 늘려 쓸 수 있게 된다. IP 어드레스에 추가로 더해지는 32비트의 정보로 표현된다.

서브넷 마스크의 표현 방법 :

10.1.1.1/24 --> 슬래쉬 뒤의 24 숫자의 의미는 네트워크 부분으로 24비트를 쓴다는 뜻이다.

앞부분부터 24비트를 1로 설정하여

11111111 11111111 11111111 00000000 -> 십진수로 255.255.255.0

xx.xx.xx.xx/24의 서브넷 마스크는 255.255.255.0으로 표현할 수 있다.

IP 어드레스는 네트워크 상에서 연결된 PC나 라우터 등의 장비를 식별하기 위해 사용하는데, 전체 32비트 중 네트워크 부를 제외한 호스트 부 부분만 자유롭게 할당하여 사용할 수 있다.

이러한 점을 이용해 서브넷 마스크로 네트워크를 세분화 하여 서브넷을 만들 수 있다.

서브넷의 예)

클래스 C의 네트워크 10.1.1.0/24 

00001010 00000001 00000001 00000000
네트워크 부 호스트 부

네트워크 부를 2비트 늘려 10.1.1.0/26의 서브넷 마스크를 쓰면

해당 네트워크 내에서 서브넷 4개를 만들 수 있다.

10.1.1.0/26 : 00001010 00000001 00000001 00000000

10.1.1.64/26 : 00001010 00000001 00000001 01000000

10.1.1.128/26 : 00001010 00000001 00000001 10000000

10.1.1.192/26 : 00001010 00000001 00000001 11000000

서브넷마다 62개의 호스트를 할당할 수 있다. 하지만 서브넷 마스크는 어드레스 클래스에서 미리 정해진 네트워크 부의 길이를 더 줄일 수는 없어서 이미 호스트 부가 짧게 만들어 진 클래스 C 경우 서브넷 마스크로 서브넷을 만들 경우 호스트로 할당할 수 있는 여유가 급격히 줄어들어 잘 사용되지 않는다.

프라이빗 IP 와 퍼블릭 IP

프라이빗 IP는 공유기 등으로 할당받아 익숙한 그 IP 어드레스이다. 퍼블릭 IP를 가진 DHCP서버 등에서 외부에서 접속이 불가능한 네트워크를 만들어 네트워크 내의 호스트들에게 IP를 할당해 줄 때 사용되는 IP이며 어드레스 클래스마다 범위가 정해져 있다. 외부에서 접근 할 수가 없기때문에 NAT(Network Address Translation)같은 어드레스 변환 기술을 사용해서 퍼블릭 IP로 변환해 줘야한다. 일반적으로 가정이나 공공장소에서 사용하는 무선 인터넷 공유기 들이 DHCP 서버, NAT기능을 라우터기능과 함께 가지고 있어서 사용자들은 아무 불편 없이 프라이빗 IP를 쓸 수 있다.

프라이빗 IP 어드레스로 사용 가능한 범위

클래스 A 10.0.0.0 ~ 10.255.255.255
클래스 B 172.16.0.0 ~ 172.31.255.255
클래스 C 192.168.0.0 ~ 192.168.255.255

퍼블릭 IP 어드레스는 인터넷 안에서 중복되면 안 되기 때문에 ICANN(Internet Corporation for Assigned Names and Numbers), KRNIC(Korea Network Information Center)등과 같은 단체가 관리하고 있다.

인터넷 레지스트리

퍼블릭 IP는 인터넷 레지스트리(ICANN 등과 같은 단체)를 통해 인터넷 서비스 제공자들에게 할당되고 기업이나 가정은 인터넷 서비스 제공자가 확보한 IP 어드레스들을 빌려서 쓴다.

라우팅

라우터가 자신과 연결된 다른 라우터를 찾아나가면서 최종 목적지까지 연결되는 경로를 찾는 과정을 라우팅이라고 한다. 전 세계 어딘가에 있는 단 하나의 IP 어드레스를 찾아가야 하는 험난한 여정이다.

라우팅 프로토콜(BGP, OSPF, RIP)

라우터의 역할은 네트워크 간의 패킷을 전달하는 것이다. 이 때 연결하고 있는 각 네트워크에서 사용하는 IP 어드레스가 각각 하나씩 필요하며, 결과적으로 연결한 네트워크 개수만큼의 IP 어드레스를 여러 개 가지게 된다.

라우팅 테이블은 목적지 호스트가 속한 네트워크 정보와 그 네트워크로 도달하기 위해 경유해야하는 라우터 정보를 담고있다.

라우팅 테이블을 만들 때 네트워크 관리자가 직접 설정하는 방식을 정적 라우팅이라고 하고, 라우팅 프로토콜을 사용하여 자동적으로 경로 정보를 수집한 후 라우팅 테이블을 설정하는 방식을 동적 라우팅이라고 한다. 네트워크 간의 접속 형태가 복잡하면 정적 라우팅으로 설정하는 것이 사실상 불가능하기 때문에 대부분 동적 라우팅을 사용한다.

동적 라우팅 알고리즘과 자율 시스템(Autonomous System)

거리 벡터형 : RIP(Routing Information Protocol)이 사용하는 방식, 목적지까지의 거리를 살피고 짧은 경로를 선택하는 방식.

링크 상태형 : OSPF(Open Shortest Path First) 프로토콜이 사용하는 방식, 네트워크 통신 상태 정보를 맵으로 관리하면서 상태가 가장 좋은 경로를 선택하는 방식이다.

인터넷 서비스 제공자가 사용하는 규모가 큰 네트워크에서는 몇 개의 네트워크를 하나로 묶어 자율 시스템(Autonomous System, AS)이라는 단위로 관리한다. 네트워크 경로 하나하나를 찾아 이동하는 대신, AS단위로 이동하여 더 빠른 속도로 통신할 수 있도록 한다.

AS 내에서 사용되는 OSFP

AS안에서는 OSFP를 사용한다. 다만 네트워크 규모가 커짐에 따라 맵 정보를 처리하는 부하가 커짐을 방지하기 위해 네트워크를 몇 개의 영역으로 분할한 후 각 영역별로 맵을 만드는 방식을 사용한다.

AS간에 사용되는 BGP(Border Gateway Protocol) : 경로 벡터형 알고리즘이다. 거리 뿐만 아니라 경로 도중에 경유하는 AS정보도 포함하여 경로정보를 만든다.

ICMP

ICMP(Internet Control Message Protocol) : 데이터 전송 중에 문제가 생길 경우 장애 상황을 보고하기 위해 사용된다.

0 에코 응답, 수신 측 장비가 존재한다고 확인
3 데이터가 도착하지 않았다.
4 회선 상태가 혼잡하다.
5 경로 상태가 최적이 아니다.
8 에코 요청, 수신 측 장비가 존재하는지 확인
9 라우터가 보내는 응답, 네트워크에 새로 연결된 장비에게 사용 가능한 라우터 정보를 알려주기 위해 사용한다.(Router Advertisement)
10 장비가 보내는 요청으로, 네트워크에 새로 연결되었을 때 라우터를 찾기 위해 사용한다.(Router Solicitation)
11 TTL이 지난 패킷을 삭제했음을 알림

NAT

NAT(Network Address Translation) : 프라이빗 IP 어드레스를 인터넷에 연결하려면 퍼블릭 IP 어드레스가 필요하다. 왜냐하면 프라이빗 IP는 일종의 가상 주소이며 사설 네트워크 내부에서만 존재하는 주소이기 때문이다. 그래서 NAT는 프라이빗 IP를 해당 네트워크 라우터에 할당된 퍼블릭 IP에 따라 퍼블릭 IP로 변환해서 프라이빗 IP로 인터넷 통신을 가능하게 해준다.

도메인 이름

DNS(Domain Name System)은 도메인 이름을 통해 통신할 수 있도록 해준다.

DHCP

TCP/IP가 제대로 동작하기 위해서는 네트워크에 속한 각 호스트의 IP 어드레스가 중복되지 않아야 한다. 네트워크의 호스트들에 대해 IP 어드레스를 할당하고 중복되지 않게 관리하는 작업을 사람이 직접 해야할 경우 상당히 귀찮은데, 이것을 자동으로 해 주는 것이 바로 DHCP(Dynamic Host Configuration Protocol)이다. 이 방식을 사용하면 호스트가 네트워크에 연결될 때 IP 어드레스와 서브넷 마스크 등의 정보가 자동으로 설정된다. 인터넷 서비스 제공자는 DHCP로 하위 네트워크들로 IP를 할당하고 가정 등에서는 제공받은 퍼블릭 IP에 연결된 공유기가 DHCP서버가 되어 프라이빗 IP를 호스트마다 할당해 준다.


'프로그래밍 > TCP IP' 카테고리의 다른 글

[TCP/IP] 네트워크 보안  (0) 2022.01.16
[TCP/IP] 네트워크 인터페이스 계층  (0) 2022.01.16
[TCP/IP] 트랜스포트 계층  (0) 2022.01.14
[TCP/IP] 애플리케이션 계층  (2) 2022.01.14
[TCP/IP] 컴퓨터 네트워크  (0) 2021.08.14

댓글