Post

TCP/IP 란

IP란 무엇인가

IP는 데이터 패킷이 네트워크를 통해 이동하고 올바를 대상에 도착할 수 있도록 데이터 패킷을 라우팅하고 주소를 지정하기 위한 프로토콜 또는 규칙의 집합이다. 인터넷을 통과하는 데이터는 패킷이라고 하는 더 작은 조각으로 나뉜다. IP정보는 각 패킷에 첨부되며, 이 정보는 라우터가 패킷을 올바를 위치로 보내는 데 도움이 된다. 인터넷에 연결하는 모든 장치가 도메인에는 IP주소가 할당되며, 패킷이 연결된 IP주소로 전달되면 데이터가 필요한 곳에 도착한다. 패킷이 목적지에 도착하면 IP와 함께 어떤 전송 프로토콜이 사용되는지에 따라 다르게 처리되는데, 가장 일반적인 전송 프로토콜은 TCPUDP이다.

네트워크 프로토콜이란?

네트워킹에서 프로토콜은 둘 이상의 장치에서 서로 통신하고 이해할 수 있도록 특정 작업을 수행하고 데이터 형식을 지정하는 표준화된 방법이다. 편지를 부치는 과정을 생각해보면, 봉투에는 주소가 주소, 이름, 우편번호의 순서로 기록된다. 그러나 우편번호, 이름, 주소 순서로 쓴다면 제대로 배달되지 않을 것이다. 우편 시스템이 작동하려면 합의된 프로토콜에 따라 주소를 작성해야 하듯이, 같은 방식으로 모든 IP데이터 패킷은 특정 정보를 특성 순서로 표시해야 하며 모든 IP주소는 표준화된 형식을 따른다.

IP의 동작방식

IP는 인터넷 프로토콜(Internet Protocol)의 약자로, 장치들이 인터넷을 통해 통신할 수 있도록 하는 규칙의 집합을 의미한다. 매일 수많은 사람들이 인터넷에 접속하고 있으므로 누가 무엇을 하고 있는지 추적하려면 고유의 식별자가 필요한데, 인터넷 프로토콜은 인터넷에 액세스하는 모든 장치에 IP번호를 할당함으로써 이를 해결한다.
브라우저에 www.aws.amazon.com을 검색했을 때 일어나는 일을 순서대로 알아보자. img이미지 출처

  1. Client→DNS Resolver: www.aws.amazon.com의 주소를 알려줘
  2. DNS Resolver→DNS: 내 캐시에 DNS 정보가 없어! DNS를 조회해줘
  3. DNS→DNS Resolver: 자, 여기 www.aws.amazon.com의 주소~
  4. DNS Resolver→Client: 고마워. 전달받은 주소를 사용자에게 전달해주고, 캐시도 해둘게!
  5. Client→Web Server: 전달해준 주소로 Web Server에게 데이터를 요청할게!
  6. Web Server→Client: 자, 여기 너가 요청한 웹사이트 데이터야!

유명한 예시이지만, DNS는 IP의 전화번호부라고 할 수 있다. 사용자들은 사람에게 친숙한 도메인 이름으로 브라우저 창에 입력하면, DNS가 해당 도메인 이름으로 IP를 찾아주는 것이다.

IPv4 vs IPv6

IPv4와 IPv6는 인터넷 프로토콜의 다른 버전이다. IPv4는 1983년부터 실행되었으며 현재도 사용 중이다. IPv4의 형식은 점으로 구분된 네 개의 숫자(ex. 192.0.2.1)이다. 이는 32비트 형식이므로, \(2^32\)개 즉, 약 43억 개의 고유 IP주소가 있을 수 있지만, 현재 인터넷을 사용하는 장치 수에 비해 부족하다. 따라서 더 많은 IP 주소가 필요해져서 IPv6가 탄생했다. IPv6 주소는 보다 복잡한 형식을 사용하며, 숫자와 문자가 하나 또는 두 개의 콜론으로 구분된다.(ex. 2001:0db8:85a3:0000:0000:8a2e:0370:7334) 이 128비트 형식은 \(2^128\)개(39자리 숫자)의 고유 주소를 지원할 수 있다.
IPv6는 보안 및 개인정보보호 등의 측면에서도 IPv4를 개선하였다.둘 사이에 차이점이 있지만, IPv4와 IPv6 둘 다 10여년동안 웹에서 동시에 사용되었다. 두 버전은 동시에 실행할 수 있지만, IPv4와 IPv6 장치 간 통신을 용이하게 하기 위해서는 특별한 조치를 구현해야 하는데, 웹의 상당히 많은 부분이 여전히 IPv4 주소를 사용하고 있었으므로 이런 절충안이 나올 수 밖에 없었다.

