인터넷 네트워크

김현송·2023년 2월 28일
0

네트워크

목록 보기
1/10

클라이언트와 서버는 어떻게 통신할까요?

우리는 인터넷을 통해 데이터를 교환하고 자료를 저장하고 공유합니다.

클라이언트에서 서버로, 서버에서 클라이언트로 데이터가 이동하는 방법에 대해 알아보도록 하겠습니다.




인터넷 통신

인터넷은 클라이언트에서 서버로 직접 연결되는 것이 아닌 무수히 많은 서버 노드를 거쳐 데이터가 이동합니다.

각 노드들은 받은 데이터가 어디에서 왔는지, 또 어디로 가야하는지 알 필요가 있습니다.




IP(인터넷 프로토콜)

- IP의 정의

MDN 문서에 따르면 프로토콜의 정의는 컴퓨터 내부에서 또는 컴퓨터 사이에서 교환 방식을 정의하는 규칙 체계라 정의하고 있습니다.

다시 말해, 인터넷 프로토콜은 인터넷에서 데이터를 교환하는 통신 규약입니다.

앞서 얘기한 노드들이 어디서 오고 어디로 가야하는지 알게 해주는 정보가 바로 IP 주소입니다.

- 역할

패킷이라는 통신 단위로 지정한 IP 주소에 데이터를 전달합니다.

패킷은 무엇일까요? 데이터를 이동시킬 때, IP 주소를 데이터 내부에 담는 것이 아닌 어떤 틀로 데이터를 감싸서 보내게 되는데 이 틀을 패킷이라고 합니다.

IP 패킷에는 출발지 IP, 목적지 IP 등의 정보가 들어있습니다.

- 한계

  1. 비연결성

    • 클라이언트에서 패킷을 만들어 서버로 보낼 때 서버가 열려있는지 닫혀있는지 수많은 노드들은 잘 통과하고 있는지 확인할 수 있는 방법이 없습니다.
  2. 비신뢰성

    • 비연결성과 마찬가지로 중간에 패킷이 유실되거나, 대량 데이터를 보낼때 패킷이 순서대로 서버로 전달되지 않는 것을 비신뢰성이라 합니다.

      아래와 같이 패킷들은 노드들을 거쳐 이동하지만, 항상 같은 노드를 타고 이동하지 않습니다.

  1. 프로그램 구분

    여러개의 창을 띄워놓고, YouTube 시청과 웹 서칭을 동시에 한다고 가정합니다. 만일 구글 크롬과 Youtube의 서버 IP가 같다면 어떻게 될까요? 클라이언트로 들어온 패킷이 youtube 동영상인지, 웹 서칭한 정보인지 패킷으로는 판단할 수 없습니다.




TCP(전송제어 프로토콜), UDP

인터넷 프로토콜에는 4가지 계층이 있습니다.

예를 들어 프로토콜의 순서가 각 서버(클라이언트)마다 다르다고 한다면, 데이터를 송수신하는데 해당 클라이언트 및 서버마다 규약을 저장하고 있거나 새로 만들어야되는 문제가 발생합니다.

따라서 프로토콜은 계층을 나눠 해당 순서마다 데이터를 감싸는 작업을 합니다.

IP 패킷을 만들기 이전, 정보를 한가지 더 감싸는데 이 정보를 TCP 정보라 합니다.

UDP는 TCP와 같은 계층에 있으며 일반적으로 TCP를 많이 쓴다고 합니다.

- TCP 특징

  • TCP 3 way handshake (가상연결)

    TCP 3-Way Handshake Process | Concept - YouTube

    출처 : https://www.youtube.com/watch?v=enET2x2eHU8

    클라이언트와 서버는 모두 ACK라는 응답 신호를 통해 상대방에게 연결되었음을 알립니다

    SYN은 연결 요청입니다.

    하지만 3 way handshake 는 가상 연결입니다. 클라이언트에서 서버로 이동하는 중 수많은 노드들을 거치면서 실제 이것을 파악하는 것은 불가능하기 때문에 논리적인 연결이라고 보는 것입니다.

  • 데이터 전달 보증

  • 순서 보장

- UDP 특징

  • 기능이 거의 없습니다.
  • 연결 지향이 아닙니다. (3 way handshake)
  • 데이터 전달 보증이 안됩니다.
  • 순서 보장이 없습니다
  • IP와 거의 유사하지만 PORT와 체크섬 정도만 추가한 것입니다.
  • 애플리케이션단에서 UDP에 정보를 담아 추가 작업이 필요합니다.




PORT

포트는 같은 IP 내에서 프로세스를 구분하기 위해 사용합니다.

서버로 부터 들어오는 데이터는 모두 클라이언트 하나의 IP주소로 들어오는데, 해당 IP 주소에서 데이터를 구분하는 추가적인 상세 주소를 포트라 합니다.

일반적으로 HTTP 는 80포트 HTTPS는 443포트를 사용합니다.




DNS

IP 주소는 숫자로 이루어져 있어 기억하기도 쉽지 않고 변경될 수도 있습니다.

이러한 문제들을 해결하기 위한 도메인 주소를 저장하는 곳이 DNS 서버 입니다.

profile
안녕하세요

0개의 댓글