IP

hyomkim·2021년 3월 8일
0

네트워크

목록 보기
3/4

IP(Internet Protocol)

흔히 IP주소(IP Address)로 많이 접해봤을 용어입니다.

IP는 패킷이 어떤식으로 작성되어야 하고 주소를 어떤식으로 탐색할지를 정해 놓은 약속입니다.

논리 주소 라고도 합니다.

논리 주소
생성된 가상의 주소 입니다.

사용자가 물리 주소(MAC Address)로 접근할때 사용합니다.

집이 어디있는지 표시하는 방식은 두 가지가 있습니다.

  • 주소 (논리 주소)
  • 경도와 위도 (물리 주소)

논리 주소 vs 물리 주소

  • 물리 주소 : 물리적으로 정해저있는 주소로 PC가 공장에서 생성 될 때 정해집니다.
    이는 절대로 바꿀 수 없습니다.
  • 논리 주소 : 가상으로 적용되는 주소로 임의로 변경이 가능합니다.

OSI model의 layer 3(network layer)에서 사용됩니다.

특히 데이터를 전달하는 방식에 관련된 약속을 담당합니다.

IP주소(IP Address)처럼 뒤에 주소(address)를 붙인 표현을 더 많이 사용합니다.

IP주소는 크게 IPv4와 IPv6로 나눠집니다.

IPv4

초창기에 IP가 나왔을때의 IP표기 방식입니다.

8비트 4개의 조합(총 32비트)로 이루어진 표기 방식을 사용했습니다.

'.'(도트)를 구분자로 사용하며 각 구분은 10진수로 표기합니다.

255.255.255.255

'.'으로 구분된 각 숫자를 옥텟 이라고 합니다.

255.255.255.255는 총 4개의 옥텟으로 구성되어 있습니다.

  • mac 터미널에서 ip 확인하기
    명령어 : ifconfig
    입력했을 때 inet이라는 단어 뒤에 나오는 숫자들이 지금 사용하고있는 IP주소입니다.
    (ex : inet 127.0.0.1)

IPv6

IPv6는 IPv4의 IP표기 갯수가 부족해 지면서 이를 해결하기 위해 만들어진 표기 방법 입니다.

IPv6는 16비트 8개의 조합(총 128비트)로 이루어진 표기방식을 사용합니다.

':'(콜론)을 구분자로 사용하며 각 구분은 16진수로 표기합니다.

ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff

기존의 IPv4의 표기량은 최대 약 43억개 정도였습니다. 이 표기량도 적은 양은 아니지만, 전 세계의 네트워크와 컴퓨터의 수가 증가하면서 이 표기량 마져도 부족해지게 되었습니다.

반면 IPv6의 표기량은 최대 43억^4승 개를 사용할 수 있습니다. IPv4와 비교하여 압도적으로 많은 양의 IP를 표시할 수 있어서 IP표시량 부족 문제를 해결할 수 있습니다.

또한 IPv4에서 확보하지못한 여러 장점을 가지고 있다고 합니다.
(이는 이후에 추가로 알아보겠습니다.)

IPv4의 NetworkID와 HostID

우리가 보고는 IPv4 IP주소는 NetworkIDHostID가 합쳐진 모습이라 할 수 있습니다.

NetworkID를 통해 목적지가 있는 LAN으로 접근한 후 HostID를 통해 LAN안에서 목적지를 찾아갑니다.

NetworkID가 일반적인 주소라면
HostID는 아파트의 동이나 호 같은 상세 주소라고 할 수 있습니다.

택배가 도착한다면 주소로 아파트로 찾아가고, 상세 주소를 통해 물품을 정확한 목적지로 배달합니다.

IP NetworkID와 HostID는 과거 IP의 사용 목적에 따라 클래스 라는 개념으로 나누어 졌습니다.

IPv4와 클래스

클래스는 IP주소를 사용 목적에 따라 구분해 놓은 것입니다.

초창기 인터넷은 네트워크를 일반인에게 공개할 생각이 없었기 때문에 특정 용도나 규모에 따라 클래스를 구분지어 놓는 역사가 있었다고 합니다.

현재는 인터넷이 거희 모두에게 공개되어 큰 의미가 없어졌습니다.

