📌 IP(Internet Protocol)
- 인터넷에서 송신자와 수신자가 패킷 단위로 데이터를 주고받기 위한 프로토콜
- Routing기능이 핵심
- 컴퓨터에서 컴퓨터간 데이터 전송이 가장 주된 목적
- IP는 신뢰성을 중요하게 생각하지 않고 빠르게 전송할 수 있는 최적의 경로만을 찾아 패킷을 분해하고 조립하는 과정을 진행함
- OSI 7 계층 중 3 계층(네트워크)에서 사용
- Version : IP 버전 정보
- IHL : IP 헤더 길이 값
- Type of Service : 데이터 우선 순위
- Total Length : IP 패킷 전체 크기
- Identification : 단편화 되기 전 원본 데이터 식별자
- IP Flags : 단편화 정보 표시(x : 사용하지 않는 bit / D : 단편화된 경우 0 안되면 1 / M : 마지막 단편화 조각이면 0 아니면 1)
- Fragment offset : 단편화 데이터 순서
- TTL(Time To Live) : 패킷이 거쳐야 할 라우터의 개수. 라우터 하나 거칠 때 마다 1씩 감소. 0되면 폐기
- Protocol : 상위 프로토콜 정보
- Header Checksum : IP 헤더 오류 혹은 변조 여부를 확인하기 위한 값
- Source IP : 출발지 IP 주소
- Destination IP : 목적지 IP 주소
IP 주소(IP Address)
- 인터넷 상에 있는 컴퓨터의 고유한 주소(사람의 주민등록 번호)
- 호스트(컴퓨터)들을 구별하기 위해 지정
- 송신측과 수신측이 데이터를 전송할 때 라우팅을 하기위한 IP 주소를 지정
IPv4
- 가장 널리 사용되는 IP 주소. 8비트씩 4그룹으로 구성되어 있고 총 32비트의 값을 가지게 됨
- 각 그룹마다 0~255사이의 숫자로 구성될 수 있고 이에 따라 IPv4는 0.0.0.0 ~ 255.255.255.255 범위를 가질 수 있음
- 하나의 그룹을 옥텟(Octet)이라고 명칭
- 32비트의 IPv4 주소 체계는 네트워크들을 식별하기 위한 네트워크 부와 호스트를 식별하기 위한 호스트 부 로 구성
- 네트워크 부는 호스트가 속한 네트워크의 주소를 나타내며 다른 네트워크와 구분하는 역할을 함(IP 주소 할당 기관에서 할당)
- 호스트 부는 다른 호스트들과 구별되는 주소. 인터넷 전체에서 중복 없이 단 하나만 존재하도록 설정(네트워크 관리자가 할당)
- 약 42억개의 IP 주소 부여 가능
- 전 세계적으로 인터넷 보급률이 높아지며 주소가 부족해지기 시작함
IPv4 Class
- IPv4 주소체계에서 네트워크 부와 호스트 부를 구별하기 위한 방법
Class A
- 32비트중 앞 8비트(1 Octet)를 네트워크 부, 뒤 24비트(3 Octet)를 호스트 부로 구성
- 첫 번째 옥텟의 첫 번째 비트가 0으로 시작함(네트워크 부 첫 비트가 0으로 고정)
- 네트워크 부의 첫 비트를 제외한 나머지 7개의 비트로 0~127 숫자 구성.
- 0.0.0.0 ~ 127.255.255.255
- IP 주소 할당 기관이 Class A에 해당하는 IP 주소 할당 시 네트워크 관리자는 할당받은 IP 주소 하나당 약 1677만개의 호스트 구축 가능(대규모 네트워크 구축 시 적합)
Class B
![ip5](https://user-images.githubusercontent.com/57285121/116510991-bfece680-a900-11eb-81d1-8b0a6be9bf62.png)
- 32비트중 앞 16비트(2 Octet)를 네트워크 부, 뒤 16비트(2 Octet)를 호스트 부로 구성.
- 첫 번째 옥텟의 첫 두 비트가 10으로 시작함(네트워크 부 첫 두 비트 10 고정).
- 네트워크 부의 첫 두 비트(10)를 제외한 나머지 6개의 비트로 128~191 숫자 구성.
128.0.0.0 ~ 191.255.255.255
Class C
![ip6](https://user-images.githubusercontent.com/57285121/116511058-d5621080-a900-11eb-8cb3-05685a11cc40.png)
- 32비트 중 앞 32비트(3 Octet)를 네트워크 부, 뒤 3비트(1 Octet)를 호스트 부로 구성.
- 첫 번째 옥텟의 첫 세 비트가 110으로 시작함(네트워크 부 첫 세 비트 110고정).
- 네트워크 부의 첫 세 비트(110)를 제외한 나머지 5개의 비트로 192~223 숫자 구성.
- 192.0.0.0 ~ 223.255.255.255
- 소규모 네트워크 구축에 적합.
- 같은 네트워크 부에 속해있는 호스트들은 라우터를 거치지 않고 통신이 가능함
- 라우터가 IP 주소의 네트워크 부를 보고 라우팅하여 데이터를 전송하기 때문.
공인(Public) IP
- ISP(Internet Service Provider, 인터넷 서비스 공급자)가 제공하는 전 세계에서 유일무이한 IP.(한국에서 대표적인 ISP로 SKT, KT, LG U+)
- 외부에 공개된 IP
- 외부에 공개되어 있기 때문에 인터넷에 연결된 외부의 호스트들과 통신이 가능
자신의 공인 IP 확인하기 : https://www.findip.kr/
사설(Private) IP
- 가정이나 회사 내부 등에 할당된 네트워크의 IP 주소
- 내부 네트워크에서만 사용이 되고 외부에서는 사용 불가
- 사설 IP 주소로 사용 가능한 IP 주소는 정해져 있음
- 사설 IP의 대역
- 10.0.0.0 ~ 10.255.255.255(10/8 prefix)
- 172.16.0.0 ~ 172.31.255.255(182.16/12 prefix)
- 192.168.0.0 ~ 192.168.255.255(192.168/16 prefix)
특수한 목적을 가진 IP 주소
- 루프백 주소 : 자기 자신을 가리키기 위한 목적으로 사용되는 예약 IP 주소
- 보통 127.0.0.1을 사용
- ping 명령어로 루프백 주소로 패킷을 보내면 외부로 패킷이 전송되지 않고 시스템 자신에게 다시 돌아옴
- 네트워크 점검 및 테스트 시 사용
할당할 수 없는 IP 주소
네트워크 주소 : IP 주소의 호스트 부의 모든 비트가 0인 IP 주소.
- IP 주소가 속한 네트워크 부의 IP 주소를 알 수 있음.
- Ex) 172.110.13.8와 172.110.13.21은 172.110.13.xx의 네트워크 부에 속해있는 호스트 라는 것을 알 수 있다
브로드캐스트 주소 : IP 주소의 호스트 부의 모든 비트가 1인 IP 주소.
- 같은 네트워크 부 내의 호스트들에게 동시에 데이터를 보내고자 할 때 사용.
- Ex) IP 주소가 172.110.13.8인 호스트가 네트워크 내 모든 호스트에게 데이터를 전송하고자 할 때 172.110.13.255로 전송하면 네트워크 내 모든 호스트들이 데이터 수신.
Subnetting
- IP 주소를 클래스보다 더 작은 단위로 분할하는 것
- 클래스 단위로 IP 주소를 할당하게 되면 필요 이상으로 할당하게 되는 경우가 발생(소규모의 네트워크를 구성하려고 할 때 Class A의 IP 주소를 할당 받는 것은 낭비)
- 클래스 단위의 IP 주소를 서브넷팅함으로써 IP주소의 낭비를 막을 수 있음.
![ip8](https://user-images.githubusercontent.com/57285121/116513746-02182700-a905-11eb-95eb-99e5c97be34d.png)
예를 들어 Class A를 서브넷팅 하면 호스트 부의 비트를 사용하여 네트워크 부(서브넷 부)를 확장
- 네트워크 부 하나에 할당되는 호스트의 IP 주소를 낭비하지 않고 사용할 수 있음
- 서브넷 부가 다르면 라우터를 이용해서 통신해야 한다.
- IPv4의 주소 고갈 문제를 해결하기 위해 사용
Subnet Mask
- 서브넷팅을 하면 IP 주소의 네트워크 부, 호스트 부의 구분이 어려워 짐(서브넷팅을 한다고 해서 IP 주소가 바뀌는 것은 아니기에).
![ip10](https://user-images.githubusercontent.com/57285121/116516640-cd0dd380-a908-11eb-814c-9c4dad8e3d63.png)
- 네트워크 부와 호스트 부의 경계를 구분하기 위한 Class가 무의미해짐
- Class대신 Subnet Mask를 통해 네트워크 부와 호스트 부를 구분
- IP 주소의 32비트에 대응한 32비트로 구성이 되어있고 0 or 1로 구성
- IP 주소의 네트워크 부에 속하는 비트는 1, 호스트 부에 속하는 비트는 0으로 대응.
![ip11](https://user-images.githubusercontent.com/57285121/116517325-c0d64600-a909-11eb-85d3-c4644254647e.png)
표기법
![ip12](https://user-images.githubusercontent.com/57285121/116517519-0d218600-a90a-11eb-9b25-53ca264d2707.png)
기존 Class로 네트워크 부, 호스트 부 나누는 것보다 더 작은 단위로 나눌 수 있기 때문에 네트워크 부 하나 당 더 적은 호스트가 포함 될 수 있고 그에 따라 IP 주소 낭비 없이 효율적인 할당과 유연한 네트워크 구성이 목적
![ip14](https://user-images.githubusercontent.com/57285121/116520227-65a65280-a90d-11eb-8f8b-213d202a1f36.png)
Supernetting
- 서브넷팅의 반대 개념.
- 서브넷팅이 필요 이상의 IP 주소 할당으로 인한 낭비를 막기 위함이였다면 슈퍼넷팅은 필요한 IP 주소보다 적은 수의 IP 주소를 할당받았을 때 네트워크 부의 비트를 사용하여 호스트 부를 확장
NetMask
- 네트워크 주소 부분의 비트를 1로 치환한 것
- IP 주소와 넷 마스크를 AND연산 하면 네트워크 주소를 얻을 수 있다
IPv6
- IPv4는 서브넷팅, 유동적인 IP 주소 할당, NAT 등을 통해 주소 고갈 문제를 어느정도 해결
- IPv4의 근본적인 문제를 해결하기 위한 주소 체계
- 16비트씩 8그룹으로 나누어 총 128비트로 표현되며 각 그룹을 16진수로 표현
- 그룹간 구분은 : (콜론) 으로 표현
- 모든 호스트에 자동으로 공인 IP 주소를 할당할 수 있을 만큼 무한대에 가까운 IP 주소 체계
- 기존 IPv4로 구성된 인프라들이 대부분이라 아직까지는 IPv6으로의 전환이 어려운 상황