궁금한게 많은 열아홉
article thumbnail

클라이언트와 서버간의 통신에 대해 조금 더 잘 이해하기 위해 네트워크 지식은 필수다. 그래서 오늘은 인터넷 네크워크가 어떻게 통신을 하는지 알아보고 이를 정리해보려고 한다.

 

클라이언트와 서버의 통신방법

우리가 어떠한 정보를 주고 받으려면 통신을 해야한다. 아래와 같이 클라이언트로 사용할 컴퓨터와 서버로 사용할 컴퓨터가 가까이 있다면 그냥 케이블을 활용해서 유선 연결을 하면 된다. 

간단하게!

만약 멀리 그것도 아~주 먼곳에 내가 원하는 정보를 보내고 싶다면 인터넷 망을 활용해야한다.

 

인터넷의 겉과 속

하지만 이 인터넷 망으로 보낸다는 것이 단순하지 않다. 그림으로 보면 알겠지만 인터넷의 속은 굉장히 복잡하다. 왜냐하면 중간에 광케이블을 거쳐서 가기 때문에 정보가 전달되지 않을 수 있고, 전달된다 하더라도 그 정보가 깨지거나 유실되서 정확하지 않을 수 있다.

 

도대체 멀리 있을 때 어떤 규칙으로 어떻게 넘어가길래 그런걸까? 이와 관련해서 이제부터 알아보려고 한다.

 

해답은 IP에 있다

멀리있는 컴퓨터에게 메세지를 전달하기 위해서 복잡한 인터넷 망을 활용한다. 이 인터넷 망에게 각 컴퓨터에 주소인 IP address를 부여해서 통신을 가능하게 하는 것이다. 아래와 같이 말이다

각 컴퓨터에 IP 주소를 부여했다

이렇게 주소를 지정하면 클라이언트와 서버는 내가 원하는 서버에 데이터를 보낼 수 있게 된다. 이때 데이터는 패킷이라는 통신 단위의 데이터로 전달된다.

IP 패킷

  • 출발지 IP, 목적지 IP, 데이터 등으로 구성되어있다. 
  • 인터넷 망 안에서 서로 노드(서버)끼리 데이터를 전달하고, 최종적으로 목적지 IP에 도달한다.
  • 서버에서 IP패킷은 출발지 IP, 목적지 IP, 상태 데이터 등으로 구성된다. 해당 서버는 데이터 상태에 대해 다시 응답을 주고 최종적으로 목적지 IP에 도달할 수 있게 된다.

그러나 이 IP는 한계점이 몇 가지 있다.

 

한계점

비연결성이다.

패킷받을 대상 없가나 서비스 불능 상태여도 패킷을 전송한다. 즉, 클라이언트는 대상 서버가 패킷을 받을 수 있는 상태인지 모른다. 만약 내가 알고있는 주소로 요청을 보냈는데, 주소가 바뀌거나 사라지면 소용이 없는 것이다.

신뢰성이 낮다.

인터넷망은 복잡하기 때문에 중간에 패킷이 사라질수도 있다. 혹은 서버가 꺼진다던가 하는 그런 노답적인 상황이 펼쳐지는 경우도 있다. 또 여러개의 패킷을 보냈을때 순서대로 오지 않는 경우가 있다. 이 경우는 패킷 용량이 클때(보통 한 패킷의 크기는 1500바이트이다.) 그 용량을 넘기면, 쪼개서 보내게 되는데 이때 노드(서버)를 타면서 받는 순서가 변경이 될 수 있다.

프로그램 구분하지 못하는 경우가 있다

예를 들어서 우리가 음악들으면서 블로그 작성을 하면 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이게 된다. 그렇게 되면 잘못된 곳으로 데이터를 받을 수 있다.

해결법

TCP 프로토콜을 사용하면 된다. 이와 관련된 이야기는 조금 길어질것 같으니 다음 챕터에서 정리하도록 하겠다!

 

 

 

profile

궁금한게 많은 열아홉

@jjin502

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!