취미가 좋다
HTTP 설명 (GET vs POST) (HTTP vs HTTPS) 본문
HTTP (Hypertext Tranfer Protocol)
클라이언트와 서버와 통신을 가능케 하는 프로토콜이다.
- 브라우저로 인터넷에 접속하는데 사용된다.
- TCP/IP 위에서 동작한다.
- 클라이언트가 서버로 요청하는 것이 통신의 시작이다.
- 이 요청의 목적을 Method로 표시한다.
- Method 중 대표적인 GET, POST를 살펴볼 것이다.
특징
단방향성 | 클라이언트가 서버로 요청을 보내고 이에 대한 응답을 받는 단방향적 통신이다. |
비연결성 | 연결이 계속 유지되지 않고 요청에 대한 응답이 끝나면 연결을 끊는다. |
무상태성 | 클라이언트가 서버와 연결된 상태가 아니기 때문에 기본적인 상태를 가지지 않는다. 이를 보안하기 위해 쿠키, 세션, 토큰 등을 사용한다. |
응답 코드
2xx | 성공 요청이 정상적으로 이주어졌다. |
3xx | 리다이렉션, 요청을 완료하기 위해 다른 주소로 이동해야 한다. |
4xx | 클라이언트 오류. 올바르지 않은 요청 |
5xx | 서버 오류. 올바른 요청에 대해 서버의 문제로 응답 불가능 |
GET vs POST
클라이언트가 HTTP 프로토콜로 서버에 무언가 요청할 때 사용되는 데이터 전달 방식이다.
GET
- 서버의 데이터를 가져올 때 사용한다.
- HTTP Request Message의 헤더 부분의 URL에 요청하는 데이터를 담아서 전송한다.
- URL 에서 ?뒤에 데이터가 붙어서 요청하는 것이다.
- 이 방식은 URL이라는 공간에 담겨가기 때문에 보낼 수 있는 데이터 크기가 제한적이다.
- 데이터가 그대로 노출되므로 보안에 취약하다.
- 브라우저에서 캐싱할 수 있기 때문에 보안에 취약하지만 편하기도 하다.
POST
- 서버 쪽에 어떤 작업을 명령할 때 사용된다. (데이터 추가, 삭제, 수정)
- HTTP Request Message의 body 부분에 데이터가 담겨서 전송된다.
- GET보다 보낼 수 있는 데이터의 크기가 더 크고 보안이 좀 더 낫다.
URL
- Uniform resource locator : 자원의 위치
- 쉽게 말하면 인터넷 주소이고 2가지로 표시할 수 있다.
- 도메인 name
- ip 주소
- 앞에 프로토콜(http://)이 붙는다.
HTTP vs HTTPS
HTTP의 문제점
- 평문 통신이기 때문에 도청이 가능하다.
- 통신 상대를 확인하지 않기 때문에 위장이 가능하다.
- 완전성을 증명할 수 없기 때문에 변조가 가능하다.
HTTPS의 S는 Secure로 HTTP의 보안을 강화한 프로토콜이다.
- 어떤 웹 서버에 보내는 정보를 다른 사람이 보지 못하도록 암호화한다.
- 접속하려는 사이트가 신뢰할 수 있는 사이트인지 확인하여 수상한 사이트를 걸러낸다.
대칭키
- 하나의 키로 암호화와 복호화를 하여 데이터를 주고 받는다.
- 이 키를 공유하는 과정이 보안에 취약하다.
비대칭키
- 두 개의 키로 서로가 암호화한 것을 복호화할 수 있다.
- 웹 서버는 하나의 키(공개키)를 모두에게 공개한다.
- 클라이언트가 아이디와 비밀번호를 공개키로 암호화하면 비대칭키를 갖는 웹 서버만 그 정보를 이해할 수 있다.
- CA(Certificate Authority)에서 공개키가 정품인지 확인한다.
- 웹 서버가 암호화한 데이터를 공개키로 복호화할 수 있다면 신뢰할 수 있는 사이트이다.
통신 순서
- 신뢰할 수 있는 사이트인지 알아보기 위해 클라이언트는 랜덤 데이터를 생성해서 서버에 보낸다.
- 데이터를 받은 서버 측은 다른 무작위 데이터와 해당 서버의 인증서를 실어보낸다.
- 인증서가 진짜인지 브라우저에 내장된 CA들의 정보를 통해 확인한다.
- CA의 인증을 받은 인증서들은 해당 CA의 개인키로 암호화가 되어있다.
- 진짜 인증서라면 CA의 공개키로 복호화할 수 있다.
- 클라이언트는 앞의 무작위 데이터를 혼합해서 임시 키를 만든다.
- 임시 키를 서버의 공개키로 암호화해서 서버로 보낸다.
- 서버와 클라이언트는 일련의 과정으로 임시 키를 대칭키로 만든다.
- 이 대칭키로 서버와 클라이언트가 통신을 한다.
공개키를 얻는 과정
- 서비스를 제공하는 기업 A가 공개키와 개인키를 만든다.
- 신뢰할 수 있는 CA 기업을 선택하고 공개키를 관리해주기 위한 계약을 한다.
- 계약이 성사되면 CA 기업은 자신의 개인키로 인증서를 만든다.
- 인증서 : CA 기업 정보 + A 서버의 공개키 + 공개키 암호화 방법 등을 CA 기업의 개인키로 암호화한 인증서
- 클라이언트가 공개키가 없는 상태에서 A의 서버로 접속하기 위해서 HTTPS 가 아닌 요청을 한다.
- 서버는 인증서를 클라이언트에게 보낸다.
- 클라이언트의 브라우저는 CA 기업의 공개키를 알고 있으므로 복호화해서 공개키를 얻는다.
여기서 CA의 공개키로 복호화가 가능하다는 것은 CA의 개인키로 암호화한 인증서라는 것을 알 수 있다.
'Computer Science > 네트워크' 카테고리의 다른 글
Blocking / Non-blocking & Synchronous / Asynchronous (0) | 2021.10.04 |
---|---|
TCP 의 흐름 제어 / 오류 제어 / 혼잡 제어 (0) | 2021.10.04 |
네트워크 9 : 무선 랜 이해하기 (1) | 2021.10.02 |
네트워크 8 : 네트워크 전체 흐름 (0) | 2021.10.02 |
네트워크 7 : 응용 계층 - Application Layer (0) | 2021.09.29 |
Comments