HTTP
Hyper Text Transfer Protocol 의 약자
서버와 클라이언트 사이에서 하이퍼텍스트를 교환하기 위한 프로토콜
인터넷 초기에 모든 웹사이트에서 기본적으로 사용
80번 포트를 사용하여 통신
HTTP의 문제점
서버에서부터 브라우저로 전송되는 정보가 암호화 되지 않는다
=> 데이터가 쉽게 도난당할 수 있다는 의미
HTTP 동작 방식
http는 서버/클라이언트 모델을 따른다
=> 클라이언트가 서버에게 요청을 보내면, 서버가 요청을 받아 클라이언트에게 응답을 보낸다
http는 Stateless 프로토콜이다
=> 각 요청을 독립적인 트랜잭션으로 취급한다는 의미
=> 따라서 클라이언트가 서버에 요청을 보내기 전에 클라이언트와 서버를 연결하는 과정이 필요
- 클라이언트와 서버가 계속 연결된 형태가 아니기 때문에, 클라이언트와 서버 간의 최대 연결 수보다 훨씬 더 많은 요청과 응답 처리 가능 -> 불특정 다수를 대상으로 하는 서비스에 적합
- 서버가 응답 후 클라이언트와의 연결을 끊기때문에 요청이 들어온느 클라이언트의 이전 상황을 알 수 없음
HTTP 요청, 응답 데이터 포맷

요청 데이터 포맷
클라이언트가 서버에게 요청 메세지를 보낼 때 정해진 규칙
요청 헤더
GET servlet/query?a=10&b=90 HTTP/1.1
요청 메서드, 서버에게 요청의 종류를 알려주기 위한 용도
요청 메소드의 종류
- GET: 정보 요청 (SELECT)
- POST: 정보 넣기 (INSERT)
- PUT: 정보 업데이터 (UPDATE)
- DELETE: 정보 삭제 (DELETE)
- HEAD: HTTP 헤더 정보 요청 (해당 자원이 존재하는지 혹은 서버에 문제가 없는지 확인하기 위해 사용)
- OPTIONS: 웹 서버가 지원하는 메서드 종류 요청
- TRACE: 클라이언트의 요청 그대로 반환 (주로 echo 서비스로 서버 상태를 확인하기 위한 목적으로 사용)
GET servlet/query?a=10&b=90 HTTP/1.1
요청 URI, 요청하는 자원의 위치를 명시해주는 부분
GET servlet/query?a=10&b=90 HTTP/1.1
HTTP의 프로토콜 버전
두 번재 줄부터는 헤더의 정보
=> 각각의 줄은 헤더 명과 헤더 값이 콜론으로 구분되어 있고, 각 줄은 라인피드와 캐리지 리턴으로 구분
요청 바디
요청할 때 가지고 가야하는 자원들이 명시되는 부분
요청 헤더 사이에 빈 줄을 삽입하여 헤더와 구분
응답 데이터 포맷
서버가 클라이언트에게 응답 메시지를 보낼 때 정해진 규칙
응답 헤더
첫 줄에는 반드시 응답 HTTP 프로토콜 버전이 나와야 함
=> 그 옆에 응답 코드, 응답 메시지 등이 나올 수 있다
나머지 헤더 부분은 나머지 헤더 부분은 날짜, 웹 서버의 이름과 버전, 콘텐츠 타입, 캐시 제어 방식, 콘텐츠 길이 등의 값
응답 바디
요청 바디와 동일하게 빈 줄로 헤더와 구분
실제 응답 리소스 데이터가 나오는 부분
HTTPS
Hyper Text Transfer Protocol Secure
인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 이용하여 클라이언트와 서버가 데이터를 주고받는 통신규약
433 포트를 사용하여 통신
HTTPS 보안

SSL인증서는 사용자가 사이트에 제공하는 정보를 암호화
=> 중간에 누군가 가로채더라도 데이터가 암호화 되어있어 확인할 수 없음
+) https에서 사용하는 TLS 프로토콜 또한 보안 유지에 도움
TSL은 데이터 무결성을 제공하기 때문에 데이터가 전송 중에 수정되거나 손상되는 것을 방지
HTTPS 동작 방식
통신을 진행 할 때 두 당사자만 믿고 통신을 하는 http와 다르게 https는 신뢰할 수 있는 다른 기관 존재
=> 해당 기관이 서버 또는 클라이언트에 SSL 인증서를 발급하여 해당 당사자를 보증하는 방식
추가적인 이점
https로 전환하면 검색엔진 최적화에 있어서도 우위를 점할 수 있음
=> 구글이 https 웹사이트에 가산점을 주어 검색시 상단에 위치하도록 함
=> https를 사용하지 않으면 안전하지 않은 웹사이트라는 경고를 띄우는 패널티를 줌
그럼 HTTP는 왜 사용하는데?
https는 안전하게 데이터를 주고 받을 수 있지만 암호화, 복호화의 과정이 추가되어 http보다 속도가 느림
또한 https는 인증서를 발급하고 유지하기 위한 추가 비용이 발생
개인 정보와 같은 민감한 데이터를 주고 받아야 한다면 https를 이용해야 하지만, 노출이 되어도 괜찮은 단순한 정보 조회 등 만을 처리하고 있다면 http를 이용하자