NFS - 윈디하나의 솔라나라
|
파일을 공유하기 위해 만든
파일 시스템이다. 리눅스, BSD에서도 지원하며, 윈도에서도 Windows Services for UNIX를 설치하거나, 윈도 서버를 사용하고 있다면 NFS를 사용할 수 있다.
/export/home/share
디렉토리를 공유하도록 만든다.
root@wl ~ # vi /etc/hosts 192.168.0.11 wl2 root@wl ~ # vi /etc/dfs/dfstab share -F nfs -o rw=wl2 -d "WL2 SHARE" /export/home/share 1) root@wl ~ # shareall 2) root@wl ~ # share 3) - /export/home/share rw=wl2 "WL2 SHARE" root@wl ~ #1) -F는 파일 시스템을 지정하는 것으로 NFS의 경우
nfs로 고정되어있다.
-o
에는 옵션을 써준다. rw=wl2
의 의미는 wl2서버에서 접속시 rw(읽기/쓰기)가 권한을 준다는 뜻이다. -d의 문자는 단순한 설명문이다. 마지막은 공유할 디렉토리를 전체경로로 입력한다. 이 명령은 NFS서버를 세팅하는 가장 단순한 명령이다. 서버 세팅시 사용할 수 있는 다른 옵션에 대한 설명은 share_nfs(1M)를 참조한다./etc/dfs/dfstab
파일을 읽어 share(1M)에 인자를 주어 실행하는 명령이다. 바꿔말하면 1)의 share ~
를 커맨드에서 실행시켜도 된다. (단 /etc/dfs/dfstab
파일에 설정을 넣어두어야 시스템 재부팅시 자동으로 실행된다)/export/home/share
에 접속해 파일을 가져올 수 있도록 마운트 한다.
root@wl2 ~ # mkdir /root/share
root@wl2 ~ # vi /etc/hosts
192.168.0.3 wl
root@wl2 ~ # mount -F nfs wl:/export/home/share /root/share 1)
root@wl2 ~ #
1) wl2에서, wl에서 공유한 /export/home/share
디렉토리를 /root/share
에 마운트한다.
/etc/vfstab
파일에 등록하고, NFS 클라이언트 서비스가 부팅시에도 시작되도록 설정되어야 한다. 만약 시스템 시작중에 NFS 서버에 접속할 수 없다면, 클라이언트 부팅이 조금 느려진다.
root@wl2 ~ # vi /etc/vfstab ... wl:/export/home/share - /root/share nfs - yes - ... root@wl2 ~ # svcs | grep nfs online 3:46:12 svc:/network/nfs/cbd:default online 3:46:12 svc:/network/nfs/mapid:default online 3:46:12 svc:/network/nfs/status:default online 3:46:12 svc:/network/nfs/nlockmgr:default online 3:46:21 svc:/network/nfs/client:default root@wl2 ~ #NFS 서버는 시스템이 시작될때 공유 설정이 적용된다. 별도로 해야할 작업은 없다.
클라이언트에서 마운트를 해제한 후, 서버에서 공유를 해제한다.
클라이언트에서는 umount(1m)을 사용한다.
root@wl2 ~ # umount /nfs
서버에서는 unshare(1m)을 사용한다.
root@wl ~ # unshare /nfs
/export/home/share
에 nobody
로 파일 생성 권한이 없다면, wl2에서 root로 /root/share
에 파일을 생성할 수 없을 것이다./export/home/share
에 windy
로 파일 생성 권한이 있다면, wl2에서 windy로 /root/share
에 파일을 생성할 수 있을 것이다.예2에서 전제조건이 하나 있다. wl의 windy가 가진 UID값과, wl2의 windy가 가진 UID값이 같아야 한다. NFS에서 파일 접근은 UID값을 사용하기 때문에 wl과 wl2에서 같은 계정명의 UID가 서로 다른 경우, 다른 아이디로 보일 것이다. 간혹 계정명은 같은데 UID값이 달라 권한설정에 어려움을 겪는 경우를 많이 봐서 강조하는 것이다. useradd(1M)을 사용할때
-u xxx
를 정해 반드시 UID를 정해주어 계정이름이 같은 경우 같은 UID를 가지도록 하자.
root@wl ~ # mkdir /nfs root@wl ~ # mkdir /nfs/share root@wl ~ # share -F nfs -o ro /nfs root@wl ~ # share -F nfs -o rw /nfs/share share_nfs: /nfs/share: 부모 디렉토리(/nfs)가 이미 공유되었습니다 root@wl ~ #단 예외가 있는데, 마운트 지점이 다른 경우는 공유가 된다. ZFS를 사용하는 경우 아래와 같이 생성하면 된다.
root@wl ~ # mkdir /nfs root@wl ~ # mkdir /nfs/share root@wl ~ # zfs create rpool/nfssample root@wl ~ # zfs set mountpoint=/nfs/share rpool/nfssample root@wl ~ # share -F nfs /nfs root@wl ~ # share -F nfs /nfs/share root@wl ~ # share - /nfs/share rw "" - /nfs rw "" root@wl ~ #
/export/home
이 사용자의 기본 홈 베이스 디렉토리인데, 이는 /home
디렉토리는 automountd(1M)에 의해 사용되기 때문이기도 하다. /home
외에 /net
도 automountd 에 의해 사용된다. (/home
, /net
에 디렉토리에 일반 파일을 생성하려면, automountd(1M)를 종료해야 한다. 이 방법은 추천하지 않는다)
root@wl2 ~ # ps -ef | grep auto root 2202 1 0 10월 1 ? 0:00 /usr/lib/autofs/automountd root 2203 2202 0 10월 1 ? 0:30 /usr/lib/autofs/automountd root@wl2 ~ # svcs | grep autofs online 10월_10 svc:/system/filesystem/autofs:default root@wl2 ~ #automountd 는
/etc/auto_master
파일에 설정한다. 솔라리스를 설치하고 별다른 수정사항이 없다면 아래와 같이 되어있을 것이다.
root@wl2 ~ # cat /etc/auto_master +auto_master /net -hosts -nosuid,nobrowse /home auto_home -nobrowse root@wl2 ~ #또한
/etc/auto_home
파일도 확인해보자. 이 파일에서 auto_home 이란 이름은 /etc/auto_master
파일에서 /home
으로 시작하는 컬럼에 지정된 이름과 같은 것이다.
root@wl2 ~ # cat /etc/auto_home +auto_home root@wl2 ~ #
automount는 주로 사용자의 홈 디렉토리를 공유하기위해 사용한다. wl2 서버의 windy 사용자의 홈 디렉토리(/home/windy)를 wl서버의 windy 사용자의 홈 디렉토리(/export/home/windy를 마운트해서 만든 /home/windy)로 지정해주려 할 때 아래와 같이 하면 된다.
서버는 /export/home/windy
를 디렉토리를 생성하고, automount를 사용해 /home/windy
에 마운트해 windy 사용자를 생성한다.
root@wl ~ # mkdir /export/home/windy root@wl ~ # vi /etc/auto_home windy wl:/export/home/windy root@wl ~ # vi /etc/dfs/dfstab share -F nfs -o rw=wl:wl2 -d "windy share" /export/home/windy root@wl ~ # shareall root@wl ~ # useradd -d /home/windy -c "윈디하나" -g staff -m -u 101 -s /bin/bash windy root@wl ~ # chown -R windy:staff /export/home/windy클라이언트는 automountd 를 위해
/etc/auto_home
를 수정하고 홈 디렉토리를 automountd 가 관리하는 /home/windy
를 가리키도록 한다. 평상시에는 마운트되지 않다가 windy 가 wl2에 로그인 한 후 홈 디렉토리에 접근할 때 자동으로 마운트 될 것이다.
root@wl2 ~ # vi /etc/auto_home
windy wl:/export/home/windy
root@wl2 ~ # useradd -d /home/windy -c "윈디하나" -g staff -u 101 -s /bin/bash windy
root@wl2 ~ # su - windy
windy@wl2 ~ $ pwd
/home/windy
windy@wl2 ~ $
아래 사항을 읽어보자.
windy -proto=tcp,vers=3 wl:/export/home/windy
처럼 설정하면 된다./home/{USERNAME}
으로 변경되었다가 (위에서 설명한 대로 automountd를 통해 로컬에서 마운트 한다) 다시 11.3부터는 원래대로 /export/home/{USERNAME}
으로 변경되었다./net
디렉토리다. (단 공유된 서버의 목록은 안 보인다) /net/{HOSTNAME}
디렉토리에 가보면 현재 공유되는 자원을 확인할 수 있다.
root@wl2 ~ # cd /net
root@wl2 /net # ls -alF
총 4
dr-xr-xr-x 1 root root 1 11월 6일 14:59 ./
drwxr-xr-x 25 root root 26 11월 6일 14:59 ../
root@wl2 /net # cd /net/wl 1)
root@wl2 /net/wl # ls -alF
총 3
dr-xr-xr-x 2 root root 2 11월 6일 15:08 ./
dr-xr-xr-x 2 root root 2 11월 6일 14:59 ../
dr-xr-xr-x 1 root root 1 11월 6일 15:08 export/
root@wl2 /net/wl # cd ./export/home
root@wl2 /net/wl/export/home # ls -al
...
dr-xr-xr-x 1 root root 1 11월 3일 15:49 share
dr-xr-xr-x 1 root root 1 11월 3일 15:49 windy
root@wl2 /net/wl/export/home #
1) /net/wl
대신 /net/192.168.0.3
과 같이 wl의 IP를 써줄 수도 있고 도메인 명을 써줄수도 있다. /net/wl2
와 같이 자신의 호스트로 접속할 수도 있다.
anon
과 root
옵션이 그렇다. 윗 문단에서 root 사용자는 NFS 서버에 특별한 설정이 없다면nobody의 uid를 사용한다고 했는데, 그 특별한 설정에 대해 설명하려한다.
알 수 없는 사용자대한 기본 uid 값을 정한다. 기본값으로 nobody의 uid를 사용하도록 되어있다. 만약 이 값이 -1로 설정되어있다면
알 수 없는 사용자에 대해 접근을 거부한다. 알 수 없는 사용자란, nfs서버에 uid가 등록되어있지 않은 사용자를 말한다.
root@wl ~ # share -F nfs -o rw /nfs root@wl ~ # share -F nfs -o ro /nfsrw 또는 ro 다음에
=을 쓰고 접근을 허용할 목록을 정해주면 해당 조건에 맞는 호스트만 접근 가능해진다. 아래와 같이 사용할 수 있다.
# wlcl1 에서는 읽기 쓰기 가능, wlcl2 에서는 읽기만 가능 root@wl ~ # share -F nfs -o rw=wlcl1 ro=wlcl2 /nfs # *.solanara.net 에 속한 호스트는 읽기 쓰기 가능 root@wl ~ # share -F nfs -o rw=.solanara.net /nfs # 자신의 호스트만 읽기 쓰기 가능 (예제에서는 wl) root@wl ~ # share -F nfs -o rw=. /nfs # 192.168.0.0/16 네트워크 대역에서 접근 가능 root@wl ~ # share -F nfs -o rw=@192.168 /nfs # 192.168.0.0/16 네트워크 대역에서 접근 가능 root@wl ~ # share -F nfs -o rw=@192.168 /nfs root@wl ~ # share -F nfs -o rw=@192.168.0/16 /nfs # 192.168.0.10, 192.168.0.20 에서만 접근 가능 root@wl ~ # share -F nfs -o rw=@192.168.0.10:@192.168.0.20 /nfs # wlcl1 에서는 접근 불가, 192.168.0.0/16 에서는 접근 가능 root@wl ~ # share -F nfs -o rw=-wlcl1:@192.168 /nfs
root@wl ~ # share -F nfs -o anon=101 /nfs root@wl ~ # share - /nfs anon=101 "" root@wl ~ # chmod 777 /nfs
root@wl2 ~ # mount -F nfs wl:/nfs /nfs root@wl2 ~ # touch /nfs/sample root@wl2 ~ # ls -al /nfs/sample -rw-r--r-- 1 windy 101 0 11월 24일 10:23 /nfs/sample101은 windy 사용자의 uid 이다.
/nfs/sample
파일의 소유자가 windy 로 된 것을 확인할 수 있다.
root@wl ~ # share -F nfs -o root=wl2 /nfs
root@wl2 ~ # mount -F nfs wl:/nfs /nfs root@wl2 ~ # touch /nfs/sample root@wl2 ~ # ls -al /nfs/sample -rw-r--r-- 1 root root 0 11월 24일 10:27 sample root@wl2 ~ # chown windy /nfs/sample root@wl2 ~ # ls -al /nfs/sample -rw-r--r-- 1 windy root 0 11월 24일 10:27 sample소유자가 root 로 생성되었고, chown명령을 이용해 소유자를 바꿀 수 있다.
/etc/default/nfslogd
파일과 /etc/nfs/nfslog.conf
파일로 설정할 수 있다. 아래는 이 두개의 파일을 그대로 두고 로그를 사용하는 방법에 대해 설명한다.
root@wl ~ # vi /etc/dfs/dfstab
share -F nfs -o rw=wl2,log=global -d "WL2 SHARE" /export/home/share
root@wl ~ # shareall
root@wl ~ # share
- /export/home/share rw=wl2,log=global "WL2 SHARE"
root@wl ~ # svcadm restart network/nfs/server:default 1)
root@wl2 ~ # mount -F nfs -o vers=3 wl:/export/home/share /root/share 2)
root@wl ~ # cat /var/nfs/nfslog 3) 메시지 생략 Mon Nov 3 17:13:05 2008 0 wl2 0 /export/home/share/source/top-3.7/m_sunos5.o b _ remove r 60001 nfs3-tcp 0 * 메시지 생략1)
/etc/nfs/nfslogtab
파일이 있어야 nfslogd 데몬이 실행된다. 없다면 shareall부터 다시하자.
root@wl ~ # vi /etc/nfs/nfslog.conf
global defaultdir=/var/nfs \
log=nfslog fhtable=fhtable buffer=nfslog_workbuffer logformat=extended
root@wl ~ # vi /etc/default/nfslogd
MIN_PROCESSING_SIZE=1024
root@wl ~ # svcadm restart network/nfs/server:default
acdirmax=60,acdirmin=30,acregmax=60,acregmin=3
이다.acdirmax=30,acdirmin=30,acregmax=30,acregmin=30
과 같다.root@wl2 ~ # mount -F nfs -o ro=@192.168.0:@xxx.xxx.xxx.xxx,rw=wl:wl2:.solanara.net,actimeo=0,forcedirectio \ wl:/export/home/share /root/share root@wl2 ~ # mount -F nfs -o rw,bg,hard,nointr,rsize=32768,wsize=32768,proto=tcp,vers=3,noac,forcedirectio \ wl:/export/home/share /root/share
-o ro
옵션을 주어 공유한다)mount -o ro server1:/export/home/share,server2:/export/home/share /root/share
와 같이 ro 으로 마운트하며, HOST를 콤마로 구분해 두개 이상 지정한다.root@wl ~ # vi /etc/dfs/dfstab share -F nfs -o ro -d "windy share2" /export/home/windy2 share -F nfs -o ro -d "windy share" /export/home/windy root@wl ~ # shareall
root@wl2 ~ # mount -o ro wl:/export/home/windy2,wl:/export/home/windy /root/share root@wl2 ~ # df -k /root/share 파일시스템 K바이트 사용 가용 용량 설치지점 wl:/export/home/windy2,wl:/export/home/windy 62907203 17956504 44321627 29% /root/share root@wl2 ~ # nfsstat -m /root/share from wl:/export/home/windy2,wl:/export/home/windy Flags: vers=4,proto=tcp,sec=sys,hard,intr,llock,link,symlink,acl,rsize=1048576,wsize=1048576,retrans=5,timeo=600 Attr cache: acregmin=3,acregmax=60,acdirmin=30,acdirmax=60 Failover: noresponse=0,failover=0,remap=0,currserver=wl root@wl2 ~ #
root@wl ~ # nfsstat -s Server rpc: Connection oriented: calls badcalls nullrecv badlen xdrcall dupchecks dupreqs 0 0 0 0 0 0 0 Connectionless: calls badcalls nullrecv badlen xdrcall dupchecks dupreqs 0 0 0 0 0 0 0 Server nfs: calls badcalls 0 0 Version 2: (0 calls) null getattr setattr root lookup readlink read wrcache 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% write create remove rename link symlink mkdir rmdir 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% readdir statfs 0 0% 0 0% Version 3: (0 calls) null getattr setattr lookup access readlink 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% read write create mkdir symlink mknod 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% remove rmdir rename link readdir readdirplus 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% fsstat fsinfo pathconf commit 0 0% 0 0% 0 0% 0 0% Version 4: (0 calls) null compound 0 0% 0 0% Version 4: (0 operations) reserved access close commit 0 0% 0 0% 0 0% 0 0% create delegpurge delegreturn getattr 0 0% 0 0% 0 0% 0 0% getfh link lock lockt 0 0% 0 0% 0 0% 0 0% locku lookup lookupp nverify 0 0% 0 0% 0 0% 0 0% open openattr open_confirm open_downgrade 0 0% 0 0% 0 0% 0 0% putfh putpubfh putrootfh read 0 0% 0 0% 0 0% 0 0% readdir readlink remove rename 0 0% 0 0% 0 0% 0 0% renew restorefh savefh secinfo 0 0% 0 0% 0 0% 0 0% setattr setclientid setclientid_confirm verify 0 0% 0 0% 0 0% 0 0% write release_lockowner illegal 0 0% 0 0% 0 0% Server nfs_acl: Version 2: (0 calls) null getacl setacl getattr access getxattrdir 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% Version 3: (0 calls) null getacl setacl getxattrdir 0 0% 0 0% 0 0% 0 0%
root@wl2 ~ # nfsstat -c Client rpc: Connection oriented: calls badcalls badxids timeouts newcreds badverfs timers 1229652 3 2 0 0 0 0 cantconn nomem interrupts 0 0 2 Connectionless: calls badcalls retrans badxids timeouts newcreds badverfs 0 0 0 0 0 0 0 timers nomem cantsend 0 0 0 Client nfs: calls badcalls clgets cltoomany 1219703 3 1218231 53 Version 2: (0 calls) null getattr setattr root lookup readlink read wrcache 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% write create remove rename link symlink mkdir rmdir 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% readdir statfs 0 0% 0 0% Version 3: (1218930 calls) null getattr setattr lookup access readlink 0 0% 7567 0% 239 0% 24540 2% 3433 0% 0 0% read write create mkdir symlink mknod 743 0% 1150738 94% 47 0% 21 0% 0 0% 0 0% remove rmdir rename link readdir readdirplus 25352 2% 1162 0% 2 0% 0 0% 0 0% 3113 0% fsstat fsinfo pathconf commit 6 0% 5 0% 0 0% 1962 0% Version 4: (0 calls) null compound 0 0% 0 0% Version 4: (0 operations) reserved access close commit 0 0% 0 0% 0 0% 0 0% create delegpurge delegreturn getattr 0 0% 0 0% 0 0% 0 0% getfh link lock lockt 0 0% 0 0% 0 0% 0 0% locku lookup lookupp nverify 0 0% 0 0% 0 0% 0 0% open openattr open_confirm open_downgrade 0 0% 0 0% 0 0% 0 0% putfh putpubfh putrootfh read 0 0% 0 0% 0 0% 0 0% readdir readlink remove rename 0 0% 0 0% 0 0% 0 0% renew restorefh savefh secinfo 0 0% 0 0% 0 0% 0 0% setattr setclientid setclientid_confirm verify 0 0% 0 0% 0 0% 0 0% write 0 0% Client nfs_acl: Version 2: (0 calls) null getacl setacl getattr access getxattrdir 0 0% 0 0% 0 0% 0 0% 0 0% 0 0% Version 3: (709 calls) null getacl setacl getxattrdir 0 0% 708 99% 0 0% 1 0%
root@wl ~ # nfsstat -m /home/windy /home/windy from wl2:/export/home/windy Flags: vers=3,proto=tcp,sec=none,hard,intr,link,symlink,acl,rsize=32768,wsize=32768,retrans=5,timeo=600 Attr cache: acregmin=3,acregmax=60,acdirmin=30,acdirmax=60
calls RPC 콜 회수 badcalls RPC 계층에서 거절된 콜 회수(badlen 과 xdrcall 의 합) nullrecv 유효하지 않은 RPC콜 회수 badlen 최소한의 RPC콜 길이보다 짧은 RPC콜 회수 xdrcall XDR 디코드 할 수 없는 RPC 콜 회수 dupchecks 이중 요청 캐시에서 발견된 RPC 콜 개수 dupreqs 이중 요청 회수
calls RPC 콜이 만들어진 회수 badcalls RPC 계층에서 거절된 콜 회수 badxids 서버로부터 호출에 부합하지 않은 미해결된 응답을 받은 회수. 서버와 클라이언트 사이의 네트워크에 물리적인 문제가 있을 수 있다. timeouts 서버로부터 응답이 없어 타임아웃된 회수 newcreds 인증정보가 갱신된 회수 badverfs 응답에 올바르지 않은 검사자로 인한 호출 실패 회수 timers 계산된 타임아웃 값이 호출시 최소로 정의된 타임 아웃 값보다 크거나 작은 회수. 타임 아웃으로 처리 되진 않았지만 엄밀하게 말해 타임 아웃 된 호출 회수. cantconn 서버와의 접속에 실패로 인한 호출 실패 회수 nomem 메모리 할당 실패로 인한 호출 실패 회수 interrupts 처리가 완료되기전 시그널에 의해 중단된 콜 회수 retrans 클라이어늩에서 서버로부터 응답을 기다리는 도중 타임아웃되어 재전송한 회수. (connection-less인 경우) cantsend 클라이언트에서 RPC 요청을 보낼 수 없는 회수. (connection-less인 경우)
sec 아래값중 하나 none 인증 없음 sys 유닉스 스타일 인증 (UID, GID) short 쇼트핸드 유닉스 스타일 인증 dh DES 스타일 인증(암호화된 타임스탬프) krb5 커버로스 v5 스타일 인증 krb5i 커버로스 v5 스타일 인증. 무결성 지원. krb5p 커버로스 v5 스타일 인증. 보안 지원. hard 하드 마운트 soft 소프트 마운트 intr 하드 마운트시 취소 가능 nointr 하드 마운트시 취소 불가 noac 속성을 캐시하지 않음 rsize 읽기 버퍼 크기(바이트) wsize 쓰기 버퍼 크기(바이트) retrans NFS 재전송 timeo NFS 타임아웃 초기값(1/10초) nocto No close-to-open consistency. llock Local locking being used (no lock manager). grpid System V group id inheritance. rpctimesync RPC 시간 동기화 아래의 플래그값은 시스템 내부적으로 사용함: printed "응답없음" 메시지 출력됨 down 서버 다운 dynamic 동적 전송 크기 수정 link 서버는 링크를 지원 symlink 서버는 심볼릭 링크를 지원 readdir instead of readdirplus 대신 readdir 을 사용 acl 서버는 NFS ACL을 지원 아래 플래그 값은 추가적인 마운트 정보와 관련됨: vers NFS 버전 proto 프로토콜 아래와 같은 필드를 사용해 속성 캐시 타임아웃 값을 수정할 수 있는 기능을 제공해주기도 한다: acregmin 캐시된 파일 속성을 가지고 있을 최소 시간. 초 acregmax 캐시된 파일 속성을 가지고 있을 최대 시간. 초 acdirmin 캐시된 디렉토리 속성을 가지고 있을 최소 시간. 초 acdirmax 캐시된 디렉토리 속성을 가지고 있을 최대 시간. 초 아래 필드는 페일오버 정보를 제공해준다(NFS Replacation을 참고): noresponse 서버가 응답을 하지 않은 회수 failover 페일오버되어 새로운 서버가 선택된 회수 remap 파일이 새 서버로 재평가된 회수 currserver 현재 제공되고 있는 서버가 어느 서버인지 정함. System Administration Guide: IP Services 을 읽어보자. 아래 필드는 동적 재전송 정보를 제공해준다. 이 아이템들은 동적 재전송을 사용중일 때에만 표시된다(nfsstat -m): srtt 부드러운 라운드 트립 시간 값(smoothed round-trip times). 밀리초 dev 예측된 편차(Estimated deviation). 편차의 평균. 밀리초 cur 현재 백오프된 재전송 값. 현재 예상된 응답 시간. 밀리초
RSS ATOM XHTML 5 CSS3 |
Copyright © 2004-2023 Jo HoSeok. All rights reserved. |