기술면접을 위해 기초 CS에 대한 복습중이다.
공부한 내용 중 요점이나 나중에 기억해야할 부분을 정리해보려고 한다.
내가 아는 부분은 생략되어 있을 수 있고, 혹여나 틀린 부분이 있을 수도 있으니 이 글을 보고 '다른 사람'이 공부하기에는 도움이 되지 않을 수 있으니 주의!
HTTP의 GET과 POST 비교
- GET: HTTP Request Message의 header 부분에 있는 url에 데이터가 담겨서 전송
크기에 제한이 있음. 보안이 필요한 것에는 적절하지 않음.
Select적인 성향. 서버의 값을 변경하지 않음. - POST: HTTP Message의 Body에 담겨서 전송
크기, 보안 면에서 GET보다 낫다.
서버의 값을 변경/추가 등
Handshake
- 연결 성립(3-way-handshake): 클라이언트와 서버 사이에 세 번
클라이언트 서버 -----SYN(a)------> <-ACK(a+1),SYN(b)- -----ACK(b+1)---->
- 연결 해제(4-way-handshake): 클라이언트와 서버 사이에 네 번
클라이언트 서버 -----Fin----> <----ACK----- <----Fin----- -----ACK---->
- why 3-way?: 양방향성. 패킷을 주고/받고 둘 다 되는지 확인하기 위해
- 처음 SYN 보낼 때 난수를 보내는 이유: 이전의 connection으로 오는 '패킷'인지, 'SYN'인지 구분하기 위해
UDP - User Datagram Protocol
- 비연결형 프로토콜
- 수신 여부 확인 X, 신뢰성↓, 속도↑
- 1:N, N:N 가능
- ex) 영상 스트리밍
TCP - Transmission Control Protocol
- 연결형 프로토콜
- handshaking으로 수신 여부 확인, 신뢰성↑, 속도↓
- 1:1로만 가능
- 전송 순서 보장 (패킷에 번호를 붙여서 나중에 재조립)
HTTP & HTTPS
- HTTPS: SSL 적용으로 보안 처리. 제 3자가 볼 수 없음. 신뢰할만한 사이트 인증.
- 대칭키: 같은 key로 암호화/복호화. key가 노출되면 위험하다는 단점
- 비대칭키: 개인 키 - 공개 키 (private key - public key)
- 인증서: CA에서 발급한 인증서. 인증을 받아야만 HTTPS 사이트가 된다.
3번과 5번에서 만든 비대칭키와 비대칭키로 클라이언트와 서버가 소통하게 된다.- 클라이언트와 서버가 핸드쉐이킹을 한다. 이 때 서버는 인증서를 포함시켜 보낸다.
- CA가 발급한 인증서가 맞다면 CA의 개인키로 암호화 되어 있을 것이고
브라우저에 저장된 개인키로 인증서 복호화가 가능할 것이다. - 인증서에는 서버의 공개키가 포함되어 있다. =>비대칭키
- 클라이언트에서 1번에서 주고 받은 데이터로 임시 key를 만들고, 그걸 비대칭키 시스템으로 서버로 보낸다.
- 임시 key를 이용해 대칭키를 만든다.
'Study note > CS' 카테고리의 다른 글
디자인 패턴 2 (0) | 2024.04.12 |
---|---|
디자인 패턴 1 (0) | 2024.04.12 |
DB 데이터베이스 (0) | 2024.04.12 |
개발 상식 (0) | 2024.04.12 |
Operation System (0) | 2024.04.12 |