[네트워크, 소프트웨어 엔지니어링] 기술면접 준비

김태인·2022년 9월 23일
0

기술면접 준비

목록 보기
2/3

Deadlock이 무엇인지 설명하고 해결할 수 있는 방안을 말해보세요

  • 프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태를 ‘교착 상태’ = 데드락 이라고 함
  • 이는 시스템으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생한다

데드락 처리 방법

  • 데드락이 발생하는 4가지 조건 (상호 배제, 점유 대기, 비선점, 순환대기) 중 하나라도 만족되지 못하게 예방한다
  1. 상호 배제 (Mutual Exculsion)
    → 자원은 한 번에 한 프로세스만
  2. 점유 대기 (Hold and Wait)
    → 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 있는 자원을 추가로 점유하기 위해 대기하는 프로세스 존재
  3. 비선점 (No Preemption)
    → 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제적으로 빼앗을 수 없다
  4. 순환 대기 (Cicular wait)
    → 프로세스의 집합(P0,P1 ~ , PN)에서 P0이 P1이 점유한 자원을 대기하고 P1은 P2가 점유한 자원을 대기하고.. PN-1 은 PN이 점유한 자원을 대기하고 PN은 P0이 점유한 자원을 요구해야 한다
  • 프로세스에 대한 교착 상태 가능성을 미리 판단, 최대 자원을 파악하여 교착상태를 최대한 피하는 회피를 선택할 수 있다
  • 다음은 탐지로 프로세스의 작업을 관찰하면서 교착 상태 발생 여부를 계속 주시하여 검출 시 상태 회복단계를 밟는다
  • 회복이란 교착상태를 일으킨 프로세스를 종료하거나, 할당된 자원을 해제시키는 것을 말함

쿠키와 세션의 차이에 대해 설명해보세요

  • 쿠키는 키-값 형태로 클라이언트의 정보를 로컬에 저장하는 역할을 하며 클라이언트 측에 저장되는 특성을 가짐

  • 속도측면에선 쿠키가 세션보다 빠르나 로컬에 저장되는 특성상 request에서 스니핑을 당할 우려가 있고 보안이 취약함

  • 세션은 서버측에 저장이 되며, 서버의 자원을 사용하게 되고 브라우저가 종료될 경우 사라짐

  • 쿠키보다 비교적 보안면에서 우수하며 그 이유는 세션은 쿠키를 이용해서 session id만 저장하고 그것으로 구분하여 서버에서 처리하기 때문

OSI 7계층에 대하여 설명해보세요

  • OSI 7계층이란 통신이 일어나는 과정을 7단계로 정의한 국제 통신 표준 규약

  • 물리 : 데이터를 전기적인 신호로 변환해서 주고받는 기능을 진행하는 공간으로, 장비로는 통신 케이블, 허브가 존재한다

  • 데이터 링크 : 물리계층으로 송/수신되는 정보를 확인하고 오류없는 통신을 위해 여러 역할을 수행한다. MAC주소를 통해 통신하며 장비로는 브릿지와 스위치가 존재한다

  • 네트워크 : 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능. 라우터를 통해 경로를 선택하여 IP주소를 지정하고 경로에 따라 패킷을 전달해준다. 장비로는 라우터가 존재한다

  • 전송 : 두 호스트 시스템으로부터 발생하는 데이터의 흐름을 제공한다

  • 세션 : 통신 시스템 사용자 간의 연결을 유지 및 설정한다

  • 표현 : 세션 계층 간의 주고받는 인터페이스를 일관성있게 제공한다

  • 응용 : 사용자가 네트워크에 접근할 수 있도록 서비스를 제공한다

TCP와 UDP를 비교하여 설명해보세요

  • TCP 와 UDP는 OSI 7계층에 전송계층에서 사용되는 프로토콜이며
    두 프로토콜은 모두 패킷을 한 컴퓨터에서 다른 컴퓨터로 전달해주는 IP프로토콜을 기반으로 구현되어있지만, 서로 다른 특징을 가지고있음

  • 신뢰성이 요구되는 애플리케이션에서는 TCP를 사용하고 간단한 데이터를 빠른 속도로 전송하고자 하는 애플리케이션에는 UDP를 사용한다

  • TCP = Transmission Control Protocol
    → 연결형 프로토콜
    → 데이터의 경계를 구분하지 않음
    → 신뢰성 있는 데이터 전송
    → 일 대 일 통신

  • UDP = User Datagram Protocol
    → 비연결형 프로토콜
    → 데이터의 경계를 구분
    → 비신뢰성 있는 데이터 전송
    → 일 대 일, 일 대 다, 다 대 다 통신

