기술 · 실용 가이드
curl 오류 56 “Recv failure”? 재시도 전에 리셋 단계를 찾으세요
“Connection reset by peer”는 수신 경로가 갑자기 끝났다는 뜻일 뿐 원인 장치나 프로세스를 가리키지 않습니다. 실제 curl, 바이트 방향과 마지막 완료 단계를 보존하세요.

“Connection reset by peer”는 수신 경로가 갑자기 끝났다는 뜻일 뿐 원인 장치나 프로세스를 가리키지 않습니다. 실제 curl, 바이트 방향과 마지막 완료 단계를 보존하세요.
CURLE_RECV_ERROR는 코드56이며 네트워크 수신 실패입니다. TCP reset은 endpoint나 경로 장비에서 올 수 있어 curl만으로 발신자를 증명할 수 없습니다.
1. 실패 요청을 안전하게 고정
curl 실행파일, `curl -V`, host/port, proxy 변수, container/service, DNS와 비밀을 지운 명령을 기록하고 오류56, 시간, request ID, 송수신 bytes를 보존합니다.
재시도 전에 method와 부작용을 분류합니다. POST, PUT, upload는 응답이 없어도 처리됐을 수 있으므로 idempotency key나 server 상태를 먼저 확인합니다.
2. 마지막 완료 단계 표시
`--verbose` 또는 비밀을 지운 시간 trace로 한 번 재현하고 TCP, CONNECT, TLS, request header/body, response header/body 중 마지막 확인 지점을 표시합니다.
방향이 중요합니다. upload 중 reset과 일부 response 이후 reset은 다릅니다. 길이와 bytes는 보존하되 credential과 민감한 body는 저장하지 않습니다.
3. 연결 소유자 연계
timestamp, connection tuple, hostname, protocol, request ID를 origin, reverse proxy, load balancer, egress log와 맞춥니다. reset은 connection event이지 항상 origin app은 아닙니다.
direct와 proxy를 비교할 때 한 변수만 바꾸고, 다른 client의 성공은 DNS, IP family, proxy, TLS, HTTP, payload가 같음을 먼저 증명합니다.
4. 원인 하나만 변경
첫 모순 증거를 소유한 경계를 고칩니다. server가 요청을 읽거나 명시적으로 거절하게 하고, proxy route/idle policy, crash worker, protocol 기대를 수정합니다. TLS 검증을 끄지 마세요.
`--retry`는 작업 의미와 설치된curl의 조건을 확인한 후에만 씁니다. 성공해도 중복 작업이나 임계값을 숨길 수 있습니다.
5. 같은 경로와 payload 승인
같은 user, binary, network, payload class에서 exit0, 예상 status, 완전한 body/checksum, peer log의 reset 없음과 두 번째 성공을 요구합니다.
마지막 정상 단계, 양방향 bytes, reset 관찰자, 연계 log, 단일 변경과 승인 결과를 간단히 남깁니다.
