외부활동/CS 면접 끝장내기 - 컴퓨터 네트워크 4기

컴퓨터 네트워크 4주차 스터디 정리

dohyeon2 2024. 1. 31. 14:19

3주차 면접 스터디에서 받았던 피드백은 다음과 같습니다.

 

좋았던 점

  • 대체로 두괄식으로 간결하게 잘 답변하였다.
  • 모르면 모른다 깔끔하게 답변해서 좋았다.
  • 목소리 톤이 듣기 좋았다.

 

부족했던 점

  • 지지난주 스터디에서 답변 중간에 "어..." 라고 하면서 생각하는 시간을 갖기보다는 면접관에게 생각할 시간을 달라고 양해를 구하는게 더 나을 것 같다는 피드백을 받았습니다. 그래서 지난주 스터디에서는 답변에 앞서 5초만 생각할 시간을 달라고 면접관에게 양해를 구했으나 5초정도 양해를 구할거면 그냥 혼자 생각을 정리하고 답변하는게 나을 것 같다는 피드백을 받았습니다. 
    : 앞으로 저는 질문이 제가 잘 알고있는 내용일 경우 혼자 생각을 정리한 뒤 바로 답변하고, 정말 바로 떠오르지 않는 질문의 경우 면접관에게 10초정도 양해를 구하도록 할 예정입니다.

  • 쿠키의 작동방식에 대해 답변하지 못했습니다.
    : HTTP 쿠키의 작동방식은 다음과 같습니다.
    1. 클라이언트가 서버로 HTTP 요청
    2. 서버는 클라이언트로 HTTP 헤더에 쿠키를 담아서 응답
    3. 클라이언트는 서버로부터 전달받은 쿠키를 디렉토리에 저장
    4. 이후 클라이언트가 동일한 서버로 HTTP 요청을 보낼경우 쿠키도 함께 전송
    5. 만약 서버에서 쿠키에 업데이트된 내용이 있을 경우 응답할 때 업데이트된 쿠키 전송

UDP에 대해 설명해주세요.

더보기

TCP와 달리 UDP는 비연결 지향형 프로토콜입니다. 단지 체크섬을 통해 수신된 패킷의 오류 여부 정도만을 알 수 있기 때문에 데이터 전송의 신뢰성을 보장하지 않는다는 단점이 있습니다. 그러나 UDP는 TCP에 비해 기능이 별로 없기 때문에 적은 오버헤드로 빠른 데이터 전송이 가능하다는 장점이 있습니다. 따라서 데이터 전송 속도가 가장 중요한 실시간 스트리밍 서비스 등에 적합합니다.

UDP의 장단점을 설명해주세요. 

더보기

UDP의 장점은 비연결 지향형 프로토콜이기 때문에 TCP에 비해 전송속도가 빠르며 네트워크 부하가 적다는 것입니다.

단점은 데이터 전송의 신뢰성이 없습니다.

UDP 체크섬의 대해 설명해주세요.

더보기

UDP 체크섬이란 UDP 데이터그램의 오류 검출을 위해 사용하는 방법입니다. UDP는 비연결 지향형 프로토콜이기 때문에 데이터그램이 손실될 수 있습니다. 이러한 문제를 방지하고 데이터그램의 무결성을 보장하기 위해 UDP 체크섬을 사용합니다. 

 

