HTTP(Hyper Text Transfer Protocol)란
서버와 클라이언트간에 데이터를 주고 받기 위한 프로토콜이다.
HTTP는 텍스트,이미지,영상,JSON 등 거의 모든 형태의 데이터를 전송할 수 있으며 인터넷 하이퍼텍스트를 교환하기 위한 통신 규약이며 80번 포트를 사용한다. HTTP 서버가 80번 포트에서 요청을 기다리고 있고 클라이언트는 80번 포트로 요청을 보내게 된다.
-- port : 논리적인 접속 장소로 포트 번호를 통해 어떤 프로그램에 접속할 것인지 컴퓨터에게 알려줄 수 있다.
JSON이란
서버에서 클라이언트로 데이터를 보낼 때 사용하는 양식으로 클라이언트가 사용하는 언어에 관계 없이 통일 된 데이터를 주고 받을 수 있도록 일정한 패턴을 지닌 문자열을 생성하여 내보내면 클라이언트는 그를 해석하여 데이터를 자기만의 방식으로 온전히 저장, 표시할 수 있게 된다.
HTTPS(Hyper Text Transfer Protocol Secure)란?
HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에 비밀번호나 주민번호등 개인 정보를 주고 받을 때 제3 자가 정보를 조회할 수 있어 보안에 취약하기 때문에 이런 문제를 해결하기 위해 나온 것이 HTTPS이다. HTTPS는 HTTP에 암호화가 추가 된 프로토콜로 HTTP와는 다르게 443포트를 사용하며, 기존의 HTTP를 SSL(Secure Sockets Layer) 프로토콜 위에서 돌아가도록 하여 네트워크 상에서 중간에 제3자가 정보를 가로챌 수 없도록 암호화를 지원한다.
SSL 이란?보안 소켓 계층으로 웹사이트와 브라우저 사이에 전송 되는데이터를 암호화 하여 인터넷 연결을 보호하기 위한 표준 기술이다.
대칭키 암호화
공개키(비대칭키) 암호화
HTTP 동작과정
서버접속 ->클라이언트 ->요청 ->서버 ->응답 ->클라이언트 ->연결종료
1.사용자가 웹 브라우저에 URL 주소를 입력한다.
2.DNS 서버에 웹 서버의 호스트 이름을 IP 주소로 변경 요청한다.
3.웹서버와 TCP 연결을 시도한다.(3way-handshaking)
4.클라이언트가 서버에게 요청한다.
5.서버가 클라이언트에게 데이터 응답을 한다.
6.서버 클라이언트 간 연결을 종료한다.(4-way-handshaking)
7.웹 브라우저가 웹 문서를 출력한다.
DNS(Domain Name System)란? IP 주수와 도메인명을 서로 교환하는 장치
HTTPS 동작과정
1.브라우저가 서버로 최초 연결을 시도하는 패킷을 전송한다.
(Client Hello)
- 패킷안에는 브라우저에서 생성한 랜덤 데이터, 브라우저가 사용할 수 있는 암호화 방식, 세션 아이디 등이 담겨있다.
2.서버는 브라우저에 응답한다.(Server Hello)
- SSL인증서, 서버에서 생성한 랜덤 데이터 서버가 선택한 암호화 방식등을 넘겨준다.
3.브라우저는 인증서의 유효성을 검증한다.
- SSL 인증서 검증
- 브라우저는 인증서를 발급한 인증기관(CA)의 공개키를 사용하여 SSL 인증서를 복호화한다.
- 복호화 성공 시 인증 검증 성공
4.브라우저는 서버에게 대칭키를 전달한다.
-브라우저는 데이터를 암호화 하기 위한 대칭키를 생성한다.
-브라우저는 대칭키를 서버만 볼 수 있도록 서버의 공개키로 암호화를 해서 전달한다.
(서버의 공개키는 3단계에서 SSL 인증서 복호화시 얻거나, 2번 단계에서 서버에게 직접 얻는다.)
6.브라우저와 서버는 동일한 키를 공유하므로 데이터를 전달할 때 공유한 키를 사용하여 암복호화를 진하여 데이터를 주고 받는다.
7.연결 종료한다.
🙇 참고 사이트 🙇
https://mangkyu.tistory.com/98 https://devjem.tistory.com/3 https://www.ascentkorea.com/difference-between-http-and-https/ https://velog.io/@ragnarok_code/Network-HTTP%EC%99%80-HTTPS-%EB%8F%99%EC%9E%91%EA%B3%BC%EC%A0%95 https://namu.wiki/w/JSON