관리 메뉴

Rootable의 개발일기

IP 프로토콜 본문

Network

IP 프로토콜

dev-rootable 2023. 7. 6. 16:01

📌 개요

 

IP 프로토콜은 인터넷상에서 데이터를 주고받기 위한 통신 규약(약속)으로 이는 인터넷 상에서 출발지와 목적지 정보를 제공하는 IP 주소가 있어 가능하다.

 

IP주소는 ISP(Internet Service Provider)에 의해 부여되는 소프트웨어 기반의 논리적인 주소이다. 즉, 인터넷 상에서 어느 호스트인지를 구분하기 위한 주소를 말한다.

 

인터넷 상에서 장비를 식별하는 주소

 

Reference:

https://c0mp.tistory.com/927

 

IP주소란? IP주소의 개념과 이해

IP 주소란? IP란 인터넷 프로토콜( Internet Protocol)의 약자로 인터넷상에서 데이터를 주고 받기 위한 통신 규약(약속)입니다. 통신이란 데이터를 주고 받아야 하는데 출발지와 도착지가 있어야겠죠.

c0mp.tistory.com

 

📌 IP 주소 체계

 

IP 주소는 2가지 체계가 있다. 현재 사용하고 있는 IPv4와 IPv4 주소 고갈로 등장한 IPv6이다.

 

IPv40과 1로 구성된 2진수로 나타내는 32bit 주소다. 컴퓨터는 주소를 2진수로 처리하지만 이를 사람이 알아보기 쉽게 10진수로 변환하여 표기한다.

 

즉, 2^32개인 약 43억 개의 주소를 할당할 수 있다.

 

IPv6는 128bit 체계로 2^128개의 주소를 갖는다. 16bit 단위로 구분하고 각 단위는 :으로 구분, 주소는 16진수로 변환한다.

 

📌 IP 주소 구성

 

IP 주소는 네트워크를 구분하는 네트워크 부(Network ID) 그 네트워크 안에서 호스트를 구분하는 호스트 부(Host ID)로 구성된다.

 

네트워크 부는 인터넷에 접속되어 있는 모든 네트워크 중에서 유일해야 하고, 호스트 부는 그 호스트가 속한 네트워크 내에서 유일해야 한다.

 

호스트(Host) : 네트워크에 연결되어 있는 1개의 기기
예) PC, 라우터, 스위치, 서버 등

 

🔎 IP 주소의 클래스

 

IPv4 주소 체계에서 네트워크 부와 호스트 부를 나누는 기준이 필요하여 IPv4 도입 초기에는 클래스를 기준으로 네트워크 부와 호스트 부를 나누는 방식을 사용했다.

 

 A 클래스

 

32비트의 IP 주소 중 맨 앞의 숫자가 0으로 시작하는 클래스

 

앞에서부터 8bit (Network ID) + 나머지 24bit (Host ID)

 

10진수 범위 : 0.0.0.0 ~ 127.255.255.255

 

총 2^24 - 2개의 주소를 호스트에 할당 가능

 

 B 클래스

 

32비트의 IP 주소 중 맨 앞의 숫자가 10으로 시작하는 클래스

 

앞에서부터 16bit (Network ID) + 나머지 16bit (Host ID)

 

10진수 범위 : 128.0.0.0 ~ 191.255.255.255

 

총 2^16 - 2개의 주소를 호스트에 할당 가능

 

 C 클래스

 

32비트의 IP 주소 중 맨 앞의 숫자가 110으로 시작하는 클래스

 

앞에서부터 24bit (Network ID) + 나머지 8bit (Host ID)

 

10진수 범위 : 192.0.0.0 ~ 223.255.255.255

 

총 2^8 - 2개의 주소를 호스트에 할당 가능

 

출처 : 한국인터넷정보센터

 

IP 주소의 맨 앞 8비트를 보면 소속 클래스를 알 수 있다.

 

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

 

각 클래스마다 Host 부가 모두 0인 주소를 네트워크 주소, Host 부가 모두 1인 주소를 브로드캐스트 주소로 사용한다. 이처럼 두 주소는 특수 목적으로 사용되기 때문에 호스트와 라우터에 할당하지 않는다.

 