IPv4클래스는 A, B, C, D, E 총 5개로 이루어져 있습니다.

  • A 클래스
    첫 옥텟은 NetworkID로 사용되고 나머지 3개의 옥텟은 HostID로 사용됩니다.

    첫 옥텟의 범위는 0 ~ 127 입니다.

    클래스의 범위는 0.0.0.0 ~ 127.255.255.255 입니다.

    사설 IP의 범위는
    10.0.0.0 ~ 10.255.255.225 입니다.

    local host라고 부르는 127.0.0.1은 엄밀히 말하면 A클래스에 속하지만, 보통은 자기 자신을 뜻합니다.

    이를 local loopback이라고 부릅니다.

loop back?
출력된 신호가 다시 본인에게 되돌아 오는것을 말합니다.

  • B 클래스
    첫 2개의 옥텟이 NetworkID로 사용되고 나머지 2개의 옥텟이 HostID로 사용됩니다.

    첫 옥텟의 범위는 128 ~ 191 입니다.

    클래스의 범위는 128.0.0.0 ~ 191.255.255.225 입니다.

    사설 IP의 범위는
    172.16.0.0 ~ 172.31.255.255 입니다.

  • C 클래스
    첫 3개의 옥텟이 NetworkID로 사용되고 나머지 1개의 옥텟이 HostID로 사용됩니다.

    첫 옥텟의 범위는 192 ~ 223 입니다.

    클래스의 범위는 192.0.0.0 ~ 223.255.255.255

    사설 IP의 범위는
    192.168.0.0 ~ 192.168.255.255 입니다.

  • D 클래스
    멀티 캐스트(Multicast)에 사용되기 위해 예약되어 있는 클래스 입니다.

    첫 옥텟의 범위는 224 ~ 239 입니다.

    클래스의 범위는 224.0.0.0 ~ 239.255.255.255 입니다.

  • E 클래스
    미래에 사용하기위해 남겨둔 클래스 입니다.

    첫 옥텟의 범위는 240 ~ 255 입니다.

    클래스의 범위는 240.0.0.0 ~ 255.255.255.255 입니다.

D클래스와 E클래스 모두 실제로 사용되는 경우는 거희 없습니다.


(클래스 구조를 그림으로 표현하면 이런 느낌!)

Public IP, Private IP

  • Public IP
    Public IP(공인 IP)ISP(Internet Service Provider, 인터넷 서비스 제공자)가 할당해준 IP입니다.

    공용 IP라고도 불리며 외부에 공개되어 있는 IP입니다.

    절대로 중복되지 않는 IP입니다.
    애초에 IP주소는 중복되서는 안되지만, 인터넷이 인식하는 범위 내에서 중복되지 않습니다.

    인터넷이 인식되는 범위 내에서 중복되지 않는다니... 무슨 헛소리를 하는 것일까요?
    사설 IP부분을 보면 이해가 되실거에요!

  • Private IP
    Private IP(사설 IP)는공유기나 라우터가 새롭게 할당해준 IP입니다.

    ISP로부터 공인 IP를 공유기나 라우터가 받아서 사설 IP를 생산 하여 네트워크에 속한 PC들에게 나누어 줍니다.

    5개의 팀이 각각 1, 2, 3 ,4 ,5 라는 번호(공인 IP)를 받았다고 했을 때,
    각 팀의 코치(공유기 혹은 라우터)가 팀에 속해있는 팀원들에게 다시한번 별도의 번호(사설 IP)를 부여하는 모습을 상상해 봅시다.

    공인 IP와 달리 다른 서로 다른 사설 IP에서는 서로 중복 될 수 있습니다.

    팀이 부여받은 번호는 절대 중복되지 않겠지만,
    각 팀 안의 팀원들이 부여받은 번호는 다른팀의 팀원과 중복될 수 있겠죠.

    클래스마다 사설 IP의 범위가 정해저 있습니다.

    기억이 안난다면 위의 클래스 내용을 다시 확인하기!

Reference :
https://stitchcoding.tistory.com/4

https://xn--3e0bx5euxnjje69i70af08bea817g.xn--3e0b707e/jsp/resources/ipv6Info.jsp

https://jwprogramming.tistory.com/28

http://korean-daeddo.blogspot.com/2015/12/ip.html

https://ko.gadget-info.com/difference-between-logical

https://velog.io/@hidaehyunlee/%EA%B3%B5%EC%9D%B8Public-%EC%82%AC%EC%84%A4Private-IP%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90

profile
C++을 좋아하는 조금 모자란 사람이랍니다!

0개의 댓글