NFSv3의 경우는 rpcbind with portmapper로 사용하여,
nfs server & nfs client가 통신하는 것으로 파악하고 있습니다.
아래는 제가 이해하고 있는 것을 정리한 내역 입니다.
1. nfs client는 nfs 서비스를 제공하는 데몬들의 포트들을 직접적으로 알지 못하며,
nfs client -> nfs서버 방향으로,
nfs client가 (nfs 서비스가 필요할 경우) 원격지의 fixed well known port udp or tcp / 111로 listen하고 있는 portmapper에게 nfs services를 제공하는 port list를 요청 및 제공 받음
nfs client는 이러한 정보를 바탕으로, 원격서버에 있는 nfs daemon들에게 필요한 요청 및 응답을 받음
요약하면, nfs client는 원격지의 portmapper의 ip/port만 알면, portmapper를 통하여 dynamic하게 할당된 관련 rpc에 등록한 데몬들의 ports 번호를 알 수 있게 됨
질문1) nfs 절차를 위하여, 굳이 고정된 포트 번호가 아닌 rpcbind에 개별 데몬들의 서비스 및 port를 등록하는 절차를 수행하는 이유가 궁금합니다.
느낌상으로는 nfs 가 여러개의 포트들을 사용하니,
> 1024 well known ports를 사용 과다 사용하는 걸 피하고자 한 것 같기는 한데,
< 1024 포트들을 고정으로 사용 해도, 될 거 같기는 한데 굳이 rpc를 사용한 이유가 궁금합니다.
구글링을 해 보아도, 이러한 히스토리/사유를 설명한 글이 안 보이네요
질문2) nfs를 사용하기 위하여, 굳이 이렇게 다수의 포트 번호를 사용한 이유가 궁금합니다.
오래전 서버 성능 부족에 따른 부하 분산등의 이유로, 프로세스 분리에 따른 포트 번호가 많아 지게 된 것 일런지요 ?
아시는 분의 조언 부탁 드려 봅니다.
------
NFS_SERVER. NFS_CLIENT
portmapper (rpcbind) / tcp 111 <---------------> a
nfs / tcp 2049 <-------------------------------> b
mountd / tcp > 1024 <-------------------------> c
statd / tcp > 1024 <----------------------------> d
.....
lock / tcp > 1024 <------------------------------> n
¹öÀüÀÌ ¿Ã¶ó°¡¸é¼ ±â´ÉÀÌ ÇÊ¿äÇߴµ¥ NFS¿¡¼´Â ±×·± ±â´ÉÀÌ ¾ø°í, ±×·¡¼ NFSÇÏ°í º°µµ·Î ±â¼úÀÌ ¸¸µé¾îÁö°ï ÇÕ´Ï´Ù.
LOCKD°¡ ´ëÇ¥Àû ÀÔ´Ï´Ù.