인터넷 네트워크(인터넷통신, IP)
모든 개발자를 위한 HTTP 웹 기본 지식 을 듣고 정리한 내용이며 모든 그림 예제는 해당 강의에서 가져온 내용입니다.
항목
- 인터넷 통신
- IP(인터넷 프로토콜)
인터넷 통신
클라이언트와 서버는 어떻게 통신할까?
만약 클라이언트와 서버가 가까이 붙어있다면 다음과 같이 선을 연결하여 통신하면 될 것이다.
하지만 대부분 99.9% 는 서버와 클라이언트는 붙어있지않고 우리는 인터넷 망을 이용하여 서버와 통신을 하게된다.
인터넷 망은 매우 복잡하기 때문에 우리의 요청이 안전하게 서버까지 도달하기 위해서는 복잡한 과정을 거쳐야 한다.
따라서 이번 챕터에서는 위에서 말한 복잡한 과정에대해 자세히 알아보자.
IP(인터넷 프로토콜)
먼저 인터넷 프로토콜에 대해서 알아보기 전에 이해하기 쉽게 예를 들어보자.
현실 세계에서 멀리 떨어진 친구와 편지를 통해 서로 소통을 한다고 했을때
필요한것이 무엇이 있을까?
- 수신자의 주소
- 송신자의 주소
- 내용
다른 것도 필요하겠지만 필수적인 내용은 다음 항목과 같을 것이다.
인터넷 망도 현실 세계와 비슷하다.
서버와 클라이언트는 멀리 떨어져 있기 때문에 클라이언트가 특정한 서버로 요청을 보내기 위해선
서버의 IP 주소를 알아야하고 응답 결과를 반환 하기위해선 클라이언트의 IP 주소를 알고 있어야한다.
그러면 현실세계에서는 편지로 데이터를 주고 받지만 인터넷 망에서는 PacKet(패킷) 이라는 통신 단위로 데이터를 주고 받는다.
앞서 말한 편지의 데이터 단위에는 송신자 주소, 수신자 주소, 내용 등이 필요하다 했는데
패킷 역시 비슷한 내용을 담고 있다.
위의 내용을 종합하여 예시를 그려보자면 다음과 같을 것이다.
그렇다면 인터넷 프로토콜 만 이용하면 안전하게 클라이언트와 서버간의 통신이 원활하게 돌아갈까?
IP(인터넷 프로토콜) 의 한계
인터넷 프로토콜은 다음과 같은 한계를 가지고 있다.
- 비연결성
- 비신뢰성
- 프로그램 구분
비연결성
- 비연결성은 클라이언트가 IP 주소를 잘못 적거나(대상이없음), 대상이 있어도 서비스가 요청을 받지 못하는 상황이여도 클라이언트는 알 수 가 없다.
비신뢰성
- 패킷이 여러 노드를 거치면서 패킷이 소멸되는 경우
- -> 즉 패킷이 도착해도 해당 패킷이 전부 전달 되었는지 신뢰하지 못함
- 클라이언트가 보낸 패킷이 순서와 서버가 받는 패킷의 순서가 다른 경우
- -> (2x3)-6 를 요청했으나 순서가 바뀌어 (6x2)-3 으로 도착하여도 해당 데이터가 잘못된 데이터인지 서버는 알 수 없다.
프로그램 구분
- 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 두 개 이상인 경우
- -> 어떠한 애플리케이션을 작동해야하는지 구분하지 못함