정적 IP vd 동적 IP

IPv4는 주소가 부족하기 때문에 IP주소를 동적으로 지정하게 되었으며, 이는 아직도 널리 사용되는 방법이다. 인터넷에 연결된 대부분의 장치에는 임시IP주소가 할당된다.
예를 들어, 가정 내 사용자가 자신의 노트북으로 인터넷에 접속하면 사용자의 ISP(Internet Service Provider)가 공유IP주소 풀에서 임시IP주소를 할당하는데, 이것을 동적IP라 한다. ISP로서는 이렇게 하는 것이 사용자마다 영구적 또는 정적 IP 주소를 할당하는 것보다 비용 효율적이다.
대기업과 같은 일부 ISP 고객은 정적IP주소(ex. aws의 1.1.1.1)를 유지하기 위해 대가를 지불하는데, 대부분의 일반 사용자는 동적IP주소를 가지는 것으로 충분하다. 자체 호스팅 웹 사이트, API, 게임 서버 등의 웹 서버를 호스팅하게 되면 동적IP의 경우 문제가 생길 수 있다. IP주소를 변경하면 DNS 쿼리가 실패하므로 결과적으로 리소스가 다운될 수 있다. 이를 해결할 수 있는 방법으로는 동적DNS(Dynamic DNS. DDNS) 가 있는데, 그것은 다음에 알아보도록 하자..

TCP/IP란?

전송 제어 프로토콜(TCP)은 전송 프로토콜이다. 데이터를 보내고 받는 방법을 지정한다는 의미이다. TCP헤더는 TCP/IP를 사용하는 각 패킷의 데이터 부분에 포함된다.
TCP는 데이터를 전송하기 전에 수신자와의 연결을 설정한다. TCP는 전송이 시작되면 모든 패킷이 순서대로 도착하도록 한다. 수신자는 TCP를 통해 도착하는 각 패킷 수신을 확인한다. 수신이 확인되지 않은 경우 누락된 패킷이 다시 전송된다.
TCP는 속도가 아닌 안정성을 위해 설계되었다. TCP는 모든 패킷이 순서대로 도착하는지 확인해야 하므로 일부 패킷이 누락된 경우 TCP/IP를 통해 데이터를 로드하는 데 시간이 더 오래 걸릴 수 있다.

예를 들어, TCP를 통해 이메일을 전송하면 연결이 설정되고 3방향 핸드셰이크가 만들어진다.

  1. 대화를 시작할 수 있도록 소스가 SYN “최초요청” 패킷을 대상 서버로 보낸다.
  2. 대상 서버가 SYN-ACK 패킷을 보내 이 과정에 동의한다.
  3. 소스가 대상에 ACK 패킷을 보내 이 과정을 확인하며, 이후 메시지 콘텐츠를 전송한다.
    이메일 메시지는 궁극적으로 패킷으로 분할된 후 인터넷으로 보내지며, 인터넷에서는 일련의 게이트웨이를 거쳐 대상 장치에 도착하는데, 여기에서 이 패킷들이 다시 TCP에 의해 조립되어 이메일의 원래 메시지로 구성된다.
    img이미지 출처

TCP와 IP는 원래 함께 사용하도록 설계되었으며 TCP/IP 제품군이라고 부르는 경우도 많다. 그렇지만 다른 전송 프로토콜도 IP와 함께 사용 가능하다.

UDP/IP란?

사용자 데이터그램 프로토콜(UDP)은 또 다른 전송 프로토콜로 널리 사용된다. UDP는 TCP보다 빠르지만, 안정성도 떨어진다. UDP는 패킷이 순서대로 모두 전달되는지 확인하지 않으며 전송을 시작하거나 수신하기 전에 연결을 설정하지 않는다.

참고

IP 주소란 무엇이고 IP 주소는 왜 중요할까요? IP와 TCP는 무엇입니까?

This post is licensed under CC BY 4.0 by the author.