CS/네트워크

네트워크 - HTTP/S

개발 일기92 2024. 6. 19. 13:11

HTTP?

인터넷상에서 데이터를 전송하기 위한 프로토콜. TCP/IP 4계층의 응용 계층이다.

 

HTTP 특징

1. 비연결성 -

클라이언트에서 요청을 보낸 후 서버로 부터 응답을 받으면 연결을 끊는 것.

불특정 다수를 대상으로 하는 서비스에 유리.

응답을 기다리지 않기에 자원 사용에 유리하지만 클라이언트를 기억할 수 없다는 단점으로 인해 동일한 클라이언트가 연속 요청을 하면 연결 해제 과정을 반복해 오히려 자원 낭비가 된다.

-> 이러한 단점을 보완하기 위해 일정 시간 동안 연결을 유지할 수 있도록 HTTP Keep Alive를 사용한다.

마지막 응답 이후 일정 시간 연결을 유지하여 동일 클라이언트의 요청이 오면 연결 과정 생략할 수 있다.

 

2. 무상태 -

서버에서 클라이언트 상태를 저장하지 않는 것.

ex) 분식집 

고객 : 김밥 가격 얼마인가요?

직원 : x천원 입니다.

고객 : 쿠폰으로 결제할게요.

직원 : 어떤 상품 구매하시나요?

 

고객은 '김밥 한 줄을 쿠폰으로 결제할게요.' 와 같이 한 번에 요청해야한다.

위 상황 처럼 클라이언트가 이전에 요청한 사항을 서버에 저장하지 않는다.

클라이언트는 요청에 필요한 데이터를 모두 가지고 있거나 서버가 클라이언트로 받은 요청을 모두 저장해야한다.

이 방법들을 각각 쿠키(Cookie)세션(Session)이라한다.

 

쿠키?- 클라이언트의 로컬 웹 브라우저에 저장하는 데이터 파일. 키와 값을 저장한다. 

ex) 웹 사이트의 로그인 정보, 온라인 쇼핑몰의 장바구니

세션?- 서버에서 클라이언트와의 연결 정보를 저장/관리하는 것.

서버에 데이터가 저장되므로 보안 면에서는 쿠키보다 좋지만, 접속자가 많을 시 과부하가 올 수 있다.


HTTP에서는 클라이언트와 서버가 통신하기 위해 정형화된 데이터인 HTTP 메세지를 주고 받는다.

 

HTTP 메세지 구조?

  • 요청 라인(request line) : 요청 URI, 요청 방법, HTTP 버전 등을 포함.
  • 상태 라인(status line) : 요청에 대한 HTTP 상태 코드와 HTTP 버전 포함.
  • 헤더 (Header) : 키-값으로 구성된 다수의 헤더 항목으로 구성된다.
  • 빈 줄(blank line) : 헤더의 끝을 나타내는 빈 줄로, 헤더와 바디를 구분.
  • 바디(body) : 요청할 때 요청 방법 메서드가 POST인 경우에만 바디가 있고, 그 외 메서드 일때는 비어있는 상태로 전달.

HTTPS?

보안 계층인 SSL/TLS를 이용해 HTTP의 보안을 강화한 웹 통신 프로토콜.

HTTP는 데이터 암호화를 거치지 않아 보완된 HTTPS가 등장.

 

SSL은 암호화 프로토콜인데 문제점이 생겨 새로운 암호화 프로토콜인 TLS가 등장하였다.

 

HTTPS 동작 방식?

데이터를 송신할 때 응용 계층 -> 보안 계층의 SSL/TLS로 데이터를 보내면 암호화 하여 전송 계층으로 전달한다.

데이터를 수신할 때 전송 계층에서 보낸 데이털르 보안 계층의 SSL/TLS가 받아 복호화 후 응용 계층으로 보낸다.

HTTP HTTPS
  응용 계층, HTTPS
응용 계층, HTTP 보안 계층, SSL/TLS
전송 계층, TCP 전송 계층, TCP
인터넷 계층, IP 인터넷 계층, IP
네트워크 인터페이스 계층, 네트워크 인터페이스 네트워크 인터페이스 계층, 네트워크 인터페이스

 

SSL/TLS의 암호화 방식?

1. 대칭 키 암호화 방식 : 암호화와 복호화에 모두 같은 키인 대칭 키를 이용함.

송신자는 수신자에게 받은 키로 데이터를 암호화 한 후 수신자에게 보낸다.

수신자는 보냈던 키로 받은 데이터를 복호화 한다. 

대칭키 유출되지 않도록 주의하여야 함.

(송신자가 다르면 이용하는 키가 다름)

 

2. 공개 키 암호화 방식 : 암호화와 복호화를 다른 키로 하는 방식.

암호화 -> 공개 키.

복호화 -> 비밀 키

수신자는 송신자에게 공개키를 전달.

송신자는 전달 받은 공개키로 데이터 암호화.

수신자는 비밀키로 받은 데이터를 복호화.

비밀 키가 있어야만 복호화가 가능하여 공개 키 유출은 염려하지 않음.

(송신자가 달라도 공개 키는 같다)

 

'CS > 네트워크' 카테고리의 다른 글

네트워크 - 정리  (0) 2024.06.20
네트워크 - REST  (0) 2024.06.19
네트워크 - OSI 7계층, TCP/IP, TCP/UDP  (0) 2024.06.19