출발지 포트와 목적지 포트 설정 (서버-클라이언트)

서버-클라이언트 구조에서 통신이 이루어질 때 데이터를 전달하는 포트 번호 개념이 조금 다릅니다. 서버는 고정된 포트에서 서비스가 대기하고 있고 클라이언트는 요청할 때 가변적으로 임시 포트를 할당합니다.

Port란?

네트워크에서 포트(Port)는 특정 IP 주소 내에서 특정 프로세스를 구분하기 위한 번호입니다. 네트워크에서 데이터가 송수신될 때, IP 주소는 목적지 컴퓨터를 알려주고 포트 번호는 그 컴퓨터 내의 특정 서비스나 프로세스를 알려줍니다.

 

이때 데이터를 보내는 클라이언트의 포트 번호를 출발지 포트 (Source Port), 데이터를 받는 서버의 포트 번호를 목적지 포트 (Destination Port)라고 부릅니다. 일반적으로 저희가 신경 쓰는 포트 번호는 서버의 포트입니다. 사용자 PC에서의 포트는 그때그때 가변적입니다.

 

서버-클라이언트 구조에서의 포트

서버-클라이언트 구조에서 서버 포트는 고정되어 있습니다. 서비스를 제공하는 애플리케이션은 고정된 포트 번호를 사용해야 클라이언트가 해당 서비스에 연결할 수 있기 때문입니다.

 

반면 클라이언트의 포트 번호는 대부분 서버에 요청을 보낼 때 가변적으로 할당됩니다. 왜냐하면 하나의 클라이언트는 동시에 여러 서비스에 연결할 수 있어야하고, 고정 포트를 할당하면 많은 포트가 사용되지 않은 상태로 낭비될 수 있기 때문입니다. 포트를 임시로 사용 후 연결이 끊어지면 해당 포트를 다른 연결에 사용할 수 있습니다.

 

일반적으로 윈도우에서는 이러한 임시 포트로 49152에서 65535 사이 범위를 사용합니다. 그래서 서버에서 클라이언트와 연결되어 있는 소켓을 확인해 보면 일반적으로 이 범위의 포트 정보가 확인됩니다.

 

예시)

1. 클라이언트 요청

클라이언트가 http://example.com:80으로 웹 요청을 시작합니다. 

 

2. 출발지, 목적지 포트 설정

클라이언트는 운영체제로부터 임시 포트를 할당받습니다. 여기선 50000을 할당받았습니다. 이때 출발지 포트는 50000, 목적지 포트는 80입니다.

 

3. 요청 전송

클라이언트는 example.com 서버의 80번 포트로 요청을 전송합니다. 이때 패킷의 출발지 포트는 50000, 목적지 포트는 80입니다.

 

4. 서버 응답

서버는 요청을 처리하고 응답을 클라이언트에게 보냅니다. 이때의 출발지 포트는 80, 목적지 포트는 50000입니다.

 

5. 클라이언트에서 응답 수신

클라이언트는 50000번 포트에서 응답을 수신합니다.

 

서버-클라이언트 통신 예시
클라이언트의 포트는 가변적으로 변할 수 있다.

 

반응형

댓글

Designed by JB FACTORY