네트워크 주소는 전체 네트워크에서 작은 네트워크를 식별할 때 사용되므로, 그 네트워크를 대표하는 주소라 할 수 있다.

 

브로드캐스트 주소하나의 네트워크에 있는 모든 호스트에 동시에 데이터를 보낼 때 사용되는 전용 IP 주소다.

 

🔎 서브넷팅

 

클래스 기반의 주소 지정 방식은 네트워크 부와 호스트 부가 정해져 있어 할당되는 주소가 고정적이다. 즉, 상황에 맞게 IP 주소를 할당할 수 없어 IP 주소의 낭비가 발생할 수 있다. 이러한 관리의 효율성을 위해 하나의 큰 네트워크를 몇 개의 작은 논리적인 네트워크로 분할하여 사용하는 방식을 서브넷팅이라 한다. 이렇게 분할된 네트워크를
서브넷(Subnet)이라고 한다.

 

 서브넷 마스크

 

서브넷팅을 하게 되면 호스트 부의 일부를 네트워크 부에 포함시키게 된다. 예를 들어 8비트를 옮긴다면 8비트로 표현 가능한 수 0 ~ 255인 256개의 숫자만큼 서브넷을 나눌 수 있는 것이다. 하지만 이렇게 되면 네트워크 부와 호스트 부의 경계를 알 수 없게 된다. 따라서, 이를 구별하기 위한 식별자서브넷 마스크를 사용하는 것이다.

 

서브넷 마스크는 IP 주소와 마찬가지로 32비트의 2진수로 구성되었으며, 1은 네트워크 부와 매칭되고 0은 호스트 부와 매칭된다. 즉, Bit AND 연산을 했을 때,
해당 서브넷의 네트워크 주소를 꺼낼 수 있도록 한 것이다.

 

IP 주소 & 서브넷 마스크 = 서브넷의 네트워크 주소

 

 210.100.100.3을 3개의 서브넷으로 나누기

 

210.100.100.3은 C 클래스 주소로 네트워크 주소인 210.100.100.0 네트워크에 소속되어 있다.

=> 1101 0010 | 0110 0100 | 0110 0100 | 0000 0011

 

C 클래스 범위 : 192.0.0.0 ~ 223.255.255.255 (default 서브넷 마스크 : 255.255.255.0)

 

