커찬님의 면접 결과

20

총점

5

질문 수

0

좋아요

10

조회수

종합 평가

네트워크 기초 개념에 대한 전반적인 이해도는 양호하며, TCP와 UDP의 차이점과 3-way handshake의 흐름을 파악하고 계시는 점이 좋습니다. 다만 용어의 정확성 측면에서 개선이 필요한데, 'CON' 대신 'SYN', '연결 주도' 대신 '연결 지향', 그리고 소켓을 프로토콜이 아닌 통신 인터페이스로 이해하시고, 포트 바인딩 실패 시 프로세스 종료가 아닌 에러 반환이 정확한 동작입니다. 네트워크 프로그래밍 관련 서적이나 실제 소켓 프로그래밍 실습을 통해 정확한 용어와 세부 동작 원리를 보완하시면 더욱 견고한 CS 기초를 갖추실 수 있을 것입니다.

질문별 상세 분석

커뮤니티 공개
Q1B

TCP와 UDP의 차이점에 대해 설명해주세요.

응답 내용

TCP는 연결 주도 프로토콜로써 클라이언트와 서버가 연결된 이후에 통신을 주고받음을 의미합니다. UDP는 연결이 되었는지 확인하지 않고 전송하는 프로토콜로써, 연결성이 확인되지 않는 대신 더 빠르게 데이터를 주고받을 수 있습니다.

AI 피드백

TCP와 UDP의 기본적인 차이점을 잘 이해하고 계시는 것 같습니다. 연결 지향적 특성과 속도 차이에 대한 설명이 정확합니다. 다만 답변을 더욱 완성도 있게 만들기 위해서는 신뢰성(reliability) 측면에서 TCP는 데이터 전송 보장과 순서 보장을 제공하지만 UDP는 그렇지 않다는 점, 그리고 실제 사용 예시를 추가하시면 좋겠습니다. 예를 들어 TCP는 웹 브라우징(HTTP)이나 이메일에, UDP는 실시간 스트리밍이나 DNS 조회에 주로 사용된다는 구체적인 예시를 포함하시면 더욱 풍부한 답변이 될 것입니다.

Q2C

TCP에서 클라이언트와 서버가 연결을 설정하는 3-way handshake 과정은 어떻게 동작하나요?

응답 내용

클라이언트가 먼저 서버에서 연결하고 싶다는 CON 신호를 랜덤한 숫자와 함께 보냅니다. 서버는 연결준비를 마치면, ACK 신호를 받은 랜덤숫자+1과 같이 보내고, 연결 준비가 마쳤다는 신호를 랜덤 숫자와 같이 보냅니다. 그리고 클라이언트는 서버에계 ACK 신호를 받은 숫자에 +1하여 보냄으로써 연결을 완료합니다. 이후 클라이언트와 서버가 서로 데이터를 소켓을 통해 주고받을 수 있습니다.

AI 피드백

3-way handshake의 전체적인 흐름과 순서 번호를 사용한다는 개념을 이해하고 계신 점이 좋습니다. 다만 몇 가지 용어와 세부사항에서 수정이 필요한데, CON이 아닌 SYN(Synchronize) 플래그를 사용하며, 서버는 SYN-ACK를 하나의 패킷으로 응답합니다. 또한 클라이언트가 보내는 초기 순서 번호를 x라고 할 때, 서버는 ACK 번호로 x+1을 보내고 자신의 순서 번호 y를 함께 전송하며, 최종적으로 클라이언트는 ACK 번호 y+1을 서버에 보내 연결을 완료합니다. SYN, SYN-ACK, ACK의 정확한 플래그 명칭과 순서 번호의 구체적인 동작 방식을 추가로 학습하시면 더욱 완벽한 답변이 될 것입니다.

Q3B

TCP 연결에서 소켓이 무엇인지 설명해주세요?

응답 내용

소켓은 서로 다른 프로세스가 양방향으로 통신하기 위해 사용하는 프로토콜입니다. 한 컴퓨터 내 다른 프로세스에서도 사용할 수 있고, 방금 전과 같이 서로 다른 컴퓨터에서 통신하는데 사용할 수 있습니다.

AI 피드백

소켓을 프로세스 간 통신을 위한 프로토콜로 이해하고 계신 점과 로컬 및 원격 통신에 모두 사용된다고 설명하신 부분은 좋았습니다. 하지만 소켓은 프로토콜 자체가 아니라 네트워크 통신의 종점(endpoint)을 나타내는 인터페이스나 추상화된 객체로 보는 것이 더 정확합니다. 소켓은 IP 주소와 포트 번호의 조합으로 구성되며, 애플리케이션이 네트워크 통신을 위해 운영체제에서 제공하는 API를 통해 생성하고 사용하는 개념입니다. TCP 소켓의 경우 연결 지향적 특성을 가지며, 소켓 프로그래밍에서 서버 소켓과 클라이언트 소켓의 역할 차이에 대해서도 학습해보시면 더 깊이 있는 이해가 가능할 것 같습니다.

Q4B

소켓에서 바인딩(binding) 과정은 어떤 역할을 하나요?

응답 내용

특정 컴퓨터 내에 특정 포트와 통신을 할 수 있도록 합니다.

AI 피드백

바인딩의 핵심 개념인 IP 주소와 포트 번호를 소켓에 연결한다는 점을 이해하고 계신 점이 좋습니다. 다만 답변이 다소 간단해서 바인딩의 정확한 정의와 과정에 대한 설명이 부족합니다. 바인딩은 소켓을 특정 IP 주소와 포트 번호에 연결하여 해당 주소로 들어오는 연결 요청을 받을 수 있게 하는 과정으로, 특히 서버 소켓에서 클라이언트의 연결을 대기하기 위해 필수적인 단계입니다. 소켓 프로그래밍에서 socket() → bind() → listen() → accept() 순서로 진행되는 서버 소켓의 생명주기와 바인딩이 그 중에서 담당하는 역할에 대해 더 학습해보시면 좋겠습니다.

Q5D

바인딩 과정에서 이미 사용 중인 포트에 바인딩을 시도하면 어떤 일이 발생하나요?

응답 내용

이미 사용 중인 포트에 바인딩을 시도할 경우, 시도한 프로세스가 비정상 종료합니다.

AI 피드백

바인딩 시 포트 충돌이 발생할 수 있다는 점을 인식하신 것은 좋았습니다. 하지만 이미 사용 중인 포트에 바인딩을 시도했을 때 프로세스가 비정상 종료된다는 설명은 정확하지 않습니다. 실제로는 운영체제가 "Address already in use" 또는 "EADDRINUSE" 같은 에러를 반환하며 바인딩 요청을 거부하고, 프로세스는 이 에러를 적절히 처리할 수 있습니다. 소켓 프로그래밍에서의 에러 핸들링 방식과 운영체제의 포트 관리 메커니즘에 대해 더 학습해보시면 좋을 것 같습니다.

커뮤니티 공유 안내

• 이 결과는 AI가 분석한 내용이며, 학습 목적으로 커뮤니티에 공유됩니다.

• 좋아요를 눌러 유용한 답변에 반응을 남겨보세요.

• 개인정보는 포함되지 않으며, 면접 연습 개선을 위한 참고 자료로 활용됩니다.