탐색기에 보이는 건 목록일 뿐이에요. 열기·저장·복사 전부 SMB 요청으로 바뀌어 NAS에 전달되고, 실제 작업은 NAS가 해요.
NAS 미니랩 2/4 · SMB 파일 공유
더블클릭 한 번, 그 뒤엔 대화가 있습니다.
네트워크 드라이브의 파일은 로컬처럼 보이지만 실제로는 NAS에 있습니다. 여는 순간 PC와 NAS는 연결·로그인·권한 확인·조각 읽기 대화를 나누고, 서버는 단계마다 확인합니다. 로그인이 되어도 권한이 없으면 거기서 끝.
요청·응답의 연속
아래 파란 버튼만 누르세요
더블클릭 뒤에 오가는 메시지를 따라가세요
더블클릭하면 여기로 메시지가 오가요.
파일 조립 — photo.jpg
데이터 조각이 도착하면 여기가 채워져요.
지나온 기록
더블클릭하면 단계마다 기록이 쌓여요.
시나리오를 고르고 더블클릭을 누르세요. 로컬 파일처럼 보이는 더블클릭 뒤에서, PC와 NAS가 나누는 대화를 한 단계씩 보여드려요.
원리 세 가지만
네트워크 드라이브가 로컬과 다른 이유
연결 → 로그인(인증) → 공유 권한(인가) → 파일 핸들. 하나라도 통과하지 못하면 그 자리에서 거부돼요. 로그인과 권한은 별개예요.
큰 파일은 요청·응답을 여러 번 오가며 조각으로 받아요. 왕복이 쌓이는 만큼 느려지는 것 — 네트워크 드라이브가 잠깐 버벅이는 이유예요.
이 데모에 대하여
더블클릭 한 번에 오가는 대화를 펼칩니다
네트워크 드라이브에서 파일을 여는 일은 화면상으로는 클릭 한 번이지만, 그사이에 정해진 순서의 대화가 오갑니다. 이 화면은 그 대화를 한 줄씩 쌓아 가며 보여줍니다. 특히 로그인에 성공했는데도 폴더를 못 여는 상황을 따로 만들어 둔 이유는, 신원을 확인하는 단계와 권한을 확인하는 단계가 서로 다른 시점에 일어난다는 것이 이 프로토콜에서 가장 자주 오해되는 부분이기 때문입니다.
- ‘파일 열기’로 시작해 연결부터 로그인까지 두 단계를 봅니다.
- 로그인이 끝난 시점에 아직 아무 폴더에도 접근하지 않았다는 점을 확인합니다.
- 폴더에 붙는 단계와 파일을 여는 단계가 따로 있는 것을 봅니다.
- 파일을 조각으로 나눠 받는 단계에서 받은 조각 수가 늘어나는 것을 확인합니다.
- 마지막에 파일을 닫는 단계까지 있는지 봅니다.
- ‘권한 없는 폴더’로 바꿔 어느 단계까지는 똑같이 진행되는지 비교합니다.
- 거절이 일어나는 정확한 시점을 앞 시나리오와 맞춰 봅니다.
- 두 시나리오의 메시지 목록에서 앞부분이 몇 줄까지 동일한지 세어 봅니다.
- 거절된 쪽에서 파일 이름이 한 번도 언급되지 않는다는 점을 확인합니다.
- 성공 시나리오에서 요청과 응답이 각각 몇 번씩 오갔는지 세어 봅니다.
- 받은 조각 수 표시가 0 에서 3 까지 어떻게 올라가는지 따라가 봅니다.
- 닫기 단계를 건너뛰면 무엇이 남는지 한계 항목과 함께 읽어 봅니다.
대화의 순서가 말해 주는 것
01
연결과 로그인은 다른 단계입니다.
먼저 정해진 포트로 연결을 열고, 그다음에 계정을 증명해 세션을 받습니다. 연결이 됐다고 로그인이 된 것이 아니고, 방화벽 문제로 연결 자체가 막힌 경우와 계정이 틀린 경우는 증상이 다릅니다. 화면이 두 단계를 나눠 보여주는 것은 문제가 생겼을 때 어느 쪽인지 구분해서 봐야 하기 때문입니다.
02
로그인은 신원 확인일 뿐입니다.
세션을 받았다는 것은 이 계정이 맞다는 것까지만 확인된 상태입니다. 어느 폴더를 볼 수 있는지는 그다음에 폴더별로 따로 확인합니다. 권한 없는 폴더 시나리오에서 로그인이 정상적으로 끝나는 것이 그 증거이고, 계정은 맞는데 폴더가 안 열린다는 상황이 이상한 일이 아니라 설계된 동작이라는 점을 보여줍니다.
03
폴더에 붙는 단계가 따로 있습니다.
파일을 열기 전에 어느 공유 폴더를 쓸 것인지 먼저 지정하고 그 폴더에 대한 접근 권한을 확인받습니다. 거절이 일어난다면 대개 이 시점이고, 파일 이름이 맞는지 틀리는지는 아직 보지도 않은 상태입니다. 그래서 존재하지 않는 파일을 요청했을 때와 권한이 없을 때의 응답이 서로 다른 단계에서 나옵니다.
04
파일은 한 번에 오지 않습니다.
파일을 열었다고 내용이 통째로 넘어오는 것이 아니라, 필요한 만큼 나눠서 읽습니다. 화면에서 받은 조각 수가 하나씩 늘어나는 것이 그 표현입니다. 큰 파일을 열 때 처음 몇 초 만에 앞부분만 먼저 보이는 것도 같은 이유이고, 네트워크가 느릴 때 이 왕복 횟수가 그대로 체감 속도가 됩니다.
05
닫는 단계까지 있어야 끝납니다.
다 읽고 나면 파일을 닫는 요청을 보냅니다. 이 단계가 있어야 서버가 잡고 있던 자원을 놓고 다른 사람이 그 파일을 쓸 수 있습니다. 프로그램이 비정상 종료되어 이 단계가 빠지면 파일이 잠긴 채로 남는 일이 생기는데, 여러 사람이 같은 폴더를 쓸 때 겪는 잠금 문제의 뿌리가 여기 있습니다.
06
두 시나리오가 같은 형식을 씁니다.
성공하는 경우와 거절되는 경우가 같은 자료 구조로 되어 있어서, 메시지 목록을 나란히 놓고 어디까지 같은지 바로 비교할 수 있습니다. 거절 시나리오가 더 짧은 것이 아니라 중간에 끊기는 것이며, 앞부분이 완전히 동일하다는 사실이 로그인과 권한이 별개라는 결론의 근거가 됩니다.
07
메시지 이름을 그대로 노출했습니다.
화면에 나오는 각 요청의 이름은 이 데모가 붙인 별명이 아니라 프로토콜 문서에 있는 단계들을 한글로 옮긴 것입니다. 실제로 통신 내용을 잡아서 볼 일이 생기면 같은 순서로 같은 이름들이 지나가므로, 화면에서 익힌 순서가 그대로 쓰입니다.
08
왕복 횟수가 곧 체감 속도입니다.
파일 하나를 여는 데도 연결 · 로그인 · 폴더 지정 · 열기 · 읽기 · 닫기가 차례로 필요하고, 각 단계마다 요청과 응답이 한 번씩 오갑니다. 회선이 빨라도 한 번 오가는 데 걸리는 시간이 길면 이 횟수가 그대로 지연으로 쌓입니다. 작은 파일을 많이 여는 작업이 큰 파일 하나를 옮기는 것보다 훨씬 느리게 느껴지는 이유가 대역폭이 아니라 이 왕복 수에 있습니다.
09
거절도 정상적인 응답입니다.
권한이 없다는 답은 오류가 아니라 프로토콜이 정의해 둔 정상 응답 중 하나입니다. 그래서 연결이 끊기지 않고 세션도 그대로 유지되며, 다른 폴더에는 이어서 접근할 수 있습니다. 화면에서 거절 뒤에도 대화가 끊긴 것처럼 보이지 않게 한 것은 이 점을 반영한 것입니다.
절차의 뼈대만 보여줍니다.
브라우저는 어떤 파일 서버에도 접속하지 않으며, 화면의 모든 메시지는 미리 만들어 둔 것입니다. 실제 프로토콜에는 여기 없는 것이 훨씬 많은데, 버전을 협상하는 단계, 통신 내용을 암호화하고 위조를 검사하는 기능, 자주 쓰는 내용을 클라이언트가 들고 있는 캐시, 여러 사람이 같은 파일을 열었을 때의 잠금 처리, 연결이 끊겼다 붙었을 때 이어서 하는 복구가 모두 빠져 있습니다. 화면의 조각 세 개는 나눠 받는다는 사실을 보여주기 위한 최소 단위이고 실제 크기와는 무관합니다. 권한 문제를 실제로 진단할 때는 공유 폴더 쪽 설정과 파일 시스템 쪽 설정이 각각 따로 있고 둘 중 더 엄격한 쪽이 적용되므로, 이 화면의 단계만으로는 원인을 다 짚을 수 없습니다.
참고 자료Microsoft — SMB 2/3 프로토콜 규격 ↗Microsoft — 서비스별 네트워크 포트 요구 사항 ↗
실험을 마쳤다면