Network 인터넷 IP(Internet Protocal) 및 패킷(Packet)

1. 인터넷에서 컴퓨터 둘은 어떻게 통신을 할까요?

단순히 생각해보면 클라이언트에서 메시지를 보내면 서버에서 해당 메시지를 받고 정상적으로 받았다면 응답메시지를 보내주게 됩니다.

2. 인터넷

2.1. 통신을 할때 과연 어디를 통해서 클라이언트와 서버가 통신이 가능해질 수 있었을까요?

바로, 인터넷이라는 개념때문인데 인터넷은 상당히 복잡한 망으로 구성되어 있습니다. 각각의 인터넷안에 연결된 노드들 끼리 수도없이 복잡하게 얽혀져 있습니다.

3. IP(Internet Protocal)

이렇게 인터넷을 통해서 데이터를 전송하는 경우에는 IP라는 인터넷프로토콜 주소를 붙여서 전송시키는 경우가 많습니다.

데이터 전송 예시
만약에 클라이언트 IP:127.0.0.1의 주소에서 IP:127.0.0.2의 주소로 데이터를 전송한다고 가정해보겠습니다.
이때 클라이언트는 찾고자하는 서버의 IP를 검색을 진행하면 127.0.0.1의 IP주소를 가지고 인터넷의 노드를 탐색하면서 IP:127.0.0.2의 주소를 찾아서 서버는 해당 클라이언트의 요청을 받고 해당 데이터들을 넘겨주게 됩니다.

4. IP(Internet Protocal)의 역할

인터넷 프로토콜의 역할은 지정된 IP주소를 해당 IP 주소(Address)에 데이터를 전달시킵니다. 이때, 패킷(Packet)이라는 통신 단위로 데이터를 전달하게 됩니다.

5. IP 패킷(Packet)

IP패킷은 출발지 IP목적지IP, 기타 데이터사항들을 감싸서 데이터를 전송합니다.

클라이언트의 패킷은 어떻게 전달될까요?

출발지 IP, 목적지 IP, 데이터 등등의 값을 가지고 해당 클라이언트IP패킷인터넷상에 던져주게 됩니다. 노드끼리 해당 목적지 IP탐색하면서 서버 IP를 찾아냅니다. 해당 서버IP를 찾게 되면 해당 서버에게 데이터를 패킷의 형태로 전송하게 됩니다.

서버의 패킷은 어떻게 전달 될까요?

서버 IP를 출발지 IP로 지정하고, 전달하고자 하는 클라이언트의 아이디 목적지 IP에게 해당 요청에 대한 성공,실패 유무를 반환하여 HTTP의 상태값과 함께 전송시키게 됩니다. 클라이언트와 마찬가지로 인터넷상의 노드들은 목적지 IP를 탐색하여 클라이언트에게 패킷형태로 전송시켜주게 됩니다.

6. IP 프로토콜의 한계

  • 비연결성
    패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송하게 됩니다. 예를 들면, 해당 서버 PC가 꺼져있는 경우 불능상태이기때문에 이때에도 패킷을 전송해버리는 불상사가 발생하게 됩니다.

  • 비신뢰성
    중간에 패킷이 사라지는경우가 생길 수 있습니다. 클라이언트가 인터넷안에서 노드가 꺼진 노드일 경우 이 패킷들은 손실되어 더이상 처리가 되지 않을 수 있습니다.

패킷이 순서대로 처리되지 않을 수 있습니다. 순서대로 처리되지 않을시 같은 IP는 어떻게 구분할 수 있을지에 대한 문제가 생길 수 있습니다.

패킷 순서 오류 예시

클라이언트에서 ["HTTP Message1"], ["HTTP Message2"]를 전송한다고 가정하였을때 패킷이 다른노드를 타고 들어갈 수 있는 경우가 발생합니다. 클라이언트에서는
["HTTP Message1"] -> ["HTTP Message2"] 의 순서로 데이터를 전송하였지만 서버측에서는 ["HTTP Message2"] -> ["HTTP Message1"]의 순서로 데이터를 받을 수 있는 경우가 발생합니다.

  • 프로그램 구분
    같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면 프로그램을 정확히 구분할 수가 없게됩니다.

TCP/IP의 등장

결론적으로 이러한 문제들을 해결하기 위해 TCP/IP라는 개념이 등장하게 되었으며 다음 포스팅에서 TCP/IP에 대해 자세하게 살펴볼 예정입니다.