IP(Internet Protocol) 이해하기

Junseong·2021년 6월 15일
2
post-thumbnail

한국의 한 해커가 엄청난 실력으로 iq를 추적하고 있다...

대부분의 사람들이 IP 하면 위의 사진 처럼 IP 추적을 연상하곤 합니다.

물론 IPIP 주소 와 동일한 의미로서 자주 사용되어 지고 있긴 하지만 사실 IP 주소는 IP 통신을 할 때 사용되어지는 주소일뿐 IP에 포함되는 관계입니다.

이 말을 이해하기 위해 IP가 무엇인지 한번 알아봅시다.


IP 개념


IP는 인터넷 통신을 하기 위해 지켜야하는 규약!

만약 우리가 택배를 보내야 한다면 택배사가 정한 몇 가지 규약들을 따라야 합니다.
우리는 송장에 택배를 보내는 사람의 주소와 받는 사람의 주소를 적어 택배 상자에 붙여야 합니다.
또한 30Kg 이상의 물건은 일반적인 택배사에서는 취급하지 않기 때문에 만약 분할 할 수 있다면 분할하여 보내야 합니다.
이와 같은 규약들은 택배 회사가 고객들에게 택배 서비스를 원활히 제공하기 위한 목적으로 정해졌습니다.

인터넷에서도 같은 목적으로 정해놓은 몇 가지 규약들이 있습니다.
인터넷을 통해서 데이터를 주고 받으려면 데이터에 송/수신자의 고유 주소를 적어야 합니다.
또한 데이터의 크기가 클 경우 데이터를 분할하여 보내기로 했습니다.
이렇게 인터넷 통신을 원활히 할 수 있도록 정해놓은 규약이 바로 IP(Internet Protocol)입니다.
그리고 이때 사용되어지는 송수신자의 고유 주소가 바로 IP 주소 입니다.



IP 패킷


IP 패킷은 헤더와 페이로드로 이루어져 있다.

IP 통신으로 전달되어지는 데이터들은 위 이미지와 같은 형태로 전달되어 집니다.
송신자가 보내고 싶어하는 데이터를 IP 통신에 필요한 정보들로 감싼 모습인데요 이러한 형태를 바로 패킷이라고 합니다.
이때 IP 통신에 필요한 정보와 전송 데이터를 각각 IP 헤더(Header), 페이로드(Payload)라고 부릅니다.



IP 특징


IP는 비신뢰적이며 비연결지향인 프로토콜이다.

굉장히 신뢰적인 오늘날의 택배 서비스


비신뢰성(unreliability)

비신뢰성이란 송신자가 전송한 패킷의 손상여부를 송/수신자가 알 수 없으며 패킷 전달 순서가 보장되지 않는다는 성질을 의미합니다.

인터넷 망에는 수많은 중계 노드들이 존재하며 패킷은 많은 중계 노드들을 거쳐 수신자에게 도착합니다.
택배가 곤지암 Hub나 옥천 Hub를 거쳐 집에 도착하는 것과 같은 원리라고 생각하면 됩니다.
그런데 만약 어떤 데이터가 어느 중계 노드에 있을 때 마침 그 노드의 서버가 다운되면 그 패킷은 사라지게 되지만 송신자와 수신자는 이 사실을 알 수 없습니다.

패킷 전달 순서를 보장하지 않는다는 말은 다음 예를 보면 쉽게 이해할 수 있습니다.
IP 통신에서는 전달하려는 패킷의 크기가 클 경우 페이로드에 해당하는 전송 데이터를 분할하여 보냅니다.
만약 "Hello World" 문자열 데이터가 "Hello" 와 " World"로 분할되어져 전송되었다고 가정해 봅시다.
이때 수신자는 "Hello World" 문자열을 받을 수도 있지만 상황에 따라 " World Hello"라는 문자열을 받을 수도 있습니다.


비연결성(Connectionlessness)

비연결성이란 송신자와 수신자가 데이터 전송을 위해 서로 연결될 필요가 없다는 성질을 의미합니다.
그렇기 때문에 IP 통신에서의 송신자는 수신자의 기기가 꺼져 있던지 고장나서 사용이 불가능한 상태이던지 상관없이 데이터를 보낼 수 있습니다.
물론 이러한 경우에 수신자는 데이터를 받지 못합니다.


현재는 신뢰적이며 연결지향인 TCP/IP가 대세

IP는 왜 비신뢰적이며 비연결적으로 만든걸까요?
여러 이유가 있겠지만 가장 큰 이유는 바로 통신 속도 때문입니다.
신뢰적이고 연결지향적인 통신을 하려면 그와 관련된 많은 사전작업이 필요하고 이는 곧 통신 속도를 저하시킵니다.
안그래도 인터넷 속도가 느렸던 당시에는 어쩔 수 없이 위의 성질을 채택할 수 밖에 없었을겁니다.

그러나 점차 인터넷 속도는 빨라지고 전달되는 데이터에 대한 신뢰성이 중요해지다 보니 현재는 IP 패킷 위에 TCP 패킷을 덮은 형태인 TCP/IP 프로토콜을 자주 사용하고 있습니다.



IP Header 구조


IP 통신을 위해 필요한 정보들인 IP Header의 구조와 각각의 의미는 아래와 같습니다.

구분내용
VersionIP에 대한 버전 정보(IPv4 or IPv6)
IHL(IP Header Length)헤더의 길이, 헤더가 가변적이고 IP Option에 따라 길이가 달라짐
TOS(Type of Service)서비스 유형필드로 취소지연, 최대처리율 최대 신뢰성, 최소비용이 선택 가능
Total LengthPayload까지 포함한 패킷의 길이를 나타냄
Identification분열이 일어난 후, 다시 패킷을 조합할 때의 조합번호
IP Flag(D, M)패킷의 단편화 여부(Don't fragment : (0-있음, 1-없음)/ More : 마지막(0-없음, 1-있음))
Fragment Offset분열되기 전의 총 길이(138bit)
TTL(Time to Live)네트워크 상에서 패킷이 살아 있을 수 있는 시간(0~255) - Looping 방지(Win-128)
Protocol상위 프로토콜
Check SumHeader의 오류 체크

각각의 의미를 좀 더 상세히 알고싶으신 분들은 여기를 참고하시면 좋을 것 같습니다.


출처 - IP Header 구조

profile
#취준생 #Back-end

0개의 댓글

관련 채용 정보