커넥션 타임아웃

전화 신호음이 한참 울려도 받지 않으면 통신사가 통화를 끊어주듯, 서버가 문을 열어줄 때까지 기다리는 최대 시간이에요.

정의 커넥션 타임아웃(Connection Timeout)은 스마트폰이나 컴퓨터가 상대방 서버에 대화를 시작하자고 신호를 보낸 뒤, 정해진 시간 안에 아무런 응답이 오지 않아 연결 시도를 스스로 포기하는 제한 시간이에요.

전화 신호음이 계속 울리면 왜 그냥 끊어버릴까요?

친구가 전화를 받지 않을 때 신호음이 무한정 울리도록 전화기를 붙잡고 있는 사람은 없어요. 보통 30초에서 1분 정도 신호가 가다가 응답이 없으면 통신사가 알아서 안내 음성과 함께 통화를 종료하죠. 만약 끝없이 신호음만 간다면 전화를 건 사람도 다음 일을 하지 못한 채 계속 멈춰 서 있게 될 거예요.

인터넷 세상에서도 똑같은 규칙이 매 순간 적용돼요. 스마트폰으로 특정 웹사이트나 모바일 앱에 접속할 때, 우리 기기는 먼저 목적지 서버 컴퓨터에 "지금 대화할 준비가 되었나요?"라는 인사 신호를 전송해요.

하지만 목적지 서버의 전원이 꺼져 있거나 전산망 케이블이 끊어졌다면 아무런 대답도 돌아오지 않아요. 응답이 올 때까지 무작정 기다리면 앱 화면은 하얗게 멈추고 기기의 배터리와 메모리만 낭비돼요. 그래서 프로그램들은 미리 정해 둔 대기 시간까지만 기다린 뒤, 반응이 없으면 연결 시도를 깔끔하게 포기하도록 설계되어 있어요.

커넥션 타임아웃의 원리와 동작 과정 스마트폰 응답 없는 서버 1. 연결 요청 전송 2. 응답 대기 (시간 측정) 3. 시간 초과 시 연결 포기

조금 더 정확히 말하면: 악수가 끝나야 대화가 시작돼요

조금 더 정확히 말하면, 커넥션 타임아웃은 실제 데이터를 주고받는 과정에서 터지는 문제가 아니라 대화 통로를 처음 만드는 단계에서 발생해요.

인터넷에서 두 컴퓨터가 통신할 때는 '3단계 악수(3-Way Handshake)'라는 절차를 거쳐요. 내 스마트폰이 먼저 "연결해도 될까요?"라며 손을 내밀고(SYN), 서버가 "좋아요, 연결합시다"라고 대답하며(SYN-ACK), 다시 내 기기가 확인 신호(ACK)를 보내야 안전한 연결 통로가 비로소 완성돼요.

그런데 서버 앞을 지키는 방화벽(보안 시스템)이 허락되지 않은 접근이라며 신호를 몰래 버리거나, 중간 네트워크 장비에서 데이터가 유실되면 첫 악수가 성립하지 않아요. 내 컴퓨터는 대답을 기다리며 정해진 타이머를 작동시키고, 약속된 초 단위 시간이 만료되는 순간 접속 실패 에러를 띄우게 돼요.

읽기 타임아웃(Read Timeout)과의 결정적 차이

많은 분이 커넥션 타임아웃을 읽기 타임아웃(Read Timeout)과 자주 혼동하곤 해요. 두 현상은 에러가 발생하는 시점과 원인이 완전히 달라요. 식당에 빗대어 보면 이 차이를 아주 명쾌하게 이해할 수 있어요.

커넥션 타임아웃은 식당 문이 굳게 잠겨 있거나 주소가 잘못되어, 가게 안으로 발을 들이지도 못하고 문밖에서 서성이다 돌아가는 상황이에요. 대화 통로 자체가 열리지 않은 것이죠.

반면에 읽기 타임아웃은 식당 안에 정상적으로 입장해서 점원과 대화하고 음식 주문까지 끝마친 상태예요. 그런데 주방에서 주문이 너무 밀려 1시간이 지나도록 음식이 나오지 않아 손님이 결국 기다리다 지쳐 나가는 상황이에요.

따라서 커넥션 타임아웃 오류가 발생했다면 서버 전원이 내려갔거나 주소 설정이 잘못되었을 가능성이 크고, 읽기 타임아웃 오류가 떴다면 서버 내부의 복잡한 연산 작업이 지연되고 있을 가능성이 높아요.

🤔 흔한 오해

✕ 오해

커넥션 타임아웃은 인터넷 속도가 느려서 동영상이 도중에 끊길 때 발생하는 에러다.

✓ 사실

동영상이 끊기는 것은 데이터를 받아오는 도중에 생긴 문제예요. 커넥션 타임아웃은 데이터를 전송받기는커녕 서버와 '첫 연결(악수)'조차 맺지 못했을 때 발생해요.

🧺 일상에서 만나요

1 접속하려는 사이트 서버 점검 중이거나 다운되었을 때 웹 브라우저에 '연결 시간 초과' 안내문이 떠요.
2 와이파이 신호가 너무 약해 공유기와 첫 통신 신호를 주고받지 못할 때 앱 접속이 취소돼요.
💡 그러니까 한마디로

서버와 첫 통신 통로를 연결할 때까지 기다려 주는 최대 제한 시간이에요.