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
에 대해 자세하게 살펴볼 예정입니다.