본문 바로가기
목차훔치기/하루 3분 네트워크 교실

포트 번호(하루 3분 네트워크 교실)

by 해삼2 2023. 7. 26.
728x90
반응형
포트 번호

포트 번호

네트워크에서 포트 번호는 특정 프로세스나 서비스를 식별하기 위해 사용되는 숫자입니다. 

TCP 및 UDP 프로토콜에서 사용되며, 포트 번호를 통해 데이터 패킷이 올바른 프로세스에 

전달되도록 합니다.

포트 번호는 0부터 65535까지의 범위를 가지며, 일부 포트 번호는 특정 용도로 예약되어 있습니다. 

80번 포트는 일반적으로 웹 서버가 사용하는 포트로 HTTP 프로토콜에 대한 트래픽을 처리합니다.
443번 포트는 HTTPS와 같은 암호화된 웹 트래픽에 사용됩니다.
25번 포트는 이메일 전송에 사용되는 SMTP 프로토콜의 기본 포트입니다.
21번 포트는 FTP(File Transfer Protocol)를 위한 포트로 사용됩니다.
22번 포트는 SSH(Secure Shell) 연결을 위한 포트로 사용됩니다.
포트 번호는 애플리케이션이나 서비스가 사용하는 표준 포트가 있지만, 

특정 상황에서 사용자 지정 포트를 선택하여 사용할 수도 있습니다. 

이러한 포트는 네트워크 트래픽을 효율적으로 관리하고 보안을 강화하기 위해 중요한 역할을 합니다.


포트 사용

포트 번호는 네트워크에서 데이터 패킷을 특정 프로세스 또는 서비스로 라우팅하고 식별하는 데 

