celina의 이것저것
HTTP와 HTTPS 본문
반응형
HTTP (Hyper Text Transfer Protocol)
- 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜
- 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약
- 80번 포트 사용
- 무상태성: 프토토콜에서 클라이언트의 상태를 기억하지 않음, 클라이언트 상태 보관을 위해 쿠키,세션,JWT토큰 등을 이용하여 유지함
- 비연결성: 처음 연결을 맺은 후 요청과 한번의 응답 이후 연결종료됨, 매 요청마다 다시 연결맺음
- 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에서 사용하는 암호화의 종류
- 암호 : 텍스트를 아무나 읽지 못하도록 인코딩하는 알고리즘
- 키 : 암호의 동작을 변경하는 매개변수, 키에 따라서 암호화 결과가 달라지기 떄문에 키를 모르면 복호화가 불가능하다.
대칭키 암호화 방식
- 인코딩과 디코딩에 같은 키를 사용하는 알고리즘
- 단점 : 단점은 발송자와 수신자가 서로 대화하려면 둘 다 공유키를 가져야 한다는 것이다.
- 대칭키를 전달하는 과정에서 키가 유출이 되면 암호의 내용을 복호화할 수 있기 때문에 위험하다
- 이를 보완하기 위해서 나온 방법이 공개키 암호화 방식이다.
공개키 암호화 방식
- 인코딩과 디코딩에 다른 키를 사용하는 알고리즘
- A키로 암호화를 하면 B키로 복호화를 할 수 있고, B키로 암호화 하면 A키로 복호화 할 수 있는 방식
- 인코딩 키 (public key)는 공개되어 있으며 (그래서 공개키 암호방식이라는 이름이 붙었다.) 보통 디지털 인증서안에 포함되어 있다.
- 디코딩 키는 (secret key)는 호스트만이 개인 디코딩 키를 알고있다.
- 공개키와 비공개키의 분리는 메시지의 인코딩은 누구나 할 수 있도록 해주는 동시에, 메시지의 디코딩은 비밀키 소유자에게만 부여한다.
- 이는 클라이언트가 서버로 안전하게 메시지를 발송하는 것을 쉽게 해준다.
- 단점 : 공개키 암호화 방식의 알고리즘은 계산이 느린 경향이 있다.
참고
https://opentutorials.org/course/228/4894
HTTPS와 SSL 인증서 - 생활코딩
HTTPS VS HTTP HTTP는 Hypertext Transfer Protocol의 약자다. 즉 Hypertext 인 HTML을 전송하기 위한 통신규약을 의미한다. HTTPS에서 마지막의 S는 Over Secure Socket Layer의 약자로 Secure라는 말을 통해서 알 수 있듯이
opentutorials.org
https://developer.mozilla.org/ko/docs/Web/HTTP/Messages
'IT' 카테고리의 다른 글
로드 밸런싱 Load Balancing (1) | 2024.12.17 |
---|
Comments