1. HTTP란?
HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜
1.1. 프로토콜(Protocol) 이란?
- 둘 이상의 통신개체간에 교환되는 메세지 포멧과 순서뿐 아니라, 메세지의 송수신과 이벤트에 따른 행동들을 정의한다.
- 여러 계층으로 나눠진 네트워크 구조에서 동일 계층에서 사용하는 표준화된 통신 규약으로,네트워크 기능을 효율적으로 발휘하기 위한 협정
1.1.1. 프로토콜의 주요기능
- 단편화와 재합성
- 캡슐화
- 주소지정, 순서지정, 흐름제어
- 연결제어, 오류제어, 동기화, 다중화
1.2. HTTP의 기본 구조
① 시작 라인 (Start line)
- 기본적으로 HTTP 버젼에 대한 정보를 가지고 있으며, Response인지 Request인지에 따라 약간 형태가 다르다.
② 헤더 (Header)
- header-field : field-value 으로 구성되어 있다.
- HTTP 전송에 필요한 모든 부가정보를 가지고 있다.
③ 메시지 본문 (Message Body)
- 메세지의 본문, 통신을 통해 보내고자 하는 Data를 담고 있다.
1.3. HTTPS
- HTTPS는 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전이다. HTTPS는 통신의 인증과 암호화를 위해 넷스케이프 커뮤니케이션즈 코퍼레이션이 개발한 넷스케이프 웹 프로토콜이며, 전자 상거래에서 널리 쓰인다.
- 기존의 HTTP 프로토콜은 서버에서부터 브라우저로 전송되는 데이터가 암호화되지 않는다는 보안상 취약점이 있었다.
- 그래서 중간에 데이터가 쉽게 도난당할 우려가 있으므로 이에 대한 보안이 추가된 HTTPS가 등장하게 되었다.
- HyperText Transfer Protocol over Secure Socket Layer, HTTP over TLS, HTTP over SSL, HTTP Secure 등으로 불리는 HTTPS는 HTTP에 데이터 암호화가 추가된 프로토콜이다.
- HTTPS 프로토콜은 SSL(보안 소켓 계층)을 사용함으로써 이 문제를 해결했다.
- SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고 서버 브라우저가 민감한 정보를 주고받을 때 이것이 도난당하는 것을 막아준다.
- HTTPS는 HTTP와 다르게 443번 포트를 사용하며, 네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화를 지원하고 있다.
- HTTPS는 TLS(전송 계층 보안) 프로토콜을 사용해서 보안을 유지한다.
- TLS는 데이터 무결성을 보장해서 데이터가 전송 중에 수정되거나 손상되는 것을 방지하며 사용자가 접속하려는 웹사이트와 통신하고 있음을 증명할 수 있는 인증 기능도 가지고 있다.
1.3.1. 대칭키 암호화와 비대칭키 암호화
- HTTPS는 대칭키 암호화 방식과 비대칭키 암호화 방식을 모두 사용하고 있다.
- 대칭키 암호화
- 클라이언트와 서버가 동일한 키를 사용해 암호화/복호화를 진행함
- 키가 노출되면 매우 위험하지만 연산 속도가 빠름
- 비대칭키 암호화
- 1개의 쌍으로 구성된 공개키와 개인키를 암호화/복호화 하는데 사용한다
- 키가 노출되어도 비교적 안전하지만 연산 속도가 느리다.
- 공개키: 모두에게 공개가능한 키
- 개인키: 수신자가 보유하고 있으며 암호화된 데이터에 대해 복호화하기 위해 사용하는 키
공개키와 개인키로 암호화하면 각각 다음과 같은 효과를 얻을 수 있다.
공개키 암호화
- 공개키로 암호화를 하면 개인키로만 복호화할 수 있다.
- 개인키는 수신자만 소유하고 있으므로 인가된 사용자만 내용을 확인할 수 있다.
개인키 암호화
- 개인키로 암호화하면 공개키로만 복호화할 수 있다.
- 공개키는 모두에게 공개되어 있으므로, 발신자가 인증한 정보임을 알려 신뢰성을 보장할 수 있다.
1.4. HTTP VS HTTPS
구분 | HTTP | HTTPS |
FULL NAME | Hypertext Transfer Protocol | Hypyertext Transfer Protocol Secure |
기본 프로토콜 종류 | HTTP/1, HTTP/2 → TCP/IP HTTP/3 → QUIC |
HTTP요청 및 응답을 추가로 암호화하기 위하여 SSL/TLS와 HTTP/2 사용함 |
기본 포트 | 80 | 443 |
용도 | 텍스트 기반 웹 사이트 | 모든 최신 웹사이트 |
보안 | 추가 보안 기능 없음 | 퍼블릭 키 암호화에 SSL 인증서 사용 |
장점 | 인터넷을 통한 통신 지원 | 웹 사이트에 대한 권위, 신뢰성 및 검색 엔진 순위 개선 |
- HTTPS는 암호화 과정이 포함되어 있으므로 HTTP 보다 보안에 더 안전하다.
- 하지만 HTTPS를 사용하면 암호화/복호화 과정이 필요하므로 HTTP 보다 속도가 느리다.
- HTTPS는 인증서를 발급하고 유지하기 위한 추가 비용이 발생한다.
- 개인 정보와 같은 민감한 데이터를 주고 받아야 한다면 HTTPS를 이용해야 하지만, 노출이 되어도 괜찮은 단순한 정보 조회 등 만을 처리하고 있다면 HTTP를 이용해도 된다.
1.4.1. HTTP Method
① GET
서버에게 Resource를 보내도록 요청하는데 사용 (서버의 Resource를 읽음)
② HEAD
GET과 동일하지만 서버에서 Body를 Return 하지 않음
- Resource를 받지 않고 오직 찾기만 원할때
- object가 존재할 경우 응답의 상태 코드를 확인할때
- 서버의 응답 헤더를 봄으로써 Resource가 수정 되었는지 확인
③ PUT
서버에 문서를 쓸때 사용 (GET과 반대)
- PUT 메소드는 서버가 Client 요청의 Body를 확인한다.
- 요청된 URL에 정의된 새로운 Resource를 생성하기 위함
- 요청된 URL이 존재할 경우 대체하여 사용
④ POST
Server에 Input Data를 보내기 위함 (HTML form에 많이 사용)
- PUT vs. POST
- PUT은 서버의 Resource에 Data를 저장하기 위한 용도
- POST는 서버에 DATA를 보내기 위한 용도
⑤ TRACE
Client로 부터 Request Packet이 방화벽, Proxy Server, Gateway등을 거치면서 packet의 변조가 일어날 수 있는데, 이 때 Server에 도달 했을 때의 최종 Packet의 Request Packet을 볼수 있다.
- 즉, Original Data와 서버에 도달했을 때의 비교본 Data를 서버의 응답 Body를 통해 확인 할 수 있다.
- 요청의 최종 수신자는 반드시 송신자에게 200(OK) 응답의 내용(Body)로 수신한 메세지를 반송해야 한다.
- 최초 Client의 요청에는 Body가 포함될수 없다.
⑥ OPTION
Target Server의 지원 가능한 method(ex> GET, POST …)를 알아보기 위해 사용한다.
⑦ DELETE
- 요청 Resource를 삭제하도록 요청
- HTTP 규격에는 Client의 요청에도 서버가 무효화 시킬수 있도록 정의되어 있다.
- DELETE Method는 항상 보장되지 않는다.
'CS BASIC > 네트워크와 정보통신' 카테고리의 다른 글
[네트워크] OSI 7계층과 TCP/IP 모델 (0) | 2024.06.27 |
---|---|
[네트워크] 통신 시스템 일반 (0) | 2024.04.24 |
[CS BASIC] 네트워크(Network)와 OSI 7계층 (1) | 2024.01.04 |