사용됩니다. 포트 번호는 주로 TCP(Transmission Control Protocol와 UDP(User Datagram Protocol)

두 가지 주요 프로토콜에서 사용됩니다.

각 프로토콜은 포트 번호를 사용하는 다른 방식이 있습니다.

TCP 프로토콜:
TCP는 연결 지향적인 프로토콜로, 두 시스템 사이에 가상의 연결을 설정하여 신뢰성 있는 

데이터 전송을 보장합니다. 

TCP는 3-way handshake를 통해 연결을 설정하며, 이때 포트 번호가 사용됩니다.
웹 서버(예: Apache, Nginx)는 보통 80번 포트를 사용하여 HTTP 요청을 처리합니다. 

HTTPS를 위한 SSL 암호화를 사용하는 경우 443번 포트를 사용합니다(SSL/TLS 인증서와 함께)
다른 서비스는 일반적으로 표준 포트를 사용하거나, 

서비스를 설정할 때 사용자 지정 포트를 지정할 수 있습니다.


UDP 프로토콜:
UDP는 비연결 지향적인 프로토콜로, 신뢰성이 요구되지 않거나 실시간 통신에 사용됩니다. 

UDP는 연결 설정이나 연결 해제를 하지 않으므로, 데이터 패킷에 포트 번호가 포함되어 

수신 측에서 패킷을 구분합니다.
DNS(Domain Name System)는 53번 포트를 사용하여 도메인 이름을 IP 주소로 변환하는데 사용됩니다.
DHCP(Dynamic Host Configuration Protocol)는 클라이언트에게 IP 주소와 네트워크 설정 정보를 

제공하기 위해 67번 포트를 사용합니다.
VoIP(Voice over IP) 애플리케이션은 실시간 음성 및 비디오 통화를 위해 UDP를 사용합니다.
포트 번호는 네트워크의 충돌 없이 여러 서비스가 동시에 동작하고 서로 통신할 수 있도록 도와줍니다. 

서로 다른 프로토콜을 사용하는 서비스들은 같은 포트 번호를 동시에 사용할 수 있으며, 

이는 포트와 IP 주소의 조합으로 고유하게 식별됩니다.

 

 

3-way handshake

3-way handshake는 TCP(Transmission Control Protocol)를 사용하는 네트워크에서 연결을 설정하는 과정을 말합니다. 이 과정은 클라이언트와 서버 간에 신뢰성 있는 연결을 구축하는 데 사용됩니다. 

3-way handshake는 다음 세 단계로 이루어집니다.

단계 1: 클라이언트가 서버에 연결 요청 (SYN):
클라이언트가 서버로 연결을 요청하는데, 이때 클라이언트는 서버에 SYN 패킷을 보냅니다. 

SYN 패킷에는 클라이언트가 사용할 수 있는 랜덤한 시퀀스 번호가 포함되어 있습니다. 

이 시퀀스 번호는 클라이언트의 초기 순서를 나타냅니다.
클라이언트는 이후 서버로부터의 응답을 기다리는 상태가 됩니다.


단계 2: 서버가 클라이언트의 요청을 수락하고 응답 (SYN+ACK):
서버가 클라이언트의 SYN 패킷을 받았을 때, 서버는 클라이언트에게 ACK(인증응답)와 SYN 패킷을 

함께 보냅니다. 

이때, ACK 패킷에는 클라이언트의 초기 시퀀스 번호에 1을 더한 값이 포함됩니다. 

SYN+ACK 패킷은 서버의 초기 순서를 나타내기 위해 서버가 랜덤하게 선택한 시퀀스 번호도 포함됩니다.
서버는 이제 클라이언트로부터의 최종 확인 응답을 기다리는 상태가 됩니다.


단계 3: 클라이언트가 서버의 응답을 확인 (ACK):
클라이언트는 서버의 SYN+ACK 패킷을 받았을 때, ACK 패킷을 서버로 보냅니다. 이때, 

ACK 패킷에는 서버의 초기 시퀀스 번호에 1을 더한 값이 포함됩니다. 

이로써 클라이언트는 서버의 응답을 확인하고, 서버와의 연결이 성공적으로 설정되었다는 것을 

알리게 됩니다.
서버는 이후 클라이언트의 ACK 패킷을 받으면 연결이 성공적으로 설정되었다고 인식하고, 

양쪽 모두 준비된 상태로 데이터를 주고받을 수 있게 됩니다.
이렇게 3-way handshake 과정을 거치면 클라이언트와 서버는 상호 간에 신뢰성 있는 연결이 수립되고, 

이후 데이터를 안정적으로 주고받을 수 있게 됩니다. 

TCP는 신뢰성 있는 프로토콜로 알려져 있으며, 3-way handshake는 이 신뢰성을 구현하는 중요한 

부분입니다.

 

포트 번호 쉽게 알아보기 (예시)

해성이가 짬뽕에게 과자를 주는 상황:
해성(학생)은 짬뽕(학생)에게 과자를 주려고 합니다. 해성은 짬뽕에게 과자를 전달하기 위해 학교 내에서 

약속된 문을 사용합니다.
이 문은 학교 내부에서만 특정 서비스(과자 전달 서비스)를 위해 사용되며, 이 문은 1234번 포트로 알려져 

있습니다.
따라서 해성이는 짬뽕에게 과자를 주기 위해 1234번 포트를 사용하여 특정 서비스를 이용합니다.


짬뽕이가 과자를 받는 상황:
짬뽕은 해성으로부터 과자를 받기 위해 학교 내에 약속된 문을 기다리고 있습니다.
해성은 1234번 포트를 사용하여 짬뽕에게 과자를 전달하므로, 짬뽕 또한 1234번 포트를 열어서 해당 

서비스를 기다리고 있습니다. 따라서 해성과 짬뽕은 서로 같은 포트번호(1234번)를 사용하여 통신하고, 

이를 통해 과자를 주고받습니다.


단무지는 상황과 무관한 학생:
위 예시에 등장한 단무지는 이 상황과 관련이 없는 학생입니다. 단무지는 포트번호와 관련 없이 학교 내에서 

다른 공부를 하거나 친구들과 놀 수 있습니다.
포트번호는 서비스를 식별하는 데 사용되며, 애플리케이션과 서버 간의 효율적인 통신을 가능하게 해줍니다.

 

 

*바쁜 사람을 위한 깜찍한 정리

포트번호란 네트워크에서 특정 프로세스나 서비스를 식별하기 위해 사용되는 숫자이고 TCP, UDP프로토콜에서 사용된다. 포트 번호는 0부터 65535까지 범위가 있으며 일부 포트 번호는 특정 용도로 예약되어 있다. TCP는 3-way handshake를 통해 연결을 설정하며 UDP는 비연결 지향적인 프로토콜로, 신뢰성이 요구되지 않거나 실시간 통신에 사용됩니다.
728x90
반응형