HTTP 프로토콜
HTTP 프로토콜은 데이터를 주고 받기 위한 프로토콜이며 서버/클라이언트 모델을 따릅니다.
상태 정보를 저장하지 않는 stateless, 클라이언트의 요청에 맞는 응답을 보낸 후 연결을 끊는 connectionless의 특징을 가지고 있습니다.
장점은 통신간의 연결상태처리나 상태정보를 관리할 필요가 없으므로 서버 디자인이 간단하고
HTTP 요청에 독립적으로 응답만 보내주면되서 편리하다.
단점은 이전 통신의 정보를 모르기 때문에 매번 인증을 해줘야 하고
쿠키나 세션을 통해서 데이터를 처리한다.
HTTP와 HTTPS의 차이점
HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에 제3자에 의해 조회될 수 있습니다.
이를 해결하고자 HTTP에 암호화가 추가된 프로토콜이 HTTPS입니다.
HTTP는 원래 TCP와 직접 통신했지만 HTTPS에서 HTTP는 SSL과 통신하고 SSL이 TCP와 통신함으로써
암호화와 증명서, 안전성 보호를 이용할 수 있게 됩니다.
cf. SSL-인터넷을 통해 전달되는 정보를 보호하기 위해 개발한 통신 규약
쿠키(Cookie)와 세션(Session)의 차이점
쿠키는 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일이며 HTTP에서 클라이언트의 상태 정보를 PC에 저장했다가
필요시 정보를 참조하거나 재사용할 수 있습니다.
세션은 일정 시간동안 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 유지하는 기술입니다.
즉 방문자가 웹서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라 합니다.
만료시점은 쿠키는 쿠키 저장시 설정되지만 세션은 브라우저 종료시 삭제됩니다.
속도는 쿠키가 더 빠르지만 보안은 세션이 더 좋습니다.
www.naver.com에 접속할 때 생기는 과정(웹 동작 방식 이해)
1. 사용자가 브라우저에 URL(www.naver.com) 입력
2. DNS 서버에서 도메인 네임으로 서버의 진짜 주소를 찾음
3. IP 주소로 웹 서버에 TCP 3 handshake로 연결 수립
4. 클라이언트는 웹 서버로 HTTP 요청 메시지를 보냄
5. 웹 서버는 HTTP 응답 메시지를 보냄
6. 도착한 HTTP 응답 메시지는 웹 페이지 데이터로 변환되고 웹 브라우저에 의해 출력
TCP와 UDP의 차이
TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정하기 때문에
높은 신뢰성을 보장하지만 속도가 느리다는 단점이 있습니다.
UDP는 비연결형 서비스로 3-way handshaking을 사용하지 않기 때문에 신뢰성이 떨어진다는 단점이 있지만
수신 여부를 확인하지 않아 속도가 빠르다는 장점이 있습니다.
TCP 통신은 종료시에도 3 way-handshaking을 사용하나요?
TCP는 3 way-handshaking 과정을 통해 연결을 설정하고
4 way-handshaking 과정을 통해 연결을 해제합니다.
3 way-handshake와 4 way-handshake
3 way-handshake는 TCP 네트워크에서 통신하는 장치가 서로 연결이 잘 되었는지 확인하는 방법이다.
송신자와 수신자는 총 3번에 걸쳐 데이터를 주고 받으며 통신이 가능한 상태인지 확인한다.
4 way-handshake는 TCP 네트워크에서 통신하는 장치의 연결을 해제하는 방법이다.
송신자와 수신자는 총 4번에 걸쳐 데이터를 주고 받으며 연결을 끊습니다.
OSI 7 계층과 각 계층에 대해 아는대로 설명
7 계층 Application Layer
사용자에게 통신을 위한 서비스를 제공, 인터페이스 역할
6 계층 Presentation Layer
데이터의 형식을 정의하는 계층(코드 간의 번역을 담당)
5 계층 Session Layer
컴퓨터끼리 통신을 하기 위해 세션을 만드는 계층
4 계층 Transport Layer-TCP/UDP
최종 수신 프로세스로 데이터의 전송을 담당하는 계층(단위 Segment)
3 계층 Network Layer-Router
패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층(단위 Packet)
2 계층 DataLink Layer-이더넷
데이터의 물리적인 전송과 에러 검출, 흐름 제어를 담당하는 계층
1 계층 Physical Layer-케이블, 리피터, 허브
데이터를 전기 신호로 바꾸어주는 계층(단위 bit)
HTTP Method와 각각이 사용되는 경우
HTTP 메소드는 클라이언트가 서버에게 사용자 요청의 목적을 알리는 수단입니다.
GET=데이터 조회
POST=요청 데이터 처리(보통 데이터 등록)
PUT=데이터 변경(해당 데이터가 없으면 생성)
PATCH=일부 데이터만 변경
DELETE=데이터 삭제
GET과 POST의 차이
GET은 데이터를 조회하기 위해 사용되는 방식으로 데이터를 헤더에 추가하여 전송하기 때문에
URL에 데이터가 노출되므로 보안적으로 중요한 데이터를 포함해서는 안됩니다.
POST는 데이터를 추가 또는 수정하기 위해서 사용되는 방식으로 데이터를 바디에 추가하여
전송하기 때문에 URL에 데이터가 노출되지 않아 GET 보다는 안전합니다.
세션 기반 인증과 토큰 기반 인증의 차이
세션 기반 인증은 클라이언트로부터 요청을 받으면 클라이언트의 상태 정보를 저장하므로 Stateful한 구조를 가지고
토큰 기반 인증은 상태 정보를 서버에 저장하지 않으므로 Stateless한 구조를 가집니다.
Stateful한 세션 기반의 인증 방식을 사용하게 되면 단점은
1. 서버에 세션을 저장하기 때문에 사용자가 증가하면 서버에 과부하를 줄 수 있다.
2. 해커가 훔친 쿠키를 이용해 요청을 보내면 서버는 올바른 사용자가 보낸 요청인지 알 수 없다.(세션 하이재킹 공격)
세션 기반 인증과 토큰 기반 인증은 각각 어느 경우에 적합한가?
세션 기반 인증은 단일 도메인에,
아니라면 토큰 기반 인증을 사용하는 것이 적합하다.
JWT 토큰에 대해 설명해주세요
JWT(Json Web Token)은 JSON 포맷을 이용하는 Claim 기반의 웹 토큰이며
헤더(Header), 내용(Payload), 서명(Signature)로 구성되며 각 파트를 점(.)으로 구분합니다.
헤더(Header)-토큰의 타입과 해시 암호화 알고리즘(방식지정)으로 이루어져 있다.
내용(Payload)-토큰에 사용자가 담고자 하는 정보를 담는다. 내용에는 Claim이 담겨있고
Json(key-value) 형태의 한 쌍으로 이루어져 있다.
서명(Signature)-토큰을 인코딩하거나 유효성 검증할 때 사용하는 고유한 암호화 코드이다.
헤더와 내용의 값을 인코딩한다.
대칭키, 비대칭키 암호화 방식
대칭키와 비대칭키는 모두 양방향 암호화 방식이다.
대칭키는 암호화와 복호화에 같은 암호 키를 쓰는 알고리즘이다.
비대칭키는 암호화와 복호화할 때 키를 서로 다른 키로 사용하는 암호화 알고리즘이다.
타인에게 절대 노출되어서는 안되는 개인키와 공개적으로 개방되어 있는 공개키를 쌍으로 이룬 형태이다.
Connection Timeout과 Read Timeout의 차이
Connection Timeout은 서버 자체에 클라이언트가 어떤 사유로 접근을 실패했을 시 적용되는 것이다.
Read Timeout은 클라이언트가 서버에 접속은 성공 했으나 서버가 로직을 수행하는 시간이 너무 길어
제대로 응답을 못 준 상태에서 클라이언트가 연결을 해제하는 것이다.
공인(public) IP와 사설(private) IP의 차이
공인 IP는 ISP(인터넷 서비스 공급자)가 제공하는 IP 주소이며 외부에 공개되어 있는 IP 주소이다.
사설 IP는 일반 가정이나 회사 내 등에 할당된 네트워크 IP 주소이며 IPv4의 주소부족으로 인해
서브넷팅된 IP이기 때문에 라우터(공유기)에 의해 로컬 네트워크상의 PC나 장치에 할당된다.
사설 IP 주소만으로는 인터넷에 직접 연결할 수 없고 라우터를 통해 1개의 공인 IP를 할당하고
라우터에 연결된 개인 PC는 사설 IP를 각각 할당 받아 인터넷에 접속 할 수 있다.
'스터디' 카테고리의 다른 글
운영체제 기술 면접 대비 (0) | 2024.06.08 |
---|---|
데이터베이스 기술 면접 대비 (0) | 2024.06.08 |
백엔드(Web, Spring) 기술 면접 대비 (1) | 2024.06.07 |