HTTP와 HTTPS를 비교하여 설명해주세요

  • HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신규약으로 80번 포트를 사용합니다
    애플리케이션 레벨의 프로토콜로 TCP/IP위에서 작동하며 HTTP는 상태를 가지고 있지 않은 Stateless 프로토콜이고 Method는 Path, Version, Headers, Body등으로 구성되어있습니다
    하지만 HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기때문에 비밀번호나 주민등록등을 주고받으면 제 3자가 정보를 조회할 수 있어 위험합니다

  • 이러한 문제를 해결하기 위해 등장한것이 HTTPS입니다
    HTTP에 Secure 즉 보안적인 측면에서 데이터 암호화가 추가된 프로토콜입니다
    HTTP와는 다르게 443번 포트를 사용하고 중간에 제 3자가 정보를 볼 수 없도록 암호화를 지원하고있습니다

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

  • TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정하는 과정으로 송수신자 사이에 연결을 확인하는 과정입니다

  • 3-way Handshaking는 세가지 스텝으로 나눠볼 수 있습니다
    STEP1 → A클라이언트는 B서버에 접속을 요청하는 SYN패킷을 보냅니다.
    이때 A클라이언트는 SYN을 보내고 SYN/ACK응답을 기다리는 SYN_SENT 상태, B서버는 Wait For Client 상태입니다

  • STEP2 → B서버는 SYN요청을 받고 A클라이언트에게 요청을 수락한다는 ACK와 SYN flag가 설정된 패킷을 발송하고,
    A가 다시 ACK로 응답하기를 기다립니다. 이때 B서버는 SYN_RECEIVED 상태가 됩니다

  • STEP3 → A클라이언트는 B서버에게 ACK를 보내고 이후로부터는 연결이 이루어지고 데이터가 오가게 되는 것입니다
    이때 B서버의 상태는 ESTABLISHED 입니다

  • 위와 같은 방식으로 통신하는 것이 신뢰성 있는 연결 맺어준다는 TCP의 3 Way handshake 방식입니다

www.naver.com 을 접속했을 시 화면이 출력되는 과정을 설명해보세요

  1. 브라우저에 www.naver.com 을 입력한다.

  2. 브라우저의 URL을 파싱해서 어떤 프로토콜, ULR, 포트로 보낼 지 해석합니다
    기본값 : HTTP(80), HTTPS(443)

  3. DNS Resolver가 도메인 주소를 IP 주소로 변환하는 과정을 거친다.

    3-1. Local DNS에 해당 URL주소의 IP 주소를 요청

    3-2. 없을 경우 root DNS 서버에 해당 URL의 IP 주소를 요청

    3-3. root DNS에도 주소가 없을 경우 .com 도메인을 관리하는 TLD DNS 서버에 요청

    3-4. naver.com의 IP 주소를 관리하는 하위 DNS서버에 요청

    3-5. Local DNS에서 응답받은 IP 주소를 캐싱

  4. 라우터를 통하여 해당 서버의 게이트웨이까지 이동

  5. ARP를 이용하여 IP 주소를 MAC 주소로 변환

  6. TCP handshaking 과정을 통해 TCP 소켓 연결 수립한다.

  7. 브라우저가 Request Message 전송한다.

  8. 서버가 URL을 프로그램이나 정적 파일로 연결한다.

  9. 서버가 Response Message 전송한다.

  10. 브라우저가 응답을 형식에 맞춰서 화면에 표시한다.

