✔ HTTP 프로토콜에 대해 설명하시오.
HTTP이란 Hyper Text Transfer Protocal 의 약어로 서버와 클라이언트 모델에 따라 데이터를 주고 받기 위한 프로토콜이다. 애플리케이션 레벨의 프로토콜로 TCP/ IP 위에서 작동한다.
특징
- 상태없음 Stateless : 커넥션을 끊는 순간 상태 정보를 저장하지 않는다
- 비연결지향 Connectionless : 클라이언트의 요청에 맞는 응답을 보낸 후 연결을 끊는다.
🗝 KEY WORD |
#서버/클라이언트 데이터 #TCP/IP |
✔ HTTP와 HTTPS의 차이에 대해 설명하시오.
HTTP는 평문 데이터를 전송하는 프로토콜이기에, HTTP로 중요한 정보를 주고 받으면 제 3자에 의해 조회될 수 있다. 따라서 이러한 문제를 해결하기 위해 HTTP에 암호화가 추가된 프로토콜인 HTTPS를 사용한다.
HTTP는 원래 TCP와 직접 통신했지만, HTTPS에서 HTTP는 SSL과 통신하고 SSL이 TCP와 통신함으로써 암호화,증명서, 안정성 보호를 이용할 수 있게 된다.
* SSL/TLS : 전송 계층에서 보안을 제공하는 프로토콜
HTTP | HTTPS |
Hyper Text Transfer Protocol | Hyper Text Transfer Protocol Secure |
평문 데이터 전송 프로토콜 | 암호화가 추가된 HTTP 프로토콜 |
보안에 취약함 | 대칭키 / 비대칭키 암호화를 모두 사용 |
HTTP/1과 HTTP2는 TCP/IP 프로토콜을 사용 (HTTP/3 : QUIC ) |
HTTP 요청 및 응답을 추가로 암호화하기 위해 SSL/TLS와 함께 HTTP/2 를 사용 |
기본 포트 80 | 기본 포트 443 |
웹 애플리케이션 로드 속도가 상대적으로 느리다 | HTTP에 비해 로드 속도가 상대적으로 빠르다 |
🗝 KEY WORD |
#HTTP TCP/IP #HTTPS SSL # HTTPS는 보안 / 키 |
✔ HTTP Method의 종류와 해당 개념을 설명하시오.
HTTP Method에는 GET, POST, PUT, PATCH, DELETE 가 있습니다. 이 메서드들은 클라이언트가 서버에게 사용자 요청의 목적을 알리는 수단입니다.
GET | 데이터 조회 |
POST | 데이터 등록 |
PUT | 데이터 변경 |
PATCH | 일부 데이터 변경 |
DELETE | 데이터 삭제 |
🗝 KEY WORD |
#GET POST PUT PATCH DELETE |
✔ TCP와 UDP의 차이에 대해 설명하시오.
TCP(Transmission Control Protocol) | UDP |
데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜 | 데이터를 데이터그램 단위로 처리하는 프로토콜 |
연결 지향 방식으로 수신 여부를 확인하는 패킷 교환 방식 | 비연결형 방식으로 단순히 데이터만 주는 데이터그램 방식 |
전송 순서 보장 | 전송 순서 변경 가능성 O |
3-way handshaking 사용 | 3-way handshaking 미사용 |
신뢰성 높다 | 신뢰성 낮다 |
속도 느리다 | 속도 빠르다 |
Streaming 서비스에 분리 | Streaming 서비스에 유리 |
🗝 KEY WORD |
#신뢰성 유무 #3-way handshaking 유무 |
✔ '가상회선 패킷 교환 방식'과 '데이터그램 패킷 교환 방식'에 대해 설명하시오.
가상회선 패킷 교환 방식은 각 패킷에는 식별자가 포함되며 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 순서대로 도착하는 방식이다.
반면, 데이터그램 패킷 교환 방식은 패킷이 독립적으로 이동하며 최적의 경로를 선택하여 가는데, 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송 될 수 있어 순서가 다를 수 있다.
🗝 KEY WORD |
# 패킷의 도착 순서 |
✔ 3-Way Handshake와 4-Way Handshake에 대해 설명하시오.
3-Way Handshake는 TCP 통신을 이용하여 데이터를 전송하기 위해 네트워크 연결을 설정하는 것이고, 4-Way Handshake 는 TCP의 접속 해제 과정이다. 각각 총 3번/ 4번의 과정을 거쳐 데이터를 주고 받으며 통신을 한다.
🗝 KEY WORD |
# 3 TCP네트워크 연결 # 4 TCP 네트워크 해제 |
✔ 병목(bottleneck) 현상에 대해 설명하시오.
전체 시스템의 성능이나 용량이 하나의 구성 요소로 인해 제한을 받는 현상을 말한다. 예를 들어, 서비스에서 이벤트를 열었을 때 트래픽이 많이 생기고 그 트래픽을 잘 관리하지 못하면 병목현상으로 인해 사용자가 웹 사이트를 이용하지 못하는 것이다.
병목 현상 주된 원인
- 네트워크 대역폭
- 네트워크 토폴로지(구조)
- 서버CPU, 메모리 사용량
- 비효율적인 네트워크 구성
🗝 KEY WORD |
# 하나의 요소로 서비스 제한 # bottleneck |
✔ 인코딩과 디코딩에 대해 설명하시오.
인코딩(Encoding)이란 정보의 형식을 표준화, 보안, 처리속도 향상 등을 위해 정해진 규칙에 따라 코드화, 암호화, 부호화 하는 것이다. 디코딩(Decoding)이란 인코딩의 반대되는 개념으로 복호화, 역코드화를 하는 것이다.
🗝 KEY WORD |
# 인코딩 코드화 암호화 보안 # 디코딩 복호화 |
✔ 쿠키(Cookie)와 세션(Session)에 대해 설명하시오.
쿠키는 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이다. HTTP에서 클라이언트의 상태 정보를 PC에 저장했다가 필요시 정보를 참조하거나 재사용할 수 있다.
반면, 세션은 일정 시간동안 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술이다.
쿠키(Cookie) | 세션(Session) |
클라이언트 로컬에 저장되는 키-값(Key-Value)의 데이터 파일 | 클라이언트 정보파일을 서버 측에서 저장 |
브라우저 종료해도 만료시점 지나지 않으면 상태정보 삭제 X | 브라우저 종료되면 상태정보 삭제 |
사용자 요청 없이도 브라우저가 Request 시 Request Header에 넣어서 자동으로 서버에 전송 (Request 시 참조) | 서버에서 클라이언트를 구분하기 위해 세션ID를 부여 |
Text 형식의 저장 | Object 형식의 저장 |
보안에 취약 | 상대적 보안에 강함 |
사용자가 많을 경우 서버 자원 낭비(소모량多) | |
사용 예시 ) 자동로그인, 쇼핑몰 장바구니 | 사용 예시 ) 로그인 정보 유지 |
✔ 인증(Authentication)과 인가(Authorization)에 대해 설명하시오.
인증은 어떤 개체의 신원을 확인하는 과정이다. 예를 들어 애플리케이션의 로그인을 들 수 있다.
인가는 어떤 개체가 어떤 리소스에 접근할 수 있는지 또는 어떤 동작을 수행할 수 있는지 검증하는 것, 즉 접근 권한을 얻는 일을 말한다. 예를 들어, 로그인을 한 사용자가 자신이 작성한 글만 삭제 가능한 것을 들 수 있다.
🗝 KEY WORD |
# 인증 신원 확인 # 인가 접근 권한 |
✔ 세션기반 인증과 토큰기반 인증에 대해 설명하시오.
세션기반 인증 | 토큰기반 인증 |
클라이언트의 인증 정보가 서버의 세션 저장소에 저장 | 인증 정보를 클라이언트가 직접 들고 있는 방식 |
대규모 서비스일 경우, 메모리에 저장되는 세션 정보로 인한 메모리 성능 부하가 있다 | 클라이언트가 토큰 정보를 지니고 있어 서버를 스케일업 하는데 부담이 적다. |
발급된 Session ID는 브라우저 쿠키형태로 저장되지만, 실제 인증 정보는 서버에 저장되어 있다 | 인증 정보는 토큰 형태로 브라우저 로컬에 저장되어 있다 |
보안 측면에서 유리하다 | 서버가 트래킹하지 않기에 보안에 취약하다 |
여러 대의 서버 요청으로 생기는 세션 불일치 문제로 인해 확장성에 불리하다 |
세션 불일치 문제로부터 자유롭기에 확장성에 유리하다 |
<참고 자료>
https://aws.amazon.com/ko/compare/the-difference-between-https-and-http/
https://mangkyu.tistory.com/91
https://dev-coco.tistory.com/161
https://jeong-pro.tistory.com/80
https://dextto.tistory.com/234
https://hudi.blog/session-based-auth-vs-token-based-auth/
기술 지식 습득에 도움을 주신 모든 블로그 관리자 분들 감사합니다 🙏
부족한 내용에 대한 조언은 언제나 환영입니다 :)
'취업일지' 카테고리의 다른 글
[CS]기술 면접 질문 리스트 - 데이터베이스 (1) | 2024.01.06 |
---|---|
[CS]기술 면접 질문 리스트 - 운영체제 (3) | 2023.12.27 |
[CS]기술 면접 질문 리스트 - 자바 (1) | 2023.12.20 |
[CS]기술 면접 질문 리스트 - 프로그래밍 공통/기타 (2) | 2023.12.19 |