[질문] NTP TimeServer 너무 어렵고 이상하네요 ㅠ_ㅠ
글쓴이: minamolo / 작성시간: 수, 2008/06/04 - 9:37오전
- NTP에서 Port를 변경할 수 없다는 답변을 들었는데
1. ntpdate -u time.kriss.re.kr 이렇게 시도를 하게 되면 다른 아무 포트로 자동으로 연결이 되는 것인지요?
2. 만약 NTP Server 에서 다른 124 Port가 열려 있다면, /etc/services 파일의 npt 항목의 udp의 Port 번호를 변경 해주면 그 포트로 연결이 되는지 궁금 합니다.
(Port 번호를 변경 하고 ntpdate -d 로 시도 해보면 포트가 변경 된것 처럼 보이던데)
3. 그렇다면 NTP는 TCP로는 불가능 한것인지요?
제가 공부한 찾아본 내용이 막 뒤섞여서 질문이 많고 정리가 덜된것 같아서 죄송합니다.
아시는 분있으시면 자세한 설명 좀 부탁 드릴게요 (__)
Forums:
일단 port와 udp에 대해서 이해합시다.
port에 대해서 이해 하셔야겠네요.
일반적으로 하나의 컴터(실제로는 네트웍카드 하나)에 하나의 아이피를
지정할 수 있습니다.
그 컴터 안에는 여러가지 프로그램들이 동시에 실행됩니다.
port란 그 프로그램들을 구분하기 위해서 고안된 개념입니다.
몇 번 포트는 무슨 프로그램이다라고 연결(bind)해 두는 겁니다.
그 중에 ntp서버가 있겠죠.
ntp는 UDP 123번 포트로 데이터가 들어 오기를 기다리고 있습니다.
표준으로 123번이라고 제정되어 있습니다.
포트를 변경할 수 없다는 말은 123에서 다른 포트로 바꿀 수가 없다는 말입니다.
하지만 다른 서버 프로그램들(웹 서버 프로그램 같은거)은
표준이외의 포트로 변경 할 수 있습니다.(웹 서버는 80번입니다)
그럴려면 접속하려는 사람이 그 포트가 몇번인지 미리 알고 있어야 합니다.
ntp서버가 하는 일은
네트웍로 다른 컴터가 시간을 물어 보면 그 시간을 답해 주는 일입니다.
한 번에 처리가 끝나고 데이터의 순서가 중요하지 않기 때문에
UDP전송방식으로 사용합니다.
TCP정송방식은 좀 더 복잡한 작동이 필요할 때 사용하는 방식입니다.
UDP의 경우 접속을 유지하지 않기 때문에
데이터를 받기 위해서
별도의 포트를 열어 두어야 합니다.
ntpdate의 경우
시간을 물어 보기 위해 서버의 UDP 123번으로 데이터를 보내고
데이터를 받기 위해 임의 포트를 열어 둡니다.
(포트 번호도 보내게 됩니다.)
ntp서버는 위의 임의의 포트로 응답을 보내게 됩니다.
문제는 1024이하의 포트번호는 서버용으로 많이 사용하기 때문에
root유저가 아니면 데이터 받기용으로 열 수가 없습니다.
그리고 방화벽에서 1024이하의 포트로 들어오는 데이터를
막아 두는 경우도 많기 때문에
데이터를 받을 수 없는 경우가 생길 수 있습니다.
그래서 ntpdate명령에 -u옵션으로 1024이상의 포트로
데이터를 받도록 정의하는 것입니다.
/etc/services
파일은 "몇번 포트는 무슨 서비스다"를 정의하는 파일입니다.
포트번호만으로는 사람이 읽기 불편하기 때문에
포트번호 대신에 이 파일을 참고해서 이름으로 변환해서 보여주기용 등으로 사용됩니다.
그 이외에는 아무 효과도 없습니다.
(inetd에서 포트 매칭용으로 사용하는가 보군요)
1:아니요 utp 123으로 시간을 물어보는 데이터를 보냅니다. (접속개념이 없음)
대신에 자신의 포트번호를 1024보다 높은 번호로 정의합니다.
2:아니요 결과는 동일합니다.
3:TCP로는 불가능합니다. (서버가 udp포트를 열어 놓았으므로)
이상 답변이 되셨으면 합니다.
댓글 달기