spring_sunshine
Coding Blog
spring_sunshine
전체 방문자
오늘
어제
  • 분류 전체보기 (144)
    • 개발일지 (2)
    • Java (12)
      • 개념 (12)
      • 코테 (0)
    • Spring (5)
      • 개념 (5)
      • 프로젝트 (0)
    • CS (19)
      • 네트워크 (9)
      • 스터디 (6)
      • 정처기 (3)
    • SQLD (3)
    • React (27)
      • [책] 리액트를 다루는 기술 (13)
      • [강의] 만들면서 배우는 리액트 (2)
      • 개념 (11)
    • React Native (10)
      • [책] 리액트 네이티브 앱프로그래밍 (4)
      • [강의] 처음 배우는 리액트 네이티브 (4)
      • 프로젝트 (1)
    • Python (37)
      • [책] 이코테 (9)
      • [강의] 파이썬 알고리즘 문풀 (6)
      • [강의] 파이썬입문과 크롤링기초 (6)
      • 개념 (7)
      • 백준 (9)
    • Flutter (4)
      • Dart (4)
    • ML (14)
      • [책] 혼공머신 (6)
      • [강의] 딥러닝 CNN (4)
      • NumPy (4)
    • JavaScript (3)
    • 기타 (1)

블로그 메뉴

  • 홈
  • 글쓰기
  • 관리

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
spring_sunshine

Coding Blog

인터넷 프로토콜(IP)
CS/네트워크

인터넷 프로토콜(IP)

2023. 12. 10. 19:24

기본 개념

IPv4

  • IPv4는 32비트 체계이고, 각 마디를 8bit씩 4마디로 표기한다.
  • 한 마디가 8비트이므로, 2^8인 256개의 수를 나타낼 수 있어서 총 254^4개(약 40억개)의 주소를 만들 수 있다.
  • 그러나 이 숫자로는 IP주소가 부족하므로 IPv6가 나오게 되었다.
  • IP주소는 대역에 따라 A,B,C,D,E 클래스로 나뉜다.

 

IPv6

  • IPv4와 다르게 32비트가 아닌 128비트 체계이다. 즉, 2^128개의 주소를 할당할 수 있다.
  • 각 마디를 16bit씩 8마디로 표기하고, ':'로 구분한다.

 

서브넷

  • IP주소는 정확하게 말하면 호스트나 라우터의 주소가 아니라 그들의 인터페이스의 주소이다.
  • 서브넷은 라우터를 거치지 않고 물리적으로 연결된 인터페이스 네트워크로, 라우터와 호스트 사이의 영역이다.

  • 흔히 사용되는 IPv4는 클래스를 나누어 IP를 할당한다. 그러나 이 방식은 여전히 많은 호스트가 낭비되므로, 이 비효율성을 해결하기 위해 네트워크 장치들의 수에 따라 효율적으로 사용할 수 있는 서브넷이 등장하였다.
  • 서브넷(subnet)은 IP주소에서 네트워크 영역을 부분적으로 나눈 부분 네트워크를 말한다.

 

서브넷팅

  • 서브넷을 만들 때 사용되는 것이 바로 서브넷 마스크(subnet mask)이고, 서브넷 마스크는 IP 주소체계의 Network ID와 Host ID를 분리하는 역할을 한다.
  • 예를 들어 C클래스는 앞의 24비트는 Network ID, 뒤의 8비트는 Host ID를 나타낸다. 이때 서브넷 마스크를 이용하면 원본 네트워크를 여러개의 네트워크로 분리할 수 있다. 이 과정을 서브넷팅(subneting)이라고 한다.
  • IP주소에 서브넷 마스크를 AND 연산하면 Network ID가 된다.

  • 서브넷팅은 서브넷 마스크의 bit수를 증가시키는 것으로 생각하면 된다.
    • 서브넷 마스크의 bit수를 1씩 증가시키면, 할당 가능한 네트워크 수가 2배수로 증가하고 호스트 수는 2배수로 감소한다.
    • 192.168.32.0/24에서 192.168.32.0/25로 변경하게 되면, 할당 가능한 네트워크가 2개로 증가하고, 각 네트워크(서브넷)당 할당 가능한 호스트 수는 126개로 줄어든다.

 

CIDR

  • Classless Inter-Domain Routing으로, 클래스 없는 도메인간 라우팅 기법이라는 뜻이다.
  • 서브넷 마스크를 Host ID 방향으로 움직이면 서브네팅(증가)이고, Network ID 방향으로 움직이면 슈퍼네팅(감소)이다.
  • 203.230.7.0/24
    • 위의 IP주소에서 찾아낼 수 있는 것은? 할당 가능한 Host 갯수 : 256(2^8)개 - 2
    • Network ID : 203.230.7.0

 

https://code-lab1.tistory.com/33

https://code-lab1.tistory.com/34

https://inpa.tistory.com/entry/WEB-🌐-IP-기초-사설IP-공인IP-NAT-개념-정말-쉽게-정리#공인_ip_/_사설_ip_/_고정_ip_/_유동_ip

https://inpa.tistory.com/entry/WEB-🌐-CIDR-이-무얼-말하는거야-⇛-개념-정리-계산법#


IPv4 데이터그램 포맷

