오라클은 클라이언트와 DB와의 최초 연결을 맺기 위해 1521 port를 사용 합니다.

양쪽이 모두 connection이 끝나면 임의의 새로운 port를 사용하게 됩니다.

따라서, 우선 Initiate connection이 성공적으로 이루어 지면 1521 port와 상관없이 서비스가 가능합니다.

하지만, 최초 연결 (Initiate connection)을 맺기 위해 기존 TCP connection과 같은 방법 (3way hands shake)으로 connection이 이루어 진다면

최초 연결을 맺는 과정에서 1521 port가 필요합니다. 즉, outbound시에도 1521 port가 열려 있어야 됩니다.

[클라이언트와 서버의 연결관련하여 테스트 한 결과]

TCP통신을 위한 연결을 맺기위해 최초 3way hands shake를 하게 되므로

outbound 1521 port를 차단하게 되면 최초 클라이언트와 서버간의 connection이 안되게 됩니다.

때문에 1521 port가 이미 잘 알려진 port이기 때문에 방화벽에서 차단을 해야하는 경우라면, 

Listener Port를 1521대신 다른 port (임의의 port)를 사용 하여 inbound / outbound를 모두 open 하여야 합니다.

*3-way hand shake

TCP 3 Way Handshake는 TCP/IP프로토콜을 이용해서 통신을 하는 응용프로그램이 데이터를 전송하기 전에 

먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미합니다.

다시 말해 양쪽 모두 데이터를 전송할 준비가 되었다는 것을 보장하고, 실제로 데이터 전달이 시작하기전에 

한쪽이 다른 쪽이 준비되었다는 것을 알수 있도록 해주며 양쪽 모두 상대편에 대한 초기 순차일련번호를 얻을 수 있도록 해줍니다.

(SYN은 ‘synchronize sequence numbers’, 그리고 ACK는’acknowledgment’ 의 약자)

1) Client -> Server : TCP SYN

A클라이언트는 B서버에 접속을 요청하는 SYN 패킷을 전송. 이때 A클라이언트는 SYN 을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태.

2) Server -> Client : TCP SYN ACK

B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK 와 SYN flag 가 설정된 패킷을 발송하고 A가 다시 ACK으로 응답 대기. 

이후 B서버는 SYN_RECEIVED 상태.

3) Client -> Server : TCP ACK

A클라이언트는 B서버에게 ACK을 보내고 이후로부터는 연결이 이루어지고 데이터 전송이 가능해짐. 


(위의 테스트 결과는 ORACLE DB파트너 답변 참고하였습니다.)

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다