소켓 응용 2/5 · FLOW
큰 파일은
조금씩 보내야 합니다.
빠른 송신자가 느린 수신자에게 계속 밀어 넣으면 버퍼가 쌓입니다. 청크, backpressure, 체크섬과 이어받기를 눈으로 확인합니다.
이 편의 핵심 질문수신자가 느릴 때 송신자는 무엇을 해야 할까?버퍼가 차면 멈추고
비면 다시 보내기
비면 다시 보내기
나쁜 결과와 안전한 결과를 비교하세요
느린 수신자에게 큰 파일을 보냅니다
보는 순서① 제어 없음 선택→② 버퍼 관찰→③ 체크섬 비교
- 1분할
- 2밀어 넣기
- 3과부하
- 4검증
실험 시작을 누르면 첫 장면부터 움직입니다1 / 8 전송
전송 버퍼12%WRITE · 계속 전송
1저장2남음3남음4남음5남음6남음7남음8남음
전체 체크섬전송 뒤 확인
계속 밀어 넣기 시나리오입니다. 실험 시작을 눌러 네 장면을 따라가세요.
시작 전
화면에서 코드로 옮길 때
이 편의 원리 세 가지
TCP 바이트 스트림 위에 길이, 청크 번호와 전송 ID를 붙입니다.
쓰기 버퍼가 차면 drain 같은 신호까지 생산을 멈춥니다.
청크 개수만 보지 않고 전체 길이와 체크섬을 확인합니다.
구현 체크리스트
최소 네 조각으로 시작하세요.
데모의 시각 요소를 실제 프로토콜 필드와 런타임 동작으로 옮기면 됩니다.
- 1프레임 헤더transferId, chunkNo, length와 전체 크기
- 2상한이 있는 버퍼메모리 사용을 제한하는 high-water mark
- 3체크포인트수신자가 디스크에 확정한 마지막 청크
- 4무결성 검사완성된 파일의 SHA-256 같은 체크섬
실험을 마쳤다면