인터넷 네트워크 계층 패킷을 데이터그램이라고 부르고, IPv4 데이터그램의 주요 필드는 다음과 같다.

  • 버전 번호
    • 데이터그램의 IP 프로토콜 버전을 명시
    • 라우터는 버전 번호를 확인하여 데이터그램의 나머지를 어떻게 해석할지 결정함
    • 다른 버전의 IP는 다른 데이터그램 포맷을 사용함
  • 헤더 길이
    • IPv4 데이터그램은 헤더에 가변 길이의 옵션을 포함하므로, 이 4비트로 데이터그램에서 실제 페이로드가 시작하는 곳을 결정함
  • 서비스 타입
    • IPv4 헤더에 포함된 서비스 타입 비트는 각기 다른 유형의 IP 데이터그램을 구별함
    • 예를 들어 실시간 데이터그램과 비실시간 트래픽을 구분하는데 유용함
  • 데이터그램 길이
    • 바이트로 계산한 IP 데이터그램의 전체 길이
  • 식별자, 플래그, 단편화 오프셋
    • IP 단편화와 관련있는 필드들
    • 큰 IP 데이터그램이 여러 작은 IP 데이터그램으로 분할된 후 다음 목적지로 독립적으로 전달되고, 여기서 페이로드 데이터가 최종 호스트의 트랜스포트 계층으로 전달되기 전에 다시 모임
  • TTL (time to live)
    • 이 필드는 네트워크에서 데이터그램이 무한히 순환하지 않도록 함 (라우팅 루프)
    • 라우터가 데이터그램을 처리할 때마다 감소하고, 이 필드가 0이 되면 데이터그램을 폐기함
  • 프로토콜
    • 이 필드는 일반적으로 IP 데이터그램이 최종 목적지에 도착했을 때만 사용됨
    • 이 필드값은 IP 데이터그램에서 데이터 부분이 전달될 목적지 트랜스포트 계층의 특정 프로토콜(TCP,UDP)을 명시함
  • 헤더 체크섬
    • 라우터가 수신한 IP 데이터그램의 비트 오류를 탐지하는데 도움을 줌
    • 라우터는 오류 검출된 데이터그램을 폐기함
    • TTL 필드와 옵션 필드의 값은 변경되므로, 체크섬은 각 라우터에서 재계산되고 저장되어야 함
    • 트랜스포트와 네트워크 계층에서 오류 검사를 수행하는 이유:
      • IP 헤더만 IP 계층에서 체크섬을 수행하지만, TCP/UDP 체크섬은 전체 TCP/UDP 세그먼트를 계산
      • TCP/UDP와 IP는 동일 프로토콜 스택에 속할 필요가 없음
  • 출발지와 목적지 IP주소
    • 출발지가 데이터그램을 생성할 때, 자신의 IP주소를 출발지 IP주소 필드에 삽입하고, 목적지 IP주소를 목적지 IP주소 필드에 삽입
  • 옵션
    • IP 헤더필드를 확장함
    • 데이터그램 헤더가 가변 길이로 데이터 필드 시작점을 초기에 결정할 수 없어 문제를 복잡하게 만듦
  • 데이터 (페이로드)
    • 데이터그램이 존재하는 이유이자 가장 중요한 마지막 필드
    • 대부분의 경우 목적지에 전달하기 위해 트랜스포트 계층 세그먼트를 포함함

IPv4 주소체계

  • 호스트는 일반적으로 네트워크와 연결되는 하나의 링크를 갖고, 호스트 IP가 데이터그램을 보낼 때 이 링크를 통해 데이터 링크를 보낸다.
  • 호스트와 물리적 링크 사이의 경계를 인터페이스라고 부른다.
  • 라우터는 여러개의 링크와 연결되고, 링크와 라우터 사이도 인터페이스로 이루어져 있어 여러개의 인터페이스를 갖는다.
  • 모슨 호스트와 라우터는 IP 데이터그램을 송수신할 수 있으므로 IP는 각 호스트와 라우터 인터페이스가 IP주소를 갖도록 요구한다. 
  • 따라서 기술 면에서 IP주소는 인터페이스를 포함하는 호스트 라우터 보다는 인터페이스와 관련이 있다.
  • 각 IP주소는 32비트 길이다. (각 바이트를 십진수로 표현하고, 점으로 구분하는 십진 표기법을 사용)
    • 192.32.216.9 → 11000001 00100000 11011000 00001001
  • 전세계 인터넷의 모든 호스트와 라우터의 각 인터페이스는 고유한 IP주소를 갖는다.
  • 인터페이스의 IP주소는 마음대로 선택할 수 없고, IP주소의 일부는 연결된 서브넷이 결정한다.

  • 왼쪽의 3개 호스트와 라우터 인터페이스는 모두 223.1.1.xxx 형식의 IP주소를 갖는다. 
  • 3개 호스트의 인터페이스들과 하나의 라우터 인터페이스로 연결된 네트워크는 서브넷을 구성한다고 말한다.

  • 위 그림에서 3개의 라우터가 점대점으로 연결된 것을 볼 수 있다.
  • 여기서 호스트와 라우터 간의 연결 뿐만 아니라, 라우터 간의 연결에서도 서브넷을 볼 수 있다.
  • 라우터 R1과 R2를 연결하는 인터페이스용 223.1.9.0/24 서브넷, R2와 R3을 연결하는 인터페이스용 223.1.8.0/24 서브넷, R1과 R3을 연결하는 인터페이스용 223.1.7.0/24 서브넷이 추가되었다.

'CS > 네트워크' 카테고리의 다른 글

라우터의 내부  (1) 2023.12.10
네트워크 계층  (0) 2023.12.10
TCP  (1) 2023.11.28
파이프라이닝된 신뢰적인 데이터 전송 프로토콜  (0) 2023.11.16
신뢰적인 데이터 전송 원리  (0) 2023.11.11
    'CS/네트워크' 카테고리의 다른 글
    • 라우터의 내부
    • 네트워크 계층
    • TCP
    • 파이프라이닝된 신뢰적인 데이터 전송 프로토콜
    spring_sunshine
    spring_sunshine

    티스토리툴바