네트워크

[네트워크] 인코딩(Encoding)과 포트(Port)

연화 2025. 1. 2. 22:24

인코딩이란?

컴퓨터에서 다루는 모든 데이터는 0과 1로 이루어져 있습니다. 지금 보고 있는 글도 사실 0과 1의 조합으로 표현된 결과물입니다. 우리가 "사과"라는 단어를 보고 사과를 떠올리는 것이 약속에 기반을 두듯, 0과 1을 통해 문자를 표현하는 것도 약속이 필요합니다. 이를 "인코딩(Encoding)"이라고 하며, 아스키(ASCII)와 유니코드(Unicode)가 대표적인 예입니다.

아스키는 7비트 데이터로 이루어진 인코딩 방식으로, 영어 알파벳과 특수 문자를 표현할 수 있습니다. 예를 들어, 아스키 코드에서 “1000001”은 “A”로 변환됩니다. 이처럼 특정 비트 조합을 통해 문자를 표현하는 것이 인코딩입니다.

과거에는 언어별로 고유한 인코딩 방식을 사용했습니다. 예를 들어, 영어는 아스키, 한국어는 CP-949나 EUC-KR 등이 사용되었습니다. 하지만 이런 방식은 서로 다른 언어 환경에서 호환성 문제가 발생했습니다. 가끔 소프트웨어에서 글자가 깨져 🆡🆡🆡와 같은 이상한 문자가 나타나는 것도 이러한 호환성 문제 때문입니다.

이 문제를 해결하기 위해 유니코드라는 새로운 표준이 등장했습니다. "Uni"라는 접두사처럼 유니코드는 모든 언어의 문자를 하나의 체계로 통합하려는 목표를 가지고 만들어졌습니다. 유니코드는 최대 32비트로 문자를 표현하며, 이로 인해 약 42억 개의 문자 조합을 담을 수 있습니다. 이는 전 세계 언어와 심지어 이모지(Emoji)까지도 표현할 수 있는 충분한 공간을 제공합니다.

인코딩 덕분에 우리의 문장을 컴퓨터에 저장하고 표현할 수 있으며, 네트워크를 통해 쉽게 정보를 교환할 수 있습니다.

 

네트워크 포트와 서비스 포트

네트워크 포트(Network Port)는 네트워크 상에서 서버와 클라이언트가 정보를 주고받는 가상의 경로를 의미합니다. 항구에 배가 드나들며 물건을 싣고 내리는 모습을 떠올리면 포트의 역할을 이해하는 데 도움이 됩니다. 네트워크 문맥에서는 간단히 "포트"라고 부르기도 합니다.

서비스 포트(Service Port)는 특정 서비스가 사용하는 포트를 말합니다. 예를 들어, HTTP는 기본적으로 80번 포트를 사용하며, 이 경우 HTTP의 서비스 포트는 80번이 됩니다.

포트를 통해 데이터를 교환할 때는 전송 계층(Transport Layer)의 프로토콜을 따릅니다. 대표적으로 TCP와 UDP가 있습니다. 만약 TCP를 사용하는 서비스에 UDP 클라이언트가 접근하려 한다면 데이터 교환이 이루어지지 않습니다. 반대로 UDP 서비스에 TCP 클라이언트가 접근하는 경우도 마찬가지입니다. 따라서 서비스 포트를 표기할 때, 해당 서비스가 사용하는 프로토콜도 함께 적습니다. 예를 들어, HTTP의 서비스 포트가 "TCP/80"이라고 하면, HTTP 서비스가 80번 포트에서 TCP 프로토콜로 동작함을 나타냅니다.

현대의 운영체제에서는 보통 0번부터 65535번까지 총 65536개의 포트를 제공합니다. 이 중 0번에서 1023번까지는 잘 알려진 포트(Well-known port) 또는 특권 포트(Privileged port)로 불리며, 특정 서비스에 예약되어 있습니다. 예를 들어, SSH는 22번, HTTP는 80번, HTTPS는 443번 포트를 사용합니다. 이러한 포트에서 서비스를 실행하려면 관리자 권한이 필요하며, 이는 클라이언트가 이 대역의 서비스를 신뢰할 수 있도록 보장합니다.

 

  • **TCP(Transmission Control Protocol)**는 데이터 전송의 신뢰성을 보장하며, 순서가 어긋나지 않도록 데이터를 정렬합니다. 파일 전송이나 웹 브라우징 같은 신뢰가 중요한 서비스에 적합합니다.
  • **UDP(User Datagram Protocol)**는 속도가 빠르지만 데이터 전송의 신뢰성을 보장하지 않습니다. 그러나 실시간 스트리밍, 온라인 게임 등 속도가 중요한 서비스에서는 UDP가 더 유리합니다.