Skip to main content Link Search Menu Expand Document (external link) Copy Copied

통신 프로토콜이란?

웹에서 사용되는 기본 네트워크 구조는 클라이언트 <-> 인터넷 <-> 서버이다. 이를 관리하는 규칙을 프로토콜 혹은 IP라 부른다. 데이터는 패킷이라는 단위로 전송되며, 이 패킷은 정해진 경로가 아니라, 각 노드를 통해 도착지까지 전송된다. 하지만, 이러한 프로토콜에는 문제점이 있다. 예를 들면, 비연결성, 비신뢰성(데이터가 중간에 사라지거나 순서대로 도착하지 않음), 서버가 같은 IP를 사용하는 등의 문제가 있다. 이러한 문제를 해결하기 위해 TCP/UDP 프로토콜이 사용된다.


신뢰할 수 있는 패킷의 전송이 가능한가?

TCP는 연결지향적이며, 데이터 전달 보증, 순서 보장 등의 특징을 가진다. 이는 3 way handshake를 통해 이루어진다. 이 과정은 아래와 같다.

  1. 클라이언트는 서버에게 연결 가능 여부를 확인하는 SYN 패킷을 보낸다.
  2. 서버는 클라이언트에게 연결 가능함을 응답하고, 반대로 서버가 데이터를 받을 수 있는지 확인하는 SYN+ACK 패킷을 보낸다.
  3. 클라이언트는 마지막으로 서버에게 데이터 수신이 가능하다는 ACK 패킷을 보낸다.

이렇게 하면 클라이언트와 서버 모두 데이터 수신이 가능하다는 것을 확인할 수 있다. 그리고, 이 정보는 출발지와 목적지의 IP와 포트, 전송 제어, 순서, 검증 정보 등과 함께 HTTP 메시지에 포함된다.


다른 방법은 없을까?

UDP라는 프로토콜도 있다. 이는 포트체크섬(데이터의 정확성 검증)을 관리한다. TCP와 비교해 UDP는 기본적으로 기능이 적어, 사용자가 필요에 맞게 쉽게 커스텀 할 수 있다는 장점이 있다. 이러한 장점 때문에 최근 HTTP 3에서 UDP가 다시 주목받고 있다.


더 알아야할 것은?

PORT는 같은 IP 내에서 각각의 프로세스를 구분한다. 범위는 0~65535이며, 0~1023은 잘 알려진 포트로 보통 사용하지 않는 것이 좋다. 예를 들면, FTP는 20, 21, TELNET은 23, HTTP는 80, HTTPS는 443이다. 또한, DNS는 IP를 기억하기 어려울 때 사용되는데, 이는 숫자로 된 IP 주소를 사용자 친화적인 도메인 이름으로 변환해준다. 예를 들어, 1.1.1.1 같은 IP를 google.com 처럼 사용할 수 있게 해준다.