NETWORK

[NETWORK] HTTP / HTTPS

집한구석 2021. 10. 28. 17:11
728x90

HTTP 정의

  • HyperText Transfer Protocol
  • 웹 상에서 클라이언트와 서버간에 요청/응답을 통해 정보를 주고 받을 수 있는 프로토콜

HTTP 특징

  • TCP와 UDP를 사용하며, 80포트를 사용
  • 비연결성 (Connectionless) : 클라이언트가 요청을 서버에 보내고 서버가 적절한 응답을 클라이언트에 보내면 바로 연결이 종료
  • 무상태성 (Stateless) : 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며 상태 정보를 유지 하지 않음

HTTP 동작과정

클라이언트 -> 요청 -> 서버 -> 응답 -> 클라이언트 -> 연결종료 

1 사용자가 웹 브라우저에 URL 주소 입력
2 DNS 서버에 웹서버 호스트 이름을 IP주소로 변경 요청
3 웹 서버와 TCP 연결 시도 (3way-handshaking)
4 클라이언트가 서버에게 요청
- HTTP Request Message = Request Header + 빈 줄 + Request Body
5 서버가 클라이언트에게 데이터 응답 
- HTTP Response Message = Request Header + 빈 줄 + Request Body
6 서버 클라이언트 간 연결 종료 (4way-handshaking)
7 웹 브라우저가 웹 문서 출력 

HTTPS 정의

  • HyperText Transfer Protocol over Secure Socket Layer
  • HTTP의 보안이 강화된 버전 

HTTPS 특징

  • 443포트를 사용
  • HTTPS는 소켓 통신에서 일반 텍스트를 이용하는 대신에, 웹상에서 정보를 암호화하는 SSL / TLS를 통하여 세션 데이터를 암호화함
  • 제3자가 중간에서 정보를 볼 수 없도록 주고 받는 정보를 암호화 하기 때문에 많이 사용함

HTTPS 원리

  • 공개키 알고리즘(암호화 복호화 시킬 수 있는 서로 다른키를 이용하는 암호화 방법)을 사용
  • 공개키는 모두에게 공개하여 공개키 저장소 등록하고, 개인키는 비공개키로 개인에게만 공개됨, 서버가 가지고 있음
  • 사용자 데이터는 공개키로 암호화되서 서버로 전송되고 서버는 비공개키인 개인키로 복호화해서 요청을 처리함

HTTPS 장단점

  • 네트워크 상에 열람, 수정이 불가능해서 보안적으로 좋음
  • 암호화하는 과정이 서버에 부하를 줌
  • 인증서 설치 유지 비용이 듬
  • HTTP에 비하여 느림
  • 인터넷 연결이 끊긴 경우 재인증 시간이 소요됨 (HTTP는 비연결형으로 웹페이지를 보는중에 인터넷이 연결이 끊어졌다가 다시 연결되면 페이지를 볼수 있지만, HTTPS는 소켓자체에서 인증하기 때문에 인터넷이 끊기면 소켓도 끊어져서 다시 HTTPS인증이 필요함)

HTTPS 동작과정

공개키 암호화 방식과 대칭키 암호화 방식의 장점을 활용해서 사용하며, 데이터를 대칭키 방식으로 암복호화하고, 공개키 방식으로 대칭키 전달

1 클라이언트가 서버 접속하여 Handshaking과정에서 서로 탐색
1. Client Hello : 클라이언트가 서버에게 전송할 데이터와 생성한 랜덤데이터, 이전에 Handshaking 기록이 있으면 세션을 재활용하기 위한 세션아이디
2. Server Hello : 서버측에서 생성한 랜덤데이터, SSL인증서
3. Client 인증 확인 : 서버로 전달받은 인증서가 CA에 의해 발급되었는지, 클라이언트에서 가지고 있는 목록에서 확인한다음, CA공개키로 인증서를 복호화함, 클라이언트 세선 랜덤데이터를 조합하여 데이터 송수신시 대칭키(시크릿키) 생성과  session key 생성 해당값은 공개키 방식으로 서버에 전달
4. Server 인증 확인 : 서버는 비공개키로 복호화하여, 해당 시크릿키값 취득, session key 생성
5. Handshaking 종료 
2 데이터 전송
- 서버와 클라이언트는 session key를 활용해 데이터를 암복호화하여 데이터 송수신
3 연결 종료 및 session key 폐기

'NETWORK' 카테고리의 다른 글

[NETWORK] CORS  (0) 2021.10.31
[NETWORK] 요청 응답 헤더  (0) 2021.10.29
[NETWORK] L4 스위치  (0) 2021.09.27
[NETWORK] OSI 7계층, TCP/IP 4계층  (0) 2021.07.11
[NETWORK] TCP / UDP  (0) 2021.06.06