iamkanguk.dev

[Network] 인터넷 프로토콜 (IP) 본문

CS지식/Network

[Network] 인터넷 프로토콜 (IP)

iamkanguk 2023. 11. 29. 20:12

오늘부터 인프런에 올라와있는 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 들어보려고 한다. 그 중에 첫번째 강의에서 IP에 대해서 설명해주셨는데 한번 간단하게 정리를 해보면 좋을 것 같아서 정리를 하게 되었다.

 

 

해당 포스팅은 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 토대로 작성되었습니다.
 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런 | 강의

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다., [사진] 📣 확인해주세요!본 강의는 자바 스프링 완전 정복 시리즈의 세 번째 강의입니다. 우아한형제들 최연소 기술

www.inflearn.com

 

 

IP (Internet Protocol)

인터넷 프로토콜은 송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는데 사용하는 정보의 약속(프로토콜)이고, OSI 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다.

 

 

예를 들어, 외국에 사는 친구에게 편지를 보낸다고 가정해보면, 편지 안에는 편지의 내용이 들어있고, 편지 봉투에는 보내는 사람의 이름, 받는 사람의 이름 그리고 수신자와 송신자의 주소 정보가 포함되어 있다. 이를 IP에 빗대어 표현해보면 보내는 사람의 주소는 출발지의 IP, 받는 사람의 주소는 도착지의 IP 그리고 편지안의 내용은 전송하고자 하는 데이터라고 할 수 있다.

 

IP의 역할

- 지정한 IP 주소에 데이터를 전달한다.

- 패킷(Packet) 이라는 통신 단위로 데이터를 전달한다.



IP Packet

전송하고자 하는 데이터의 형식을 Packet 이라는 하나의 단위로 구성해서 출발지의 IP에서 도착지의 IP까지 패킷을 통해서 전달하고자 하는 데이터를 전달한다. 우편물 박스라고 생각하면 편하다.

 

IP Packet의 구조

 

실제로는 이렇게 많은 정보들을 담은 상자이다. Source IP Address + Destination IP Address 부분이 수신자/송신자의 IP주소라고 할 수 있고, 그 외에 TTL, CheckSum, 전체 길이 등 다양한 정보가 있다. 섬세하게 까보고 싶지만 이건 조만간 Network 관련해서 책을 사서 읽을 계획인데 그때 한번 정리해보려고 한다.

 

IP의 한계

(1) 비연결성

패킷을 받을 대상이 없거나 대상이 서비스 불능 상태여도 패킷을 전송하는 특성이 있다. 보내고자 하는 대상 서버가 패킷을 받을 수 있는 상태인지 없는 상태인지를 보내는 서버 입장에서는 알 수가 없다. 하지만 보내는 사람은 신경 안쓰고 그냥 무작정 보낸다는 것이다.

(2) 비신뢰성

중간에 패킷이 유실되어도 IP에서 전송하는 데이터가 정확하게 전달이 되었는지 확인하지 않는다. 패킷이 중간에 소실되어도 어쩔 수 없다는 한계점이 있다. 택배를 상대방에게 보냈는데 택배기사가 택배를 잃어버린 것과 똑같은 상황이다.

 

그리고 패킷의 길이가 너무 길 경우에는 쪼개서 전송하기도 한다. 이 때 패킷이 상대방에게 순서대로 전송된다는 보장이 없다. 예를 들어, Hello, world! 라고 보냈는데 world! Hello, 라고 올 수도 있는 상황이라는 것이다.

(3) 프로그램 구분

같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 여러개일 경우 구분하기가 어렵다. 예시를 들어보면, 하나의 PC에서 인터넷으로 게임도 하고 노래도 듣는다면 어떤 프로그램인지 알고 전송할 수 있는지에 대한 이야기이다.

 

그래서 위와 같은 한계점들을 극복한 프로토콜이 바로 TCP 프로토콜이다.