IP 와 Port 그리고 Socket

 

들어가며

IP와 Port , Socket에 대한 대략적인 개념은 가지고 있었는데

실무에서 이해도를 가지고 사용해보려 하니 부족한 부분이 많아서 정리합니다.

IP란

IP 주소는 인터넷 또는 로컬 네트워크에서 장치가 서로를 인식하고 통신할 수 있도록 하는 고유한 주소입니다. IP 주소는 두 가지 주요 버전이 있습니다:

  1. IPv4: 32비트 주소 체계로, 보통 '192.168.1.1'과 같은 형식으로 나타납니다. 4개의 8비트 숫자로 구성되어 있어 총 2^32개의 고유 주소를 가질 수 있습니다.
  2. IPv6: 128비트 주소 체계로, 보통 '2001:0db8:85a3:0000:0000:8a2e:0370:7334'과 같은 형식으로 나타납니다. 2^128개의 주소를 가질 수 있어 IPv4의 주소 부족 문제를 해결합니다.

IP란 집과 같은 거라고 이해했습니다. 어디의 위치하고 있는지를 찾을 수 있는 방법을 말합니다.

Port란

포트는 IP 주소와 결합되어 특정 프로세스나 서비스에 대한 네트워크 연결을 식별합니다. 즉, 하나의 IP 주소 내에서 여러 개의 네트워크 서비스를 구분하기 위해 사용됩니다.

  • 포트 번호: 0에서 65535까지의 숫자로, 네트워크에서 어떤 특정 서비스나 애플리케이션과 통신할 때 사용됩니다. 예를 들어, 웹 서버는 일반적으로 포트 80(HTTP) 또는 443(HTTPS)을 사용하고, 이메일 서버는 보통 포트 25(SMTP), 110(POP3), 143(IMAP)을 사용합니다.

여기서 포트는 우리가 일반적으로 사용하는 것들을 말합니다.

  1. Well-Known Ports (0-1023):
    • 주로 잘 알려진 서비스와 프로토콜에 할당됩니다.
    • 예: HTTP(80), HTTPS(443), FTP(21), SSH(22) 등.
    • 이 범위의 포트는 주로 운영체제와 네트워크 장비에 의해 사용됩니다.
  2. Registered Ports (1024-49151):
    • 특정 애플리케이션이나 서비스에 등록된 포트입니다.
    • 다양한 소프트웨어와 애플리케이션이 이 범위 내의 포트를 사용할 수 있습니다.
    • 예: MySQL(3306), Microsoft SQL Server(1433) 등.
  3. Dynamic/Private Ports (49152-65535):
    • 동적 포트 또는 임시 포트라고도 불리며, 주로 클라이언트 애플리케이션이 서버와의 통신을 위해 임시로 사용하는 포트입니다.
    • 예를 들어, 웹 브라우저가 웹 서버에 접속할 때 클라이언트 측에서 이 범위의 포트를 사용합니다.

포트 번호의 할당 및 관리 절차

  • 표준화 및 등록: 개발자는 특정 애플리케이션이나 서비스에 대한 포트 번호를 IANA에 등록할 수 있습니다. IANA는 등록 요청을 검토하고, 해당 포트 번호가 충돌 없이 사용할 수 있도록 관리합니다.
  • 운영체제: 운영체제는 IANA의 포트 번호 할당을 준수하며, 특정 서비스가 실행될 때 올바른 포트를 사용하도록 합니다. 예를 들어, 웹 서버 소프트웨어는 기본적으로 포트 80(HTTP)이나 443(HTTPS)을 사용하도록 설정됩니다.

Socket?

학부에서 소켓관련 프로그래밍을 분명히 해보고 만들줄도 아는데 실제로는 위 IP와 Port를 조합한 것을 의미한다는 것을 이해할 수 있었습니다.

소켓은 IP 주소와 포트 번호의 조합으로, 네트워크 상의 특정 서비스를 식별하고 통신할 수 있도록 해주는 종단점(endpoint)입니다. 이를 통해 두 컴퓨터 간의 네트워크 연결이 이루어집니다.

소켓의 구성 요소

  1. IP 주소: 네트워크 상의 호스트를 식별합니다.
  2. 포트 번호: 해당 호스트에서 특정 애플리케이션이나 서비스를 식별합니다.

이 두 가지를 결합하여 소켓을 형성하며, 이를 통해 데이터가 올바른 목적지로 전송될 수 있습니다.

소켓의 역할

소켓은 네트워크 통신을 위한 인터페이스를 제공합니다. 서버와 클라이언트 간의 데이터 전송을 관리하는 데 사용됩니다.

  • 서버 소켓: 서버는 특정 IP 주소와 포트 번호에서 클라이언트의 연결 요청을 기다립니다.
  • 클라이언트 소켓: 클라이언트는 서버의 IP 주소와 포트 번호로 연결 요청을 보냅니다.

연결이 성립되면, 양쪽 소켓을 통해 데이터가 주고받을 수 있습니다.

결국 우리가 만드는 소켓은 시스템 구성도 상에서는 파일과 같은 인터페이스의 역할을 하면서

통신하는 과정에서는 IP와 Port의 조합으로 구성된다는 것을 이해할 수 있습니다.

'CS' 카테고리의 다른 글

DHCP에 대한 개념 공부 해보기  (1) 2024.11.19
lombok AllArgsConstructor를 안쓰는 이유  (0) 2024.10.08
delete method는 form-data를 못쓴다.  (0) 2024.08.07
Process 와 Thread  (0) 2024.06.10
세션과 토큰 쿠키  (1) 2024.06.10