UDP 체크섬을 계산하는 방법은 다음과 같습니다.

  • 데이터그램의 "헤더"와 "페이로드"를 연결하여 하나의 데이터 생성
  • 데이터를 16비트 단위로 나누기
  • 각 16비트 단위의 값을 모두 더하기
  • 더해진 값의 하위 16비트를 구하기
  • 하위 16비트 값의 보수(one's complement)를 취하여 체크섬 계산

Reference

전송후 대기 프로토콜이 뭘까요?

더보기

전송후 대기 프로토콜이란 패킷을 전송하고 그 패킷에 대한 수신확인 응답을 받고나서, 다음 패킷을 전송하는 방식을 말합니다. 이러한 방식은 네트워크 링크 이용률이 낮아 전송속도가 느리다는 단점이 있습니다.  

파이프라인 프로토콜이 뭘까요?

더보기

파이프라인 프로토콜이란 전송한 패킷의 수신확인 응답을 받지 않아도 다음(여러 개의) 패킷을 연속으로 전송하는 방식을 말합니다. 이러한 방식으로 네트워크 링크 이용률과 전송 속도를 높일 수 있습니다.

TCP에 대해 설명해주세요.

더보기

UDP와 달리 TCP는 연결 지향형 프로토콜 입니다. 데이터 전송에 앞서 3way handshake과정을 통해 커넥션을 만들고 데이터를 주고받기 때문에 신뢰성이 보장된다는 장점이 있습니다. 그러나 TCP는 UDP와 달리 커넥션 과정이 필요하기 때문에 데이터 전송속도가 상대적으로 느리다는 단점이 있습니다. 따라서 데이터 전송의 신뢰성이 중요한 파일전송 등에 적합합니다.

 

Reference

3way handshake에 대해 설명해주세요.

더보기

3way handshake란 TCP 커넥션을 확립하는 과정을 말합니다. 클라이언트와 서버는 3way handshake 과정을 통해 서로 지원하는 기능이나 시퀀스 번호를 결정하고 오픈이라고 부르는 준비 작업을 수행합니다. 

 

3way handshake 과정

  1. 클라이언트는 서버에게 접속을 요청하는 SYN 패킷 전송(클라이언트는 SYN-SENT 상태)
  2. 서버는 SYN 요청을 받고, 클라이언트에게 요청을 수락한다는 SYN, ACK 패킷을 반환(서버는 SYN-REVEIVED 상태)
  3. SYN, ACK 패킷을 전송받은 클라이언트는 ACK 패킷을 서버로 반환(클라이언트는 ESTABLISHED 상태). 이후 서버는 ESTABLISHED 상태로 바뀌고 데이터 송수신 준비 완료

Reference

4way handshake에 대해 설명해주세요.

더보기

4way handshake란 TCP 커넥션을 종료하는 절차를 말합니다. 

 

4way handshake 과정

4way handshake 과정

(클라이언트가 먼저 종료를 요청하겠다고 가정)

  1. 클라이언트는 서버에게 연결을 종료하겠다는 FIN 패킷 전송(클라이언트는 FIN-WAIT1 상태)
  2. 서버는 응답으로 클라이언트에게 ACK 패킷 전송하고 자신의 통신이 끝날때까지 대기(서버는 CLOSE-WAIT 상태)
  3. 통신이 끝나면 서버가 클라이언트에게 FIN 패킷 전송(서버는 LAST-ACK 상태)
  4. 클라이언트는 확인했다는 의미로 서버에게 ACK 패킷 전송
    (서버가 보냈던 데이터가 FIN 보다 늦게오는 경우를 대비하여 일정시간동안 TIME-WAIT 상태). 일정시간 이후 CLOSE.

Reference

TCP 빠른 재전송에 대해 설명해주세요.

더보기

TCP 빠른 재전송이란 수신측으로 패킷이 순서대로 도착하지 않을 경우, 순서대로 도착한 마지막 패킷의 다음 순번을 ACK 패킷에 실어서 송신측으로 보냅니다. 송신측은 이러한 중복 ACK를 3개 받으면 패킷을 재전송하여 세그먼트 손실을 방지하는 기법을 말합니다.

 

Reference

Congestion control에 대해 설명해주세요.

더보기

 혼잡제어(Congestion control)란 네트워크 내의 패킷 수가 넘쳐 네트워크를 혼잡하게 만드는것을 방지하는 기법을 말합니다.

대표적으로 윈도우 사이즈를 지수함수 형태로 늘리는 느린시작이나 빠른 재전송 등이 있습니다.

Reference

Flow control에 대해 설명해주세요.

더보기

흐름제어(Flow control)란 송신측과 수신측의 데이터 처리속도가 차이날 때, 송신자의 데이터 전송속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 기법을 말합니다. 대표적으로 수신측에서 알리는 윈도우 크기만큼 세그먼트를 전송하는 슬라이딩 윈도우가 있습니다.

 

Reference


최근에 관심가지고 있는 기술이 있다면 설명해주세요.

더보기

최근에는 싱글, 스테레오 카메라를 이용하여 3차원 정보를 획득하는 Depth Estimation기술에 관심이 있습니다. 그중에서도 최근 Google DeepMind팀이 발표한 단안 카메라와 stable-diffusion 모델을 활용하여 상대적인 깊이가 아닌 실제 미터단위 깊이정보를 획득할 수 있는 논문을 관심있게 공부하고 있습니다.

새로운 기술을 학습할때 주로 어떤 방식으로 학습하시나요?

더보기

저는 주로 paper를 읽고 깃헙코드를 뜯어보거나, 공식 문서를 참고하여 새로운 기술을 익힙니다.

실제로 제가 이번에 3D 스테레오 카메라를 개발할때도 관련 paper와 공식문서를 주로 참고하였습니다.   

안정적인 시스템을 개발하기 위해 꼭 필요한 개발 프로세스는 어떤 것들이 있다고 생각하세요?

더보기

새로운 기능을 기존 코드에 병합할때 팀원들에게 PR 요청을 보내고 여러사람이 확인후 병합을 진행하는 과정이 꼭 필요하다고 생각합니다. 왜냐하면 이러한 과정을 통해 제가 개발한 알고리즘의 논리적인 오류나, 병합시 다른 파트에서 발생할 수 있는 문제들을 찾을 수 있기 때문입니다.

인성은 좋은데 실력이 안좋은 사수와 인성은 안좋은데 실력이 뛰어난 사수중에 어떤 사수랑 일하고 싶으세요?

더보기

저는 인성이 좋은 사수 밑에서 일하고 싶습니다. 물론 실력좋은 사수 밑에서 일해도 어깨너머로 많이 배울 수 있겠지만, 조금 실력이 부족하더라도 함께 고민하며 문제를 해결해나갈 수 있는 좋은 태도를 가진 사수 밑에서 일한다면 더 빠르게 성장할 수 있다고 믿기 때문입니다.

 

제가 생각하는 사수와 부사수의 관계는 사수가 일방적으로 알려주는 관계는 아니라고 생각합니다. 그보다는 서로 질문을하고 답변을하며 함께 성장하는 동료라고 생각하기 때문에 인성좋은 사수를 선택할 것 같습니다.

지금까지 개발하면서 만나본 에러나 장애중 가장 기억에 남은 것과 어떻게 해결 했는지도 설명해주세요.

더보기

제가 가장 오랫동안 해맸던 문제인데, 3D 카메라로 물체를 촬영했을 때 카메라와 이루는 각도에 따라 측정되는 물체의 면적이 매번 달라지는 문제가 있었습니다. 

결론적으로 multi camera geometry를 이용한 Nerf라는 논문에서 힌트를 얻어서 물체를 동시에 다양한 시점에서 촬영하고 물체의 3D model을 획득한 뒤, 카메라와 이루는 각도에 따라 3D point cloud를 재구성하는 방법으로 해결했던 경험이 있습니다.