> For the complete documentation index, see [llms.txt](https://dodeon.gitbook.io/study/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dodeon.gitbook.io/study/kimyounghan-http-basic/01-internet-network/ip.md).

# IP

복잡한 인터넷 세상에서 데이터를 보내려면 규칙이 있어야 한다.

![](https://389280719-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LxjHkZu4T9MzJ5fEMNe%2Fsync%2Fb4b8128057f333d75084dc8855abe48598c2e092.png?generation=1617456319832606\&alt=media)

* 상대에게 데이터를 보내려면, 클라이언트인 나와 데이터를 받는 상대방에게 IP 주소가 필요하다.
* 내 주소
  * `100.100.100.1`
* 서버
  * `200.200.200.2`

## IP의 역할

* 지정한 IP 주소에 데이터 전달
* 패킷이라는 통신 단위로 데이터 전달

## IP 패킷 정보

데이터는 IP 패킷이라는 규칙에 따라 보내야 한다.

* 출발지 IP
* 목적지 IP
* 보낼 데이터
* 기타 필요한 데이터

![](https://389280719-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LxjHkZu4T9MzJ5fEMNe%2Fsync%2F8d6f05afbe8b6bad0da0470272de2186b2745f08.png?generation=1617456319199807\&alt=media)

규칙에 맞춰 보내면 노드끼리 서로 주고 받으며 도착지에 도착하게 된다.

![](https://389280719-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LxjHkZu4T9MzJ5fEMNe%2Fsync%2F63cc639aa69257615b18a955a5ff87c6d2031a66.png?generation=1617456318741515\&alt=media)

그럼 데이터를 받은 상대방도 같은 방식으로 잘 받았다는 내용을 전달한다.

## IP 프로토콜의 한계

### 비연결성

![](https://389280719-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LxjHkZu4T9MzJ5fEMNe%2Fsync%2F76bc77e8488bfcf2f95633e358b09c000bd1bb36.png?generation=1617456319770323\&alt=media)

상대방이 받을 상황이 되지 않더라도 무작정 보낼 수 있다. 즉, 패킷을 받을 대상이 없거나 서비스가 불능 상태여도 패킷을 전송할 수 있다.

### 비신뢰성

![](https://389280719-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LxjHkZu4T9MzJ5fEMNe%2Fsync%2F735ed2e2d665b96ffdf7d3234fece8ef6df969cd.png?generation=1617456323681913\&alt=media)

패킷이 중간에 사라지거나

![](https://389280719-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LxjHkZu4T9MzJ5fEMNe%2Fsync%2Fa3430a29d5c1ff0c20372637d70baf84b32b8324.png?generation=1617456319373206\&alt=media)

여러 개의 패킷이 순서대로 도착하지 않을 때가 있다.

### 프로그램 구분

같은 IP에서 여러 프로그램을 돌리고 있을 때 어떤 곳에 전송해야 하는지 모른다.
