서버와 클라이언트간에 데이터를 주고 받는 프로토콜이다.
HTTP는 텍스트, 이미지, 영상 등 거의 모든형태의 데이터를 전송할 수 있다.
웹브라우저는 사용자가 요청한 정보를 웹서버에게 텍스트 (header라고 하는)를 만들어서 대신 물어봐준다. 그러면 웹서버는 응답헤더를 만들어서 웹브라우저에게 주고 웹브라우저는 응답받은 정보를 화면에 그려준다.
GET / doc / test.html HTTP/1.1 --- > Request Line
Host: www.test101.com
Accept: image/gif, image/jpeg, \*/*
Accept-Language: en-us
Accept-Enconding: gzip, deflate
User-Agent: Mozilla/4.0
Content-Lenght: 35 --- > 두번째 Host 부터 여기까지
(여기는 빈칸으로 header와 body를 구분한다.) Request Headers
bookID=12345&author=Tan+Ah+Teck --- > Request Message Body
HTTP/1.1 200 OK --- > Status Line
Date: Sun, 08 Feb xxxx 01:11:11 GMT
Server: Apache/ 1.3.29 (Win32)
Last-Modified: Sat, 07 Feb xxxx
ETag: "0-23-4024c3a5"
Accept-Range: bytes
Content-Length: 35
Connection: Colse
Content-Type: text/html --- > 두번째 행부터 여기까지
(A blank line separates header & body) Response Headers
<h1\>My Home page<\h1>
정리
Web sever와 Web browser가 통신할 때 Web browser에서 Request headers 코드를 짜서 보내면 Web server는 response headers를 만들어주고 그 밑에 Reponse코드를 빈칸으로 구분해서 보내면 Web browser가 이것을 참고해서 화면에 띄운다.
HTTPS는 SSL 위에 HTTP를 얹어서 보안이 보장된 통신을 하는 프로토콜이다. 이 통신 방식을 SSL암호화 통신 이라고도 합니다.
SSL(Secure Sockets Layer)
TLS(Transport Layer Security)
대칭키 암호화
비대칭키 암호화
1. 클라이언트가 서버에 암호화 알고리즘과 TLS버전 정보를 전송하며, 난수 값을 생성하여 전송.
2. 서버가 클라이언트에게 사용할 TLS버전, 사용할 암호화 알고리즘, 난수값을 전송.
3. 서버가 클라이언트에 CA로 부터 발급받은 인증서(공개키)를 전송
4. 클라이언트는 인증서의 유효성을 검사하고 세션키를 발급
5. 클라이언트는 세션키를 보관하며 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송
6. 서버는 개인키로 암호화된 세션키를 복호화.
7. 클라이언트와 서버는 동일한 세션키로 데이터를 전달할 때 세션키로 암호화/복호화를 진행
* 인증서와 CA(Certifivate authority)
SSL을 적용하기 위해서는 인증서라는 것이 필요하다.
인증서의 내용은 1.서비스의 정보(CA,도메인 등..) 2.서버측의 공개키(공개키의 내용, 공개키의 암호화 방식)
이 인증서를 발급해주는 기업을 CA라고 한다.
참고한자료
https://mysterico.tistory.com/30!
https://mangkyu.tistory.com/98
유튜브 생활코딩-HTTP https://www.youtube.com/watch?v=t7ASgtJoVz4&list=PLBukFigBWXZKFBYkjzFRRcFmqCmyUJbKM&index=1