IP 인터넷 프로토콜의 역할
- 지정한 IP 주소(IP Address)에 데이터 전달
- 네트워크의 노드들은 고유한 IP를 부여받는다
- 패킷(Packet)이라는 통신 단위로 데이터 전달
IPv4란?
TCP/IP에서 활용하는 네트워크 주소체계이다. 네트워크 주소를 총 32 비트로 표현하기 때문에 약 43억 개의 주소를 나타낼 수 있다. IPv4 주소는 이미 모두 소진되었다. 이를 대체할 IPv6가 있다.
IPv4 패킷(데이터그램) 구조
20~60 바이트의 크기를 가진 헤더(Header)와 그 뒤에 데이터(Data, Payload)가 담긴다. 헤더에는 라우팅과 데이터그램 전달을 위한 정보가 담기고 데이터에는 전달하고자 하는 정보가 담긴다.
IPv4 헤더 구조
- VER : 인터넷 프로토콜 버전을 의미한다.
- HLEN : 헤더의 길이이다. 헤더는 20~60 바이트의 크기를 가지기 4 비트를 가지고 60 바이트까지 표현하기 위해서 4를 곱한다. IPv6는 항상 320 바이트로 크기가 고정되어 있기 때문에 이 필드가 필요 없다.
- Service type : IP 데이터그램의 서비스 형태를 알린다. 이 필드를 통해 해당 패킷이 얼마나 중요하고 긴급한 것인지 알 수 있기에 QoS(Quality of Service)를 구현할 수 있다. IPv6에서는 Traffic Class로 이름이 바뀌었다.
- Total length : 헤더의 크기까지 포함한 IP 데이터그램의 크기를 의미한다.
- Identification : IP 데이터그램을 구분하기 위해서 사용한다. 예를 들어 IP 데이터그램이 단편화되었을 때 단편화된 데이터그램이 원래 어떤 데이터그램에 속해 있는 지를 알 수 있다. IPv6에서는 라우터가 패킷을 단편화하지 않기 때문에 이 필드는 삭제되었다.
- Flags : IP 데이터그램이 단편화되었는지 나타내는 필드이다. 마찬가지로 IPv6에서는 삭제되었다.
- Time to live : 패킷이 라우터를 최대 몇 번 거쳐서까지 살아 남을 것인지를 나타내는 필드이다. 패킷이 라우터를 거칠 때마다 이 필드의 값이 1씩 감소되어 0이 되면 버려진다. 흔히 TTL로 줄여 부른다.
- Protocol : IP 데이터그램의 데이터에 담겨져 있는 상위 계층의 프로토콜을 알려준다. IPv6에서는 Next Header로 이름이 변경되었다.
- ICMP가 1번, IGMP가 2번, TCP가 6번, UDP가 17번으로 정의되어 있다.
- Header checksum : Header 필드의 오류를 검출할 수 있는 정보가 담긴 필드이다. 과거에는 이웃 노드 간 통신 중에 패킷이 깨지는 경우가 빈번하였기 때문에 라우터에서 한번 더 오류 검출하기 위해서 정의한 필드이다. 현재는 기술의 발전으로 유선에서 패킷 유실이 거의 발생하지 않는다. 그래서 IPv6에서는 지워진 필드이다.
- Source IP address : 패킷을 보낸 노드의 IP 주소가 담긴다.
- Destination IP address : 패킷이 도착해야하는 목적지의 IP 주소가 담긴다.
IP 프로토콜의 한계
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
- 중간에 패킷이 사라져도 알 수 없음 (패킷 소실)
- 패킷 전송 순서를 보장할 수 없음
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 구분할 수 없음
reference
https://engineeringcode.tistory.com/49
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
'CS' 카테고리의 다른 글
OSI 7계층 정리 (0) | 2022.10.08 |
---|---|
CORS 란 무엇일까 그리고 해결하는 방법 (0) | 2022.07.29 |
HTTPS에서 대칭키를 사용하는 방법 (0) | 2022.03.27 |