강의

멘토링

로드맵

기술면접 준비, 네트워크는 이 3가지 주제부터 보세요

구운코드

2026. 07. 10. 11:47

수정됨

개발자 교육 회사에서 일할 때, 수강생들이 기술면접에서 받은 질문을 복기해서 전달해 주곤 했어요. 여느 시험과 마찬가지로, 기술면접에도 자주 출제되는 주제가 있었어요. 이 글에서는 그중 네트워크 주제 한 가지를 다룰 거예요.

다만 그 정보가 잘못됐을 수도 있으니, 정말 자주 출제되는 주제인지 확인이 필요하다고 생각했어요. 그래서 국내 기술면접 대비용으로 정리된 GitHub 레포 중 스타 수 상위 5곳의 네트워크 파트를 전부 살펴보고, 각 주제가 몇 곳에서 다뤄지는지 집계했어요.

(확인한 레포: Interview_Question_for_Beginner, tech-interview(WeareSoft), tech-interview-for-developer(gyoogle), backend-interview-question, Ready-For-Tech-Interview)

다섯 곳 모두에서 다루는 주제는 딱 세 가지예요. 이 세 가지를 한 편씩 차례로 다뤄보려고 해요. 이 글은 그 첫 편으로, TCP 연결 과정인 3-way handshake가 무엇인지 알아볼게요.

TCP 연결을 맺는 과정

TCP로 통신할 때는, 데이터를 주고받기 전에 클라이언트와 서버가 먼저 연결을 맺어요. 여기서 연결을 맺는다는 건 전선을 잇는 것 같은 물리적인 일이 아니라, 양쪽이 "이제 데이터를 주고받을 준비가 됐다"고 서로 확인하는 절차예요.

화상 면접이 시작되기 전에 이런 대화를 주고받잖아요. "제 말 들리세요?" — "네, 들려요. 제 말도 들리시나요?" — "네, 잘 들려요." 이 확인이 끝난 다음에야 본 질문이 시작돼요. 클라이언트와 서버도 데이터를 주고받기 전에 이런 확인을 거쳐요. 이 절차가 3-way handshake예요.

이 절차에서 주고받는 메시지에는 SYN이나 ACK라는 표시가 붙어요. SYN은 연결을 시작한다는 표시, ACK는 상대가 보낸 메시지를 잘 받았다는 표시예요. 아직 데이터를 주고받기 전이니까 메시지에 보통 데이터가 담기지는 않아요. 확인 절차는 다음 세 단계로 진행돼요.

  1. 클라이언트가 연결을 시작하기 위해 서버에 SYN 메시지를 보내요.

  2. 서버가 SYN과 ACK가 함께 붙은 메시지를 보내요. 클라이언트의 메시지를 잘 받았고, 서버도 연결을 시작한다는 뜻이에요.

  3. 클라이언트가 ACK 메시지를 보내요. 서버가 이 메시지를 받으면 연결이 맺어져요.

SYN 메시지와 ISN

SYN 메시지에는 연결을 시작한다는 표시만 있는 게 아니에요. 숫자가 하나 담겨요.

연결을 맺고 나면 클라이언트도 서버에 데이터를 보내고, 서버도 클라이언트에 데이터를 보내요. 데이터는 여러 조각으로 나뉘어서 보내지는데, 받는 쪽이 이 조각들을 순서대로 맞추려면 데이터에 번호가 매겨져야 해요.

그 번호를 100부터 매기기 시작한다면, 이 시작 번호 100이 SYN 메시지에 담기는 숫자, ISN(Initial Sequence Number)이에요. 1단계에서 클라이언트의 ISN이, 2단계에서 서버의 ISN이 SYN 메시지에 담겨요.

"메시지를 두 번만 주고받으면 안 되나요?"

면접에서 위 제목과 같은 질문이 나올 수도 있어요.

두 번만 주고받으면 클라이언트가 서버가 보낸 SYN 메시지에 대한 ACK 메시지를 보내지 않는다는 뜻이 되는 거예요. ACK 메시지를 받지 못한 서버는 자신의 ISN이 클라이언트에게 전달되었는지 알 수 없어요.

전달되지 않았다면 클라이언트는 서버가 보내는 데이터를 순서대로 맞출 수 없는데, 서버는 그런 상황인지 아닌지 모른 채 데이터를 보내야 해요. 그래서 서버가 마지막 ACK 메시지를 받아야 연결이 맺어져요.

이 글은 제가 만든 네트워크 교재의 내용을 바탕으로 쓴 글이에요. 교재에서는 글만으로는 머릿속에 안 그려지는 개념은 그림을 통해서 설명하고, 복잡한 과정은 한 단계씩 나눠서 설명해요.

교재가 궁금하다면 아래 링크를 눌러 확인해 보세요.

교재 확인하러 가기