인터넷 네트워크의 기본적인 프로토콜

만약 내가 사랑하는 사람에게 연애편지를 써서 우체통에 넣었다고 가정해보자.
상대방이 편지를 받으려면 아래와 같은 항목들이 필요할 것이다.

  • 편지지
  • 편지봉투
  • 우표
  • 편지의 내용(메시지)
  • 보내는 사람, 받는 사람 주소
  • 신뢰할 수 있는 우체부

인터넷 환경에서도 위와 같은 항목들을 각 프로토콜이 담당하고 있다.
이제부터 어떤 프로토콜이 어떤 역할을 하게 되는지 알아보자.

IP(Internet Protocol)

나는 누구? 여긴 어디? 너는 누구? 너는 어디?

IP(Internet Protocol)어디누구를 표현할 수 있는 프로토콜이다.

IP 특징

  • 지정한 IP 주소에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달

IPv4 구조

  • 3개의 .을 기준으로 구분
  • 구분자 앞뒤로 각 8bit(0~255) 까지의 숫자를 조합하여 주소를 표시

IPv6 구조

  • IPv4(4,294,967,296 개 할당 가능)로 할당가능한 주소의 개수보다
    통신장비의 수가 더 많아져서 주소를 할당할 수 없는 지경
  • 이런 문제점을 극복하고자 128bit의 IPv6를 설계
  • 하지만 IPv6는 IPv4를 호환되지 않기 때문에 IPv4와 IPv6를 혼용해서 사용

IP 프로토콜의 한계

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 비신뢰성
    • 중간에 패킷이 사라지면?
      • 패킷이 순서대로 안오면?
  • 프로그램 구분
    • 같은 IP를 사용하는 장비로 통신하는 애플리케이션이 2개 이상이면?
  • 주소를 외우기 힘들다

TCP, UDP

이전 포스팅을 살펴보면 인터넷 프로토콜 5계층 중
전송계층(Transport Layer)를 담당하고 있는 대표적인 2개의 프로토콜인
TCP, UDP가 있다.

TCP(Transmission Control Protocol) 특징

  • 연결지향 - TCP 3 way Handshake(가상 연결)
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

3 Way handshake

TCP의 가장 큰 특징 중 하나인 3 way handshake다.
이를 통해 연결성을 보장하며, IP의 한계점이었던, 비연결성, 비신뢰성을 극복할 수 있다.

TCP의 나머지 특징들은 모두 연결성으로 부터 야기된다.

  1. 데이터 순서를 보장할 수 있다.(1번 못받았으니 1번부터 다시보내)
  2. 데이터 전달 보증
    1. (데이터 보냈는데 받았어? –> 아니 못받았으니 다시보내)
    2. (데이터 보냈는데 받았어? –> ㅇㅇ 잘 받음)
  3. 연결되어 있으니 서로 신뢰할 수 있다.

UDP(User Datagram Protocol) 특징

  • 기능이 거의 없음
  • 3 Way Handshake 없음
  • 비신뢰성
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
    • IP와 거의 같지만 PORT, 체크섬정도만 추가
    • 애플리케이션에서 추가 작업이 필요하다

TCP vs UDP

소싯적에 스타크래프트를 즐겨했으면,
게임속에서 TCP와 UDP를 살펴 볼 수 있다.

위의 TCP / UDP의 특징을 이해했으면, 각각의 특징을 살린 프로토콜을 사용해 게임을 했던 것이 기억날 것이다.

  • 입력한 명령에 비해 비교적 느린 응답속도를 보이지만, 절대적인 연결이 중요할 때
    • TCP에서 게임 진행
  • 네트워크 상태가 비교적 좋아서, 빠른 반응속도가 더 중요할 때
    • UDP에서 게임 진행

PORT

우체부 아저씨는 주소(IP)까지 찾아갈 수 있다.
만약 아파트라면, 호수(Port)를 알려줘야 편지를 정확하게 전달 할 수 있다.

IP의 한계 중 비연결성과 비신뢰성을 극복하기 위해 TCP를 사용했다면,
동일한 클라이언트에서 두 개 이상의 애플리케이션에 연결해야 하는 경우는 어떻게 해결 할 수 있을까?
PORT가 그 해결방안이 될 수 있다.

PORT 사용 시 주의사항

  • 0 ~ 65535 할당 가능
  • 0 ~ 1023 : Well Known Port(잘 알려진 포트)로 사용하지 않는 것을 권장함
    • ex1) FTP - 20, 21
    • ex2) telnet - 23
    • ex3) http - 80
    • ex4) https - 443

DNS

  • IP는 기억하기 어렵다는 한계점이 존재했다.
  • IP는 부족하기 때문에 사용하지 않으면, 반환 / 재할당을 통해 주소가 변경될 수 있다
  • DNS는 이런 한계점을 극복하고자 만들어 졌다.
  1. example.com 이라는 Domain name으로 접속한다.
  2. DNS 서버는 example.com : IP주소 정보를 가지고 있다.
  3. 따라서, 우리는 example.com이라고 쳐도 dns가 이를 IP로 변경해 준다.