루프백이란?

  1. 자기 자신의 IP 주소와 검색된 도메인(http://www.naver.com 등)을 기반으로 DNS 서버 탐색
  2. DNS 서버가 탐색되면 DNS 서버에 있는 DB를 활용하여 도메인(http://www.naver.com)의 IP를 확인
  3. 2번을 통해 가져온 IP로 접근하여 경로에 해당하는 파일을 불러옴
  4. 웹 브라우저가 랜더링
    일반적으로 위와같이 진행되지만, localhost(127.0.0.1)는 2, 3번 과정을 생략합니다.

HTTP 메소드 중 GET, POST를 비교하여 설명해보세요

GET 방식

  • 클라이언트에서 서버로 데이터를 전달할때 주소 뒤에 “이름”과 “값”이 결합된 스트링 형태로 전달
  • 주소창에 쿼리 스트링이 그대로 보여주기때문에 보안성이 떨어집니다
  • 길이에 제한이 있습니다
  • Post방식보다 상대적으로 전송 속도가 빠릅니다

GET 방식의 특징

  • 대표적으로 URL에 파라미터를 붙여서 전송
  • URL 뒤에 ?를 사용하여 Parameter를 작성하게 되고 & 를 붙여 여러개의 Parameter를 구분하게 됩니다
  • 이런식으로 GET방식은 데이터를 전송하게 되며 URL에 Parameter를 전송하기 때문에 body영역을 사용하지 않습니다
  • 한번 요청시 URL포함 255자 까지 전송이 가능하며 HTTP/1.1에서는 2048자 까지 가능합니다

POST방식

  • 일정 크기 이상의 데이터를 보내야 할 때 사용합니다
  • 서버로 보내기 전에 인코딩하고, 전송 후 서버에서는 다시 디코딩 작업을 합니다
  • 주소창에 전송하는 데이터의 정보가 노출되지 않아 GET방식에 비해 보안성이 높다
  • 속도가 GET방식보다 느립니다
  • 쿼리스트링(문자열) 데이터 뿐만 아니라, 라디오 버튼, 텍스트 박스 같은 객체들의 값도 전송 가능합니다

POST 방식의 특징

  • body영역에 데이터를 실어 보냅니다
  • 때문에 데이터 전송양에 길이 제한이 없고 대용량 데이터를 보내는데 적합합니다
  • POST로 데이터를 전송할때에는 Body영역 데이터 타입을 Header Content-Type에 명시를 해줘야 합니다
  • GET방식과는 달리 보내는 데이터를 URL을 통해 볼 수 없어 보안적으로 안전하다곤 하지만, 다른 툴을 사용하여 POST영역의 데이터 확인이 가능하기에 안심해선 안됩니다

HTTP 상태코드 정의를 말씀해주시고 알고있는 상태코드 모두 설명해주세요

2XX: Successful responses

  • 200 OK
    -> 요청이 성공적으로 되었습니다. 정보는 요청에 따른 응답으로 반환됩니다.

  • 201 Created
    → 요청이 성공적이었으며 그 결과로 새로운 리소스가 생성되었습니다.

  • 202 Accepted
    → 요청을 수신하였지만, 그에 응하여 행동할 수 없습니다

3XX: Redirection messages

  • 300 Multiple Choice
    → 요청에 대해서 하나 이상의 응답이 가능합니다. 사용자는 그중에 하나를 반드시 선택해야 합니다.

  • 301 Moved Permanently
    → 이 응답 코드는 요청한 리소스의 URI가 변경되었음을 의미합니다

  • 302
    -> 클라이언트가 요청한 리소스를 다른 URI에서 GET 요청을 통해 얻어야 할 때, 서버가 클라이언트로 직접 보내는 응답입니다

4XX: Client error response

  • 400 Bad Request
    → 이 응답은 잘못된 문법으로 인하여 서버가 요청하여 이해할 수 없음을 의미합니다.

  • 401 Unauthorized
    → 비록 HTTP 표준에서는 '미승인(unauthorized)'를 명확히 하고 있지만, 의미상 이 응답은 '비인증(unauthenticated)'를 의미합니다. 클라이언트는 요청한 응답을 받기 위해서는 반드시 스스로를 인증해야 합니다.

  • 403 Forbidden
    → 클라이언트는 콘텐츠에 접근할 권리를 가지고 있지 않습니다. 예를 들어, 그들은 미승인이어서 서버는 거절을 위한 적절한 응답을 보냅니다. 401과 다른 점은 서버가 클라이언트가 누구인지 알고 있습니다.

  • 404 Not Found
    → 서버는 요청받은 리소스를 찾을 수 없습니다. 브라우저에서는 알려지지 않은 URL을 의미합니다.

  • 405 Method Not Allowed
    → 요청한 메소드는 서버에서 알고 있지만, 제거되었고 사용할 수 없습니다

5XX: Server error response

  • 500 Internal Server Error
    -> 웹 사이트 서버에 문제가 있음을 의미하지만 서버는 정확한 문제에 대해 더 구체적으로 설명할 수 없습니다.

  • 502 Bad Gateway
    → 서버가 게이트웨이로부터 잘못된 응답을 수신했음을 의미합니다. 인터넷상의 서버가 다른 서버로부터 유효하지 않은 응답을 받은 경우 발생합니다.

  • 503 Service Unavailable
    → 서버가 요청을 처리할 준비가 되지 않았습니다. 일반적인 원인은 유지보수를 위해 작동이 중단되거나 과부하가 걸린 서버입니다

  • 504 Gateway Timeout
    → 웹페이지를 로드하거나 브라우저에서 다른 요청을 채우려는 동안 한 서버가 액세스하고 있는 다른 서버에서 적시에 응답을 받지 못했음을 의미합니다

profile
코딩이 취미가 되는 그날까지

0개의 댓글