티스토리 뷰
- HTTP
데이터를 주고 받기 위한 웹 프로토콜으로, 서버/클라이언트 모델을 따른다.
무상태성 - 서버는 이전의 클라이언트 상태 정보를 저장하지 않음
비연결성 - 서버가 클라이언트의 요청에 대한 응답을 하면 연결을 끊는 것
--> 쿠키, 세션 필요
- 세션/쿠키 차이
- 쿠키: 클라이언트의 상태 정보를 키-값 형태로 클라이언트 로컬 브라우저에 저장
- 세션: 클라이언트에게 고유한 ID를 부여하여 서버에 저장
세션은 서버의 처리가 필요하기 때문에 보안측면에서 더 우수하지만, 요청 속도는 쿠기가 더 빠름
- 세션/쿠키 동작 방식
- 클라이언트가 서버에 접속시 서버에서 세션 ID를 발급
- 서버는 세션 ID를 기반으로 쿠키를 포함시켜 클라이언트에게 응답
- 클라이언트는 서버에 요청할 때 이 쿠키를 같이 전달
- 서버는 쿠키의 세션 ID를 통해 클라이언트 정보를 가져와서 응답
- HTTP vs HTTPS
HTTP: 평문 데이터를 전송하기 때문에 보안상 문제가 될 수 있음.
HTTPS: 보안이 취약한 HTTP를 개선하기 위해 HTTP의 소켓 부분을 SSL 프로토콜로 감싼 것.
* SSL: 암호화 기반 인터넷 보안 프로토콜. 개인정보 보호, 인증, 데이터 무결성 보장
- 웹 흐름
- 사용자가 브라우저에 URL을 입력
- DNS 서버에서 도메인명으로 서버의 IP 주소를 찾음
- PORT 번호와 IP 주소로 HTTP 요청 메세지 생성(https의 경우 포트 번호 생략시 443)
- 소켓을 통해 TCP/IP 계층에 전달하여 3way handshake 단계를 거쳐 서버와 연결
- HTTP 메세지를 포함하여 TCP/IP 패킷을 생성
- 패킷을 받은 서버는 패킷을 해석해 그에 맞는 동작을 하고 HTTP 응답 메세지 생성
- 클라이언트는 서버의 응답 메세지를 받아 웹브라우저에 결과값을 출력
- TCP vs UDP
TCP: 신뢰성 있는 데이터 전송을 보장하는 연결지향형 프로토콜. 송신자와 수신자가 소켓이라는 종단점을 생성.
UDP: 비연결형 프로토콜. 신뢰성을 보장하지 않아 흐름제어/오류제어/재전송 x. 연결 설정/해제 과정 x
- 3way handshake
tcp가 연결하는 방식.
- 클라이언트가 서버에 접속을 요청하는 syn 패킷을 보냄
- 서버는 클라이언트의 패킷을 요청을 수락한다는 ack syn 패킷을 보냄
- 클라이언트는 서버의 패킷을 받고 ack를 보냄
- 4way handshake
tcp가 연결을 해제하는 방식
- 클라이언트가 연결을 종료하겠다는 fin 플래그 보냄
- 서버는 확인메시지인 ack를 보내고 보내려던 데이터를 마저 보냄
- 서버가 데이터를 모두 보냈다면 클라이언트에게 fin 플래그 보냄
- 클라이언트는 확인메시지 ack를 보냄
서버는 소켓연결을 close, 클라이언트는 아직 못받은 데이터가 있는 경우를 대비해 일정시간동안 기다림. (TIME_WAIT)
- osi 7 layer
네트워크 통신을 구성하는 요소들을 7개의 계층으로 표준화한 것.
물리, 데이터링크, 네트워크, 전송, 세션, 표현, 응용 계층으로 구분.
- http method
클라이언트가 서버에게 요청의 목적을 알리는 수단.
- get - 데이터 조회 (데이터를 헤더에 추가하여 전송. url에 데이터가 노출되므로 보안적으로 안좋음. 캐시 가능)
- post - 데이터 처리 (변경/추가/생성) (데이터를 바디에 추가하여 전송. get보다는 비교적 안전)
- put - 데이터 변경
- patch - 일부 데이터 변경
- delete - 데이터 삭제
- RESTful
REpresentational State Transfer
API 설계의 중심에 자원(Resource)이 있고 HTTP Method를 통해 자원을 처리하도록 설계하는 것.
자원과 행위를 분리. 자원은 URI, 행위는 HTTP Method로 표현.
- 대칭키 vs 비대칭키 암호화
대칭키: 암호화와 복호화에 동일한 개인키를 사용하는 알고리즘. 키가 중간에 탈취될 수 있음
비대칭키(공개키): 암호화할때는 공개키, 복호화할 때 개인키 사용.
https://github.com/JaeYeopHan/Interview_Question_for_Beginner
'etc > 면접' 카테고리의 다른 글
면접 준비 - 데이터베이스 (0) | 2023.03.11 |
---|---|
면접 준비 - 스프링, 기타 (0) | 2023.03.11 |
면접 준비 - 운영체제 (0) | 2023.03.10 |
면접 준비 - 자바 (0) | 2023.03.10 |
면접 준비 - 자료구조 (0) | 2023.03.10 |