(클라이언트는 서버에 요청을 전송할 수 있는지, 서버는 클라이언트에게 응답을 전송할 수 있는지 확인하는 과정입니다.)
- TCP 3, 4 way handshake
- TCP 3-way handshake는 연결을 설정하는 과정으로, 클라이언트와 서버가 서로 송수신 가능 여부와 초기 시퀀스 번호를 확인하기 위해 3번의 패킷 교환을 합니다.
- 클라이언트 → SYN
- 서버 → SYN + ACK 응답
- 클라이언트 → ACK 전송 → 연결이 성립
- TCP 4-way handshake는 TCP 연결을 종료하는 과정으로 송신과 수신이 독립적으로 끊어지기 때문에 4번의 패킷 교환이 필요합니다.
- FIN → ACK → FIN → ACK
- 마지막에 클라이언트는 TIME_WAIT 상태로 지연 패킷을 방지합니다.
- TCP 3-way handshake는 연결을 설정하는 과정으로, 클라이언트와 서버가 서로 송수신 가능 여부와 초기 시퀀스 번호를 확인하기 위해 3번의 패킷 교환을 합니다.
- HTTP, HTTPS
- HTTP와 HTTPS의 차이는 보안 여부입니다.
- HTTP는 데이터를 평문으로 전송하기 때문에 중간에서 패킷을 가로채거나 수정할 수 있습니다.
- 반면 HTTPS는 SSL/TLS를 사용해 데이터를 암호화하여 전송하므로, 기밀성과 무결성이 보장됩니다.
- (서버 인증서로 신뢰성을 확인한 뒤, 공개키 암호화로 안전하게 세션키를 교환하고, 이후 대칭키 암호화로 데이터를 주고받아 기밀성과 무결성을 보장합니다.)
- SSL / TLS
- 인터넷 통신을 암호화하고 인증하는 보안 프로토콜.
- TLS는 SSL의 개선·표준화 버전이며, 현재 대부분 HTTPS에서 TLS를 사용
- 세션키
- 세션키는 통신 세션동안 데이터 암호화에 사용되는 대칭키입니다.
- HTTPS에서는 공개키 암호화를 사용해 세션키를 안전하게 교환한 뒤, 세션 내 모든 데이터 전송에 세션키를 사용합니다.
- 대칭키 암호화는 빠르고 효율적이기 때문에 대용량 데이터 전송에 적합합니다.
- HTTPS에 대해서 설명하고 SSL Handshake에 대해서 설명
- HTTPS는 HTTP에 보안 계층을 추가한 것입니다. HTTPS는 제 3자 인증, 공개키 암호화, 비밀키 암호화를 사용합니다.
- 먼저 TCP 3-way handshake로 기본 연결을 맺은 뒤, SSL/TLS Handshake를 진행합니다. 클라이언트는 ‘Client Hello’를 보내고, 서버는 인증서와 암호화 방식 정보를 응답합니다.
- 인증서는 신뢰할 수 있는 인증기관이 발급하며, 브라우저는 내장된 공개키로 이를 확인합니다. 이후 서버의 공개키를 이용해 세션키를 안전하게 교환하고, 이 세션키로 데이터를 암호화하며 통신합니다.
- GET, POST
- GET은 서버에서 데이터를 조회할 때 사용하며, URL에 쿼리스트링으로 데이터를 전송하고 캐싱이 가능합니다. 멱등성을 보장해 같은 요청을 반복해도 결과가 같습니다.
- POST는 서버의 데이터를 생성하거나 변경할 때 사용하며, 요청 본문에 데이터를 담아 전송합니다. 기본적으로 캐싱하지 않으며, 멱등성이 없습니다.
- HTTP 메서드와 이것이 하는 역할에 대해서 설명
- GET 요청은 서버에 존재하는 데이터를 요청하는 것입니다. CRUD 중 R입니다.
- POST 요청은 서버에 데이터를 생성하는 것을 요청합니다. CRUD 중 C입니다.
- PUT 요청은 서버에 존재하는 데이터를 수정하거나 존재하지 않으면 생성합니다. CRUD로 따지면 C, U입니다.
- DELETE 요청은 서버에 데이터를 제거할 것을 요청합니다. 존재하지 않아도 동일하게 동작합니다. CRUD로 따지면 D입니다.
- PATCH 요청은 서버에 존재하는 데이터를 일부 수정합니다. CRUD로 따지면 U입니다.
- Restful이란?
- REST를 준수해 설계된 API를 의미합니다.
- REST는 자원을 HTTP URI로 표현하고, HTTP 메서드를 통해 해당 자원에 대한 행위를 명확히 구분합니다.
- RESTful API는 무상태성, 일관된 자원 표현, 계층 구조 등의 특징을 가지며, 이를 지키려면 클라이언트와 서버가 독립적으로 확장 가능해집니다.
- 단순히 JSON을 반환한다고 해서 RESTful이라고 부르진 않습니다.
- CORS?
- 브라우저에서 서로 다른 출처 간 자원 요청을 허용하는 메커니즘입니다.
- 기본적으로 브라우저는 동일 출처 정책 때문에 다른 출처의 요청을 차단합니다.
- 서버가 Access-Control-Allow-* 헤더로 허용 범위를 명시하면 요청이 가능합니다. 일부 요청은 본 요청 전에 OPTIONS 메서드로 preflight 요청을 보내 서버가 허용하는 메서드와 헤더를 확인합니다.
'CS 및 면접복기' 카테고리의 다른 글
| 20250820 - 디자인패턴(2) (2) | 2025.08.20 |
|---|---|
| 20250818 - 디자인 패턴 (2) | 2025.08.18 |
| 20250808 (3) | 2025.08.08 |
| 20250807 - ALL (3) | 2025.08.07 |
| 20250806 - ALL (3) | 2025.08.06 |