본문 바로가기

전자 공학/기타

[네트워크 기초] 5. 네트워크 계층, IP(IPv4), 서브넷 마스크

반응형

안녕하세요. 취업한 공대누나입니다.

오늘은 네트워크 계층에 대해 보도록 하겠습니다.


1. 네트워크 계층

지난 시간까지 우리는 물리계층과 데이터링크 계층에 대해서 공부를 했습니다.

데이터링크 계층은 네트워크 안에 존재하는 단말들의 연결까지 담당을 하는 계층이었습니다.

네트워크 계층은 이더넷이나 무선 LAN에서 만들어진 네트워크를 연결해 다른 네트워크에 있는 단말과의 연결성을 확보하는 계층입니다. 같은 네트워크 안에서는 MAC 주소만으로도 통신이 가능하지만 네트워크 간에 통신을 하기 위해서는 IP 주소가 필요합니다.

 

경로를 선택하고 목적지 IP 주소까지 어떻게 데이터를 전달할지 결정하는 것을 우리는 라우팅이라고 하는데요. 네트워크 계층에서는 바로 이 라우팅 기능이 중요합니다.

즉, 경로를 선택하고 주소를 정하고 경로에 따라 패킷을 전달해주는 것이 바로 이 계층의 역할입니다.

 

네트워크 계층에서 사용되는 프로토콜은 대부분 IP(Internet Protocol)입니다.

IP에는 IPv4와 IPv6라는 두 가지 버전이 존재합니다.

오늘은 IPv4에 대해서 알아보고 다음 포스팅에서 IPv6에 대해 알아보도록 하겠습니다.


2. IPv4 주소와 서브넷 마스크

데이터를 다른 네트워크로 전달하기 위해서는 IP 주소가 필요합니다.

 

1) IPv4 주소 표기

IP 주소는 각각의 통신기기에 할당된 식별번호를 나타냅니다. 

이미지 출처 : https://www.crocus.co.kr/1515

 

IPv4주소는 32비트로 구성되어 있으며, 8비트씩 점으로 구분해서 10진수로 표기합니다.

그래서 총 12개의 숫자로 이루어져 있는데요.

점으로 구분하여 4개의 그룹(옥텟)으로 구성되어 있습니다. 

각 그룹은 0~255의 범위를 갖습니다.

총 32비트의 정보를 가지므로 약 43억개의 고유한 주소를 부여할 수 있습니다.

 

2) 서브넷 마스크

IPv4 주소는 그 자체로 사용하지는 않습니다.

서브넷 마스크라는 또 다른 32비트 값과 세트로 사용합니다.

간단하게 서브넷 마스크는 아이피 주소에서 네트워크 주소와 호스트 주소를 나눠주는 역할을 합니다.

 

IPv4 주소는 네트워크 부분과 호스트 부분로 구성되어 있습니다.

네트워크 부분은 '어떤 네트워크에 있는가'를 나타내고 호스트 부분은 '어떤 단말인가'를 나타냅니다.

서브넷 마스크는 이 두개를 구분하는 표시입니다.

'1'의 비트가 네트워크 부분, '0'의 비트가 호스트 부분을 나타내는데요.

아래 표를 참고하시면 이해가 조금 더 쉬우실 것 같습니다.

 

그래서 IP 주소와 서브넷 마스크를 조합해 봄으로써 어떤 IP네트워크에 있는 어떤 단말인가를 알 수 있습니다. IP 주소가 같더라도 서브넷 마스크가 다르면 IP 주소가 의미하는 것이 완전히 달라지게 됩니다.

이미지 출처: https://m.blog.naver.com/PostView.naverisHttpsRedirect=true&blogId=hatesunny&logNo=220790654612

 


3. IPv4 패킷 포맷

Internet Protocol Version 4를 의미합니다.

IP에 의해 캡슐화되는 패킷을 IP 패킷이라고 부르는데요.

IP 패킷은 헤더와 데이터 자체인 페이로드로 구성되어 있습니다.

IP 헤더에는 IP 네트워크에 연결하는 단말을 식별하거나 데이터를 작게 자르는 등의 작업을 위한 정보가 압축되어 있습니다.

그렇다면 IPv4의 패킷은 어떻게 생겼는지 각각은 무엇을 의미하는지 간단하게 알아보도록 하겠습니다.

 

 

버전(VER)

IP 프로토콜의 버전을 정의합니다. IPv4에서는 4(0100)가 들어갑니다.

 

헤더길이(HLEN)

헤더의 길이를 나타내는 4비트 필드입니다. 

Internet Header Length의 약자로 IHL이라고도 부릅니다.

헤더의 전체 바이트 수는 헤더 길이에 4를 곱하여 구합니다.

 

ToS(Type of Service)

Type of Service는 패킷의 우선도를 나타내는 1바이트 필드입니다.

서비스 품질에 따라 패킷의 등급을 구분하며 높은 값을 우선처리합니다.

 

패킷 길이(Total Length)

헤더와 페이로드를 합친 패킷 전체의 길이를 나타내는 필드입니다.

 

식별자(Identification)

모든 IP 패킷은 생성될 당시 식별 번호를 부여받게 됩니다.

IP 패킷은 더 작은 조각난 패킷으로 분리되어 목적지에 전송되는 경우가 있습니다.

이것을 Fragment 패킷이라고 하는데, 각각의 Fragment 패킷은 고유 번호가 같기 때문에 같은 식별자를 가진다면 같은 패킷에서 조각난 것임을 알 수 있습니다.

 

플래그

3비트로 구성되어 있으며 첫번째 비트는 사용하지 않습니다.

두번째 비트는 DF(Don't Fragment) 비트라 불리며, IP 패킷을 프래그멘테이션해도 좋을지를 의미합니다.

0이면 허가하고 1이면 허가하지 않습니다.

세번째 비트는 추가 단편화 비트를 말합니다. 

 

프래그먼트 오프셋

프래그멘테이션한 뒤, 그 패킷이 오리지널 패킷의 앞쪽부터 어느 위치에 있는지를 나타냅니다.

 

TTL(Time to Live)

패킷의 수명을 나타내는 1바이트 필드입니다. IP패킷의 수명이란 경유하는 라우터의 수(홉 수)를 의미하는데요. 라우터를 경유할 때마다 1씩 감소하며 값이 0이 되면 패킷이 파기됩니다.

TTL이 0이되면 IP 패킷을 파기하고, ICMP로 송신지에 알립니다.

 

프로토콜 번호

페이로드가 어떤 프로토콜로 구성되어 있는지를 나타냅니다.

1 : ICMP   2: IGMP   6: TCP   17: UDP  

 

헤더 체크섬

IP는 비신뢰성 프로토콜로 오류제어를 지원하지 않습니다.

하지만 최소한 헤더에 대한 검사는 진행을 하는데요.

데이터가 아닌 헤더 부분에 대한 것만 검사하는 필드입니다.

 

송/수신지 주소

IPv4주소는 IPv4 네트워크에 연결되어 있는 단말을 나타내는 4바이트의 식별 ID입니다.

 

옵션

옵션은 IPv4 패킷 송신에 대한 확장 기능을 저장한 가변 길이 필드입니다. 

 

패딩

헤더의 비트 수를 정렬하기 위해 사용되는 필드입니다.

4바이트의 정수 배가 되지 않으면 마지막에  '0'을 추가해 4바이트의 정수가 되도록 합니다.


다음 시간에는 IPv6에 대해 알아보도록 하겠습니다.

반응형