[기술 면접] 공통 질문 (Network, OS, CS)

HTML과 HTML5의 차이점

HTML(Hyper Text Markup Language)

HTML5는 HTML 표준의 다섯번째 업그레이드 버전

 

HTML5

  • 멀티미디어 기능
    (3D, 오디오, 영상 등) Active X 설치 없이도 사용 가능
  • 웹 저장 기능
    웹 사이트 사용자의 정보를 PC에 저장할 수 있는 매커니즘 제공 (기존 쿠키 및 세션의 한계 해소)
  • 웹 소켓 기능
  • 위치(Geolocation) 기능
  • CSS3

 

GET과 POST의 차이점

GET

  • 서버에 정볼르 조회하기 위해 사용되는 메소드
    ex) 게시판 글 조회
  • 서버에 정보를 요청할 때, 쿼리스트링을 통해 데이터 전송
  • URL 주소에 ?로 주소로 데이터를 전송
  • 길이 제한이 있음.
  • 보안에 중요한 데이터를 담아서 보내면 안 됨.
  •  

POST

  • 서버에 데이터를 생성 또는 수정하기 위해 사용되는 메소드 
    ex) 게시판 글 작성
  • 데이터는 body에 담아서 보냄
  • 데이터가 노출되지 않아 GET 방식보다는 안전함.

GET은 SELECT, POST는 CREATE, UPDATE에 가까움

 

 

GET은 Idempotent, POST는 Non-idempotent하게 설계됨.

 

Idempotent(멱등)

수학이나 전산학에서 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질

 

GET의 경우 서버에 동일한 요청을 여러 번 보내더라도 항상 동일한 응답이 돌아와야 한다는 것을 의미

POST의 경우 서버에 동일한 요청을 여러 번 보내더라도 응답 결과가 다를 수 있다는 것을 의미

 

 

TCP와 UDP의 차이

TCP와 UDP는 데이터를 전송할 때 사용하는 프로토콜

 

TCP (Transmission Control Protocol)

  • 연결형으로 신뢰성을 보장 (3-way handshaking 과정을 통해서)
  • 전송 순서를 보장하나 속도가 UDP보다 느림
  • 파일 전송과 같은 신뢰성이 중요한 경우 사용

 

UDP (User Datagram Protocol)

  • 비연결형으로 연속성이 중요한 곳에 사용됨 (스트리밍 서비스)
  • 전송 순서가 바뀔 수 있음
  • 신뢰성이 낮은 대신 속도가 빠름

 

TCP와 UDP의 Header

TCP Header에는 160bit 데이터가 들어간다.

UDP Header에는 32bit 데이터가 들어간다.

Header의 크기 때문에 UDP 속도 > TCP 속도

 

3-way Handshaking

3-Way Handshaking

  • TCP로 통신하는 장치간 서로 연결이 잘 되었는지를 확인하는 방식
    (신뢰성을 확인하는 방식)
  • Client에서 Server로 데이터를 보내는 3단계

 

 

HTTP와 HTTPS의 차이

HTTP(Hyper Text Transfer Protocol)

  • 데이터 요청/응답 (request/response)시 사용되는 프로토콜
  • 암호화되지 않은 평문 데이터를 전송하기 때문에 서버와 주고 받는 데이터를 볼 수가 있음
  • 80포트를 사용

 

HTTP+SSL(Secure Socket Layer) ➡ HTTP + S(Secure)

  • HTTP에서 데이터 암호화가 추가된 프로토콜
  • 암호화된 데이터를 전송하기 때문에 제 3자가 데이터를 볼 수 없음
  • 443번 포트를 사용

 

HTTPS의 암호화 방식

  1. 대칭키 암호화
    - 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화 과정 진행
    - 키 노출 위험성이 큰 대신 속도가 빠름
  2. 비대칭키 암호화
    - 공개키와 개인키를 사용해 암호화/복호화 과정 진행
    - 키가 노출되어도 비교적 안전한 대신 속도가 느림

 

Restful API란

REST(Representational State Transfer)ful API

  • REST의 규칙을 지켜서 만든 API를 뜻함.
    (REST란 소프트웨어 프로그램 아키텍처의 한 형태)
  • 성능의 향상보다는 규칙을 통한 API 이해도와 호환성을 높이기 위함.
    (유지보수 및 코드의 재사용성을 높일 수 있음)

 

RESTful API

 

동기/비동기 방식

동기(Synchronous) 방식

  • 요청과 결과가 동시에 일어남
  • 요청을 하고 결과가 나올 때까지 기다림 (작업의 순서를 보장)
  • 여러 요청을 동시에 처리할 수 없음
  • ex) 1:1 고객 응대 카페
  • Blocking 방식

 

비동기(Asynchronous) 방식

  • 요청과 결과가 동시에 일어나지 않는다.
  • 요청 후 결과와 상관없이 다음 요청을 진행
  • 여러 요청을 동시에 처리
  • ex) 1:N 고객 응대 카페
  • Non-Blocking 방식