HTTP (Hyper Text Transfer Protocol)
서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜
인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약
80번 포트 사용
특징
- 무상태성:
프로토콜에서 클라이언트의 상태를 기억하지 않음.
클라이언트 상태 보관을 위해 쿠키, 세션, JWT 토큰 등을 이용하여 유지함. - 비연결성:
처음 연결을 맺은 후 요청과 한 번의 응답 이후 연결 종료됨.
매 요청마다 다시 연결을 맺음. - TCP 사용:
HTTP는 TCP를 transport 프로토콜로 사용.
Request & Response
1. GET
- 서버에서 데이터를 요청하여 가져온다.
- 요청한 데이터는 서버에서 읽기만 한다.
- 캐싱 가능.
2. POST
- 서버에 새로운 데이터를 생성하거나 데이터를 전송.
- 요청 본문(Body)에 데이터를 포함, 일반적으로 데이터 생성 작업에 사용.
- 캐싱 불가능.
3. PUT
- 서버에 있는 데이터를 업데이트.
- 기존 리소스를 완전히 대체하거나 생성.
- 요청 본문(Body)에 업데이트 데이터를 포함.
- 멱등성 보장: 동일한 요청을 여러 번 보내도 결과 동일.
4. PATCH
- 리소스의 일부만 수정.
(PUT은 전체 리소스를 대체하지만, PATCH는 부분 수정에 적합.) - 멱등성은 보장하지 않을 수 있음.
- 요청 본문(Body)에 수정할 데이터를 포함.
5. DELETE
- 서버에서 데이터를 삭제.
- 멱등성 보장.
6. HEAD
- 서버의 리소스 상태를 확인하기 위해 사용.
(GET과 동일하지만 응답 본문 없이 헤더만 반환.) - 리소스의 존재 여부, 크기, 변경 여부 등을 확인할 때 유용.
7. OPTIONS
- 특정 리소스가 지원하는 HTTP 메서드를 확인.
- 서버가 어떤 메서드와 기능을 지원하는지 클라이언트에게 제공.
- 주로 CORS (Cross-Origin Resource Sharing) 요청에서 사용.
8. TRACE
- 서버로부터 클라이언트 요청이 서버에 도달하는 경로를 확인.
(요청이 중간 프록시를 거칠 경우 유용.) - 디버깅 목적으로 사용.
- 요청을 그대로 반환하며, 이를 통해 경로를 추적.
HTTPS (Hyper Text Transfer Protocol Secure)
HTTP에 데이터 암호화가 추가된 프로토콜
443번 포트 사용
특징
- 네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화 지원.
- 대칭키 암호화와 공개키 암호화를 조합하여 작동.
- SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화.
SSL
클라이언트와 서버 간의 통신을 공인된 제3자(CA) 업체가 보증해주는 전자화된 문서.
SSL에서 사용하는 암호화의 종류
- 암호:
텍스트를 아무나 읽지 못하도록 인코딩하는 알고리즘. - 키:
암호의 동작을 변경하는 매개변수.
키에 따라서 암호화 결과가 달라지기 때문에 키를 모르면 복호화가 불가능하다.
1. 대칭키 암호화 방식
- 인코딩과 디코딩에 같은 키를 사용하는 알고리즘.
- 단점:
발송자와 수신자가 서로 대화하려면 둘 다 공유키를 가져야 한다는 점.
대칭키를 전달하는 과정에서 키가 유출되면 암호의 내용을 복호화할 수 있어 위험.
2. 공개키 암호화 방식
- 인코딩과 디코딩에 다른 키를 사용하는 알고리즘.
- 특징:
- A 키로 암호화하면 B 키로 복호화 가능.
- B 키로 암호화하면 A 키로 복호화 가능.
- Public Key (공개키): 누구나 접근 가능하며, 보통 디지털 인증서에 포함.
- Secret Key (비공개키): 호스트만이 알고 있는 개인 키.
-
공개키와 비공개키의 분리를 통해 메시지 인코딩은 누구나 가능,
디코딩은 비밀키 소유자에게만 허용. - 단점:
공개키 암호화 방식의 알고리즘은 계산이 느려지는 경향이 있다.