네트워크 주소(Host 부 All's 0) : 210.100.100.0

호스트 주소 범위 : 210.100.100.1 ~ 210.100.100.254 (총 254개)

브로드 캐스트 주소(Host 부 All's 1) : 210.100.100.255

 

1비트는 2진수이므로 2개의 숫자를 가진다. 즉 경우의 수가 2개라는 것이고, 이는 2개의 서브넷으로 나눌 수 있음을 의미한다.

 

3개의 서브넷을 나누기 위해서는 적어도 2개의 비트가 필요

 

서브넷 마스크는 네트워크 부와 1로, 호스트 부와 0으로 매칭되어 두 영역을 식별한다고 했으므로 10진수로 만들면 아래와 같다.

 

서브넷 마스크 : 255.255.255.192

 

위 주소를 2^2(4)개의 서브넷으로 나누면 다음과 같다.

 

210.100.100.3 : 1101 0010 | 0110 0100 | 0110 0100 00 | 00 0011

 

sub1 : 1101 0010 | 0110 0100 | 0110 0100 00 | 00 0000 ~ 1101 0010 | 0110 0100 | 0110 0100 00 | 11 1111

 

  • sub1의 네트워크 주소 : 210.100.100.0
  • sub1의 브로드캐스트 주소 : 210.100.100.63
  • sub1의 주소 범위 : 210.100.100.1 ~ 210.100.100.62

 

sub2 : 1101 0010 | 0110 0100 | 0110 0100 01 | 00 0000 ~ 1101 0010 | 0110 0100 | 0110 0100 01 | 11 1111

 

  • sub2의 네트워크 주소 : 210.100.100.64
  • sub2의 브로드캐스트 주소 : 210.100.100.127
  • sub2의 주소 범위 : 210.100.100.65 ~ 210.100.100.126

 

sub3 : 1101 0010 | 0110 0100 | 0110 0100 10 | 00 0000 ~ 1101 0010 | 0110 0100 | 0110 0100 10 | 11 1111

 

  • sub3의 네트워크 주소 : 210.100.100.128
  • sub3의 브로드캐스트 주소 : 210.100.100.191
  • sub3의 주소 범위 : 210.100.100.129 ~ 210.100.100.190

 

sub4 : 1101 0010 | 0110 0100 | 0110 0100 11 | 00 0000 ~ 1101 0010 | 0110 0100 | 0110 0100 11 | 11 1111

 

  • sub4의 네트워크 주소 : 210.100.100.192
  • sub4의 브로드캐스트 주소 : 210.100.100.255
  • sub4의 주소 범위 : 210.100.100.193 ~ 210.100.100.254

 

총 4개의 서브넷으로 나눌 수 있고, 각 서브넷은 2^6 - 2개의 주소를 할당할 수 있다.

 

📌 IP 패킷

 

네트워크 계층에서는 패킷이라는 단위로 데이터를 전송

 

 

🔎 IP 패킷 구조

 

출처 : https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=printf7&logNo=10170430212

 

DS : Service Type

존재시간 영역 : Time to live

 

 데이터그램 식별자(Identification)

 

보통 최대 전송 단위(MTU)보다 큰 데이터는 분할 전송한다. 이때, 재조합을 위한 필드로 사용된다. 그래서 동일 패킷으로부터 분할된 패킷들은 동일한 식별자를 가진다.

 

 플래그(Flags)

 

1번째 비트 : Not used bit

2번째 비트 : Don't Fragmentation (0 : 단편화 가능, 1 : 단편화 불가능)

3번째 비트 : More Fragmentation (0 : 마지막 패킷, 1 : 추가 패킷 있음)

 

 패킷 분할 오프셋(단편화 오프셋)

 

패킷 재조립 시 분할된 패킷 간의 순서에 대한 정보

 

 Time to live

 

패킷이 경유할 수 있는 최대 홉 수. 즉, 패킷이 경유할 수 있는 최대 라우터 또는 L3 스위치 개수를 의미한다.

 

 헤더 체크섬

 

오류 발생 검사용

 

📌 IP 프로토콜의 한계

 

1. 비연결성

  • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송함

 

2. 비신뢰성

  • 패킷의 올바른 순서를 보장하지 않음
  • 패킷의 손실을 방지하지 않음
  • 패킷의 손실 여부를 알 수 없음

 

3. 프로그램 구분 불가

  • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 경우 구분 불가

 

References:

https://better-together.tistory.com/118

 

쉽게 이해하는 네트워크 13. IP 주소 의미와 체계 및 서브넷 마스크

IPv4 IP주소의 의미와 서브넷 마스크의 이해 IP 주소 인터넷 계층의 IP 프로토콜은 IP 주소를 사용하여 호스트나 네트워크 장비를 식별합니다. 인터넷에 접속한 컴퓨터와 라우터에 고유한 IP 주소를

better-together.tistory.com

 

https://change-words.tistory.com/entry/MAC-%EC%A3%BC%EC%86%8C%EC%99%80-IP-%EC%A3%BC%EC%86%8C-%EC%B0%A8%EC%9D%B4

 

MAC 주소와 IP 주소 차이 (생성, 사용 방식)

컴퓨터와 컴퓨터의 통신은 아주 단순하게 설명하면, 로컬 컴퓨터가 보낸 데이터 패킷이 네트워크를 통해 특정 IP 주소를 찾아가고 IP 주소를 통해 MAC 주소를 찾아가는 과정입니다. MAC 주소와 IP

change-words.tistory.com

 

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술

www.inflearn.com

 

https://product.kyobobook.co.kr/detail/S000001808392

 

컴퓨터일반 이론편(2020) | 박태순 - 교보문고

컴퓨터일반 이론편(2020) | - 독자대상 : 전산직 계리직 공무원 시험 준비생 - 구성 및 특징 : ① 최근 경향 반영 ② 학습 내용 체계적으로 구성

product.kyobobook.co.kr

 

'Network' 카테고리의 다른 글

API vs HTTP API vs REST API  (0) 2023.07.10
HTTP 메서드  (0) 2023.07.10
HTTP  (0) 2023.07.07
TCP(Transmission Control Protocol)  (0) 2023.07.07
OSI 7 Layer  (0) 2023.07.06