241101 TIL - 주특기 플러스 wk2 5 + 면접 복기

LIHA·2024년 11월 1일
0

내일배움캠프

목록 보기
100/105
post-thumbnail

주특기 플러스

뭐야 delete가 되는거였어?

??? 이게 되나요? 뭐지 어떻게 되는거지? 😲😲😲🤯🤯🤯

그렇다고 한다. 객체의 속성을 제거할땐 그냥 delete를 쓸 수 있다고.

대체 왜 클라이언트 버전이 안 맞는다는거야? - 제발 콘솔을 좀 찍어보자

자꾸만 클라이언트 버전이 일치하지 않는다는 에러가 떠서 서버단의 문제인가 하고 .env 파일이나 여러가지를 계속 봤지만 이상이 없었는데,

불현듯 콘솔을 찍어봐야겠단 생각이 들어 콘솔을 찍어보니 세상에, 클라단에서 받아오는게 문제였다.
근데 유니티 클라쪽에 문제가 있진 않을텐데 왜 못받아오지? 라는 생각이 들어 패킷 자체를 찍어보니 아래와 같이 나왔다.

clientVersion이 아니라 그냥 version 이었구나.

원래 여기가 이렇게 packet.clientVersion 이라고 되어 있었다. 그래서 계속 undefined가 떴던 것.

고쳐주었더니 클라이언트 버전이 일치하지 않는다는 에러가 더이상 뜨지 않았다.

payloadType이 undefined!? - 불꽃처럼 터지는 오탈자들

페이로드 타입이 찍히질 않아 무수한 콘솔요청(?)을 보내 확인해 보았다.

?? 여기서는 찍히는데 왜 페이로드타입은 undefined? (사실 여기서 눈치 챘어야 했다)

initial.proto 파일을 보면 당연하게도 message의 이름은 InitialPayload로 대문자로 시작한다.

그런데 내가 handlers의 index.js에 protoType을 "initial.initialPayload" 라고 메시지 부분 이름을 파스칼케이스가 아닌 카멜케이스로 첫머리를 소문자로 써버려서(...) 인식을 못 하고 있었다.

결론: 오탈자 때문


면접

면접 복기 및 피드백

OSI 7계층 중 전송계층과 프로토콜에 대해 설명해달라

3계층에서 올라온 패킷에 TCP 헤더를 붙여 전송하는 전송 특화 계층. 프로토콜은 여러가지가 있으나 크게 TCP와 UDP 존재. TCP는 신뢰성, 연결지향성, 데이터의 정확한 전달을 위함. UDP는 비신뢰성 비연결성이고 실시간이라는 특성. 데이터의 빠른 전달을 위함. 전송단위는 TCP는 세그먼트, UDP는 데이터그램.

한 계층 내려와 네트워크 계층에서 IP의 한계에 대해 설명해달라

크게 세가지가 있는데 비연결성, 비신뢰성, 비식별성 이라고 표현하고 싶다. 비연결성은 패킷 받을 대상이 없거나 서비스 불능(컴퓨터가 꺼져있다던지) 이어도 패킷을 보내는 것. 비신뢰성은 패킷이 유실되거나 보낸 순서대로 오지 않는 것. 비식별성은 한 컴퓨터에서 여러 프로그램을 실행중인 경우 도착한 패킷이 어떤 프로그램의 패킷인지 IP만으로는 알 수 없는 것. 어떤 프로그램인지까지 알려면 포트번호가 필요하다.

IP의 비식별성이라고 했는데, 그러면 그건 전송계층 가면 해결이 되나?

이부분은 명확히 공부하진 못했으나 된다고 생각한다. 3계층에서 전송해도 도착할 수 있었다면 3계층이 전송계층이었을 것. 굳이 4층으로 올려 전송하는 데에는 이유가 있을 것.
-> 돌이켜보니 내가 앞선 질문에서 이미 대답했는데, 포트번호가 필요하다고 했고 이 포트번호를 4계층에서 부여한다.

오류제어, 흐름제어 및 그 방법에 대해 설명해달라

오류제어는 패킷 유실 등 통신장애가 일어나지 않도록 오류를 검출하고 정정하는 것.
패킷을 보냈을때 받았다는 응답이 오지 않으면 오류로 처리하는 응답 대기와, 응답이 일정 시간 내에 오지 않으면 오류로 보는 시간초과 방법이 존재.

흐름제어는 송수신자 간의 데이터 처리 속도 차이의 극복을 위해, 처리하지 못할 만큼의 데이터를 전송받아 오버플로우가 나지 않도록 조절하는 방법.
다음 패킷을 보내기 전 이전 패킷을 받았다는 응답을 기다리는 stop and wait와, 사전에 확인 응답을 받지 않고 전송할 수 있는 크기를 약속하는 슬라이딩 윈도우 방식 존재. 그래서 패킷 보낼 때 윈도우 사이즈라는 값을 같이 보냄. 그 윈도우 사이즈만큼 보낼 데이터 풀에서 윈도우가 슬라이딩하며 이동하며 데이터를 전송.

혼잡제어에 대해 아는가?

제대로 공부하진 못했지만 기억하는대로 설명하자면, 패킷을 전달하면서 잘 가면 전달 패킷 개수를 점점 증가시키다가 오버플로우라던지 문제가 생기면 패킷 전송량을 1로 줄여버리는 방식이 있었던 것으로 기억한다.


대칭키, 비대칭키 암호화에 대해 설명해달라

대칭키는 암호화와 복호화 시 사용되는 키가 같은 것, 비대칭키는 암호화와 복호화 시 사용되는 키가 다른 것.

그 두가지의 혼합 사용에 대해 설명해달라

대칭키는 편리하지만 탈취에 약하고 비대칭키는 보안은 상대적으로 강화되었으나 느림.
하여 이 두가지를 섞어 대칭키를 비대칭키 방식으로 암호화 하여 사용하는 방법 존재. 이 방식으로 암호화 한게 HTTPS.

HTTPS에 대해 설명해달라

HTTPS는 HTTP의 보안 한계때문에 나온 프로토콜. 상기 언급한 대칭키와 비대칭키 혼합방식으로 암호화.
HTTPS는 인증서와 디지털 서명 개념이 적용되어, 서버와 통신 시 공개키와 그에 대한 인증서를 같이 내줌.
인증서에는 서명값이 들어있는데 이를 바탕으로 인증서 검증 가능.

이 서명은 인증서 내용에 대한 해시값을 인증기관의 개인키로 암호화한 것.
우리는 인증서 받을때 공개키를 받았으니 이 공개키로 복호화할 수 있음.
이때 복호화 해서 나온 값이 실제 인증서를 해싱한 값과 같으면 제대로 발급된 인증서임을 알 수 있음.

그러면 HTTPS는 계속 비대칭키 암호화 방식만 사용하다 끝나는 것인가?

아님. HTTPS가 이 방식을 사용하는 궁극적인 이유는 '우리 좀 쉽고 안전하게 통신할 수 없을까?' 임.
때문에 이 비대칭키 암호화를 한 결과물은 대칭키임. '우리 이 대칭키로 좀 편하게 통신하자' 인 것. 이 대칭키가 활성화 된 동안 세션이 유지됨. 그래서 이 대칭키를 세션키 라고도 함. 이용자가 이용을 종료하면 세션이 종료됨과 함께 이 세션키는 같이 폐기됨.


로드밸런싱에 대해 설명해달라

L4와 L7에서 네트워크나 패킷의 혼잡이나 과부하를 방지하기 위해 부하를 분산하는 것.

로드밸런싱 알고리즘의 종류와 그 방법에 대해 설명해달라

라운드로빈 - 서버 A, B, C가 있으면 요청을 순차적으로 A-B-C-A-B-C 순으로 할당하는 것
최소 연결 - 연결이 가장 적은 서버를 타겟 삼아 할당하는 것
랜덤 - 이름 그대로 랜덤한 곳에 연결
해시 - 특정 클라이언트는 특정 서버에만 연결되게 하는 것
GSLB - Global Server Load Balancing. 타 지역의 서버에 연결시켜 버리는 것

피드백

  • 전공을 했는지 물어보셨다. 스크립트 달달 외운 느낌이 아니라 정말 알고있는 것 같았고 상세하고 구체적으로 설명해 주었다고.
  • 다만 실제 면접장에서는 두괄식으로 얘기하는 것이 좋다고. 알고있는 것을 간략하게 얘기할 수 있어야 한다고 말씀해 주셨다.
    전송계층이 뭔지, 장단점이 뭔지 정도만 딱 얘기하고 끝내는 연습을 하는 것도 좋다고.

면접봇 키워드 정리

선택한 프로그래밍 언어와 그 이유

실무에서 가장 많이 사용하는 서버 아키텍처 패턴과 이유

DB 설계에서 정규화의 중요성

API 설계와 보안 고려

캐싱과 성능 최적화 - 캐싱이란

캐싱과 성능 최적화 - 웹 애플리케이션에서의 캐싱의 장점

마이크로 서비스 아키텍처 (MSA)

profile
갑자기 왜 춤춰?

0개의 댓글