Computer Science

[모두의 네트워크] 네트워크 계층: 목적지에 데이터 전달하기

gomduribo 2023. 4. 2. 12:25

길벗에서 나온 모두의 네트워크 책을 공부하고 개인적으로 정리하는 내용입니다. 네트워크 수업을 아직 듣지 않았고, 책에 있는 내용을 단순 정리하는것이라 틀린내용이 다수 있습니다. 

 

 

네트워크 간의 연결구조

다른 네트워크에 있는 목적지로 데이터를 전달하려면 OSI모델의 네트워크 계층의 기술이 필요로 합니다. 

 

OSI 모델과 TCP/IP모델

 

이전 게시물에서는 데이터 링크계층에서 어떻게 LAN에서 데이터를 주고받는지 공부했습니다. 데이터 링크 계층에서는 이더넷 규칙을 기반으로 데이터의 전송을 담당했는데요, 이더넷으로는 같은 네트워크에 있는 컴퓨터로는 데이터를 전송할 수 있지만, 다른 네트워크나 인터넷으로는 전송할 수 없습니다. 

 

다수의 네트워크끼리 연결된 환경(출처: 모두의 네트워크)

 

이렇게 네트워크간의 통신을 가능하게 하는것이 네트워크 계층의 역할이고, 다른 네트워크로 데이터를 전송하려면 라우터(router)라는 네트워크 장비가 필요합니다. 예를 들어, 가정에서 라우터를 설치한다면 인터넷에 연결할 수도 있고, 해외로도 데이터를 보낼 수 있습니다. 이처럼 라우터는 데이터의 목적지가 정해지면 해당 목적지까지 어떤 경로로 가는것이 좋은지 알려줍니다. 

다만 이전 LAN에서는 MAC주소만으로 컴퓨터간에 통신을 할 수 있었지만, 다른 네트워크로는 데이터를 보낼 수 없습니다. 따라서 MAC주소가 아닌 IP주소를 이용해서 다른 네트워크와 통신을 합니다. IP주소는 어떤 네트워크의 어떤 컴퓨터인지 구분할 수 있도록 하는 주소입니다.

이 IP주소로 목적지를 설정했다면, 데이터를 어떤 경로로 보낼지도 결정해야합니다. 이렇게 목적지 IP주소까지 어떤 경로로 데이터를 보낼지 결정하는 것을 라우팅(routing)이라고 합니다. 이 라우팅은 라우터라는 장비가 진행합니다.  

 

 

출처: https://m.blog.naver.com/devks0228/221818136261

 

위의 그림처럼 라우터는 거리에 관계없이 다른 네트워크로 데이터를 보낼 수 있습니다.

 

IP(Internet Protocol)

네트워크 계층에는 IP(Internet Protocol)라는 프로토콜이 있습니다. 네트워크 계층에서 데이터를 캡슐화할때는 데이터에 IP헤더를 붙여주는데요, IP헤더는 밑의 그림과 같이 구성되어 있습니다.   

 

IP헤더의 구성(출처: https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=printf7&logNo=10170430212)

 

위처럼 IP프로토콜을 이용하여 캡슐화 할때는 데이터에 IP헤더가 추가되고 이렇게 만들어진것을 IP패킷이라고 합니다. 

 

IP주소

위에서 설명했듯, 다른 네트워크로 데이터를 보내기 위해서는 IP주소가 필요합니다. IP주소는 인터넷 서비스 제공자(ISP, 통신사들.. SKT, KT, U+같은)에서 받을 수 있습니다. 

IP버전에는 IPv4와 IPv6 두가지 종류가 존재합니다. 처음에는 IPv4 즉 32비트로 되어있는 주소로 43억개의 주소를 만들수 있었지만, 인터넷이 보급되면서 그것으로는 부족해졌고, 128비트로 주소를 나타내는 IPv6이 등장하게 되었습니다. 

또한 IP주소에는 공인IP주소와, 사설IP주소가 존재합니다. 위에서 말했듯, IPv4주소는 사용할 수 있는 주소의 수가 고갈되고 있습니다. 따라서 인터넷에 직접연결되는 컴퓨터나 라우터에는 공인 IP주소를, 회사나 가정의 랜에 있는 컴퓨터는 사설 IP주소를 할당한다고 합니다. 

 

출처: 모두의 네트워크

 

다만 위의 그림처럼 LAN안에 컴퓨터가 여러대있다면 컴퓨터 한대당 공인 IP주소를 할당하기 어렵습니다. 따라서 ISP가 제공하는 공인 IP주소는 라우터에만 할당하고, LAN내의 컴퓨터에게는 네트워크 관리자가 자유롭게 사설IP주소를 할당해줍니다. 이렇게 공인 IP주소 한개로 LAN내의 컴퓨터에 모두 인터넷을 연결할 수있습니다. 

 

실제 IP주소는 32비트의 2진수로 표현되어있습니다. 하지만 사람이 읽기 편하게 하기 위해서 10진수로 표현합니다. 

 

IP주소의 구성(출처: https://velog.io/@satoshi25/IP-%EC%A3%BC%EC%86%8C)

 

또한 이러한 IP주소는 네트워크ID와 호스트ID로 나눠집니다. 즉 네트워크 ID는 어떤 네트워크 인지를 호스트 ID는 해당 네트워크의 어느 컴퓨터인지를 나타냅니다.

 

 

IP주소 클래스

IPv4의 IP주소는 32비트입니다. 네트워크 ID와 호스트 ID의 크기를 조정해서 네트워크 크기를 조정할 수도 있는데요, 네트워크 크기는 클래스라는 개념으로 구분하고 있습니다. 이런 클래스는 A~E로 나눠져 있다고 합니다. 각 IP 클래스의 용도는 다음과 같습니다. 

 

IP클래스의 용도 (출처: https://yohanpro.com/posts/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-IP%EC%A3%BC%EC%86%8C%EC%9D%98%20%EA%B5%AC%EC%A1%B0/)

 

또한 A,B,C 클래스의 네트워크 ID와 호스트ID의 범위는 다음과 같습니다. 

 

A,B,C클래스의 구성 (출처: https://yohanpro.com/posts/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-IP%EC%A3%BC%EC%86%8C%EC%9D%98%20%EA%B5%AC%EC%A1%B0/)

 

밑의 그림처럼 공인IP주소와 사설IP주소의 범위는 다릅니다. 

 

공인/사설 IP의 주소 범위(출처: https://yohanpro.com/posts/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-IP%EC%A3%BC%EC%86%8C%EC%9D%98%20%EA%B5%AC%EC%A1%B0/)

 

네트워크 주소와 브로드캐스트 주소

IP주소에는 네트워크 주소와 브로드캐스트 주소가 있습니다. 예를 들어 밑의 그림에서처럼 C클래스 IP주소에서 네트워크 주소는 호스트 ID가 10진수로 0이고, 브로드캐스트 주소는 10진수로 255입니다. 

 

출처:모두의 네트워크

 

네트워크 주소는 전체 네트워크에서 작은 네트워크를 식별하는데 사용됩니다. 호스트 ID가 10진수로 0이면 그 네트워크 전체를 대표하는 주소가 되는것입니다. 

 

출처:모두의 네트워크

 

브로드캐스트 주소는 네트워크에 있는 컴퓨터나 장비 모두에게 한번에 데이터를 전송하는데 사용되는 전용 IP주소 입니다. 즉, 전체 네트워크에 데이터를 전송하려면 호스트 ID에 255를 설정하면 됩니다. 밑의 그림과 같이 브로드캐스트 주소인 192.168.1.255로 데이터를 전송하면 네트워크 안에 있는 모든 컴퓨터가 데이터를 수신합니다. 

 

출처:모두의 네트워크

 

서브넷(subnet)

A클래스 네트워크는 호스트 ID가 24비트여서 IP주소를 1677만 7214개 사용할 수 있습니다. 이렇게 많은 수의 컴퓨터가 브로드캐스트 패킷을 전송한다면 모든 컴퓨터에 패킷이 전송되고 네트워크가 혼잡해질 것입니다. 따라서 A클래스의 대규모 네트워크를 작은 네트워크로 분할하여 브로드캐스트로 전송되는 패킷의 범위를 좁힐 수 있습니다.

 

A클래스 네트워크의 서브넷팅(출처: 모두의 네트워크)

 

위의 그림처럼 A클래스 네트워크가 서브넷팅 된다면, 기존 네트워크ID와 호스트ID로 구성되어 있던 것이 네트워크ID, 서브넷ID, 호스트ID로 나누어지게됩니다. 

 

출처:https://velog.io/@kimmainsain/%EB%AA%A8%EB%91%90%EC%9D%98-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%A0%95%EB%A6%AC-5

 

 

라우터(Router)

위에서 말했듯, 다른 네트워크와 통신하려면 라우터가 필요합니다. 

 

출처: 모두의 네트워크

 

네트워크를 분할한 다음에 컴퓨터 한대가 다른 네트워크로 접속하려면 라우터의 IP주소를 설정해야합니다. 즉, 네트워크의 출입구를 설정하는것으로 기본 게이트웨이(default gateway)를 설정해야합니다. 라우터의 IP주소를 설정하는 이유는 데이터를 보내는 한 컴퓨터는 다른 네트워크로 데이터를 보낼 때 어디로 전송해야하는지 알지 못하기 때문입니다. 따라서 네트워크의 출입구를 지정하고 일단 먼저 라우터로 데이터를 전송합니다. 

 

출처: 모두의 네트워크

 

위의 그림처럼 컴퓨터1은 192.168.1.0/24 네트워크에 속해있기 때문에 라우터의 IP주소인 192.168.1.1로 기본 게이트웨이를 설정했습니다. 

 

 

라우팅(Routing)

라우팅은 경로 정보를 기반으로 현재의 네트워크에서 다른 네트워크로 최적의 경로를 통해 데이터를 전송합니다. 그리고 이러한 경로정보가 등록되어 있는 테이블이 라우팅 테이블입니다.