❗ HTTP(Hypertext Transfer Protocol)은 인터넷에서 데이터를 주고 받을 수 있는 프로토콜입니다.
HTTP는 기본적으로 신뢰성 있는 데이터 전송 프로토콜(TCP) 위에서 동작하는 것으로 흔히 알려져 있지만, HTTP/3의 경우 UDP를 기반으로 해서 만들어진 QUIC위에서 동작하므로 해당 개념은 이제 정확하지 않습니다.
해당 부분이 궁금해서 다음 링크를 참고했습니다. 개인적으로 너무 흥미로운 내용이라 추후에 본인이 따로 정리해볼 예정입니다.
클라이언트는 사용자를 뜻한다고 생각하면 된다. 웹에서 사용하는 서버의 경우 WAS의 등장으로 두 가지로 나눠서 생각하는 것이 좋습니다.
해당 내용은 아래 링크에 따로 정리해 두겠습니다.
웹 리소스가 될 수 있는 것은 정적 파일뿐만이 아니라, 동적 파일도 가능합니다.
인터넷에선 수천 가지 데이터 타입을 다루기 때문에, HTTP는 웹에서 전송되는 객체 각각에 신중하게 MIME 타입이라는 데이터 포맷 라벨을 붙입니다. 이것을 통해서 웹 서버는 데이터를 확인합니다.
웹 서버 리소스는 각자 이름(경로)을 가지고 있고, 이것을통합 자원 식별자(uniform resource identifier, URI)라고 부릅니다.
URI에는 두 가지 종류가 있습니다.
❗ 트랜잭션(Transaction)이란, 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻합니다.
데이터베이스의 상태를 변화시키기 위해서 HTTP 메서드라고 불리는 여러 가지 종류의 요청 명령을 지원합니다.
HTTP 메서드 | 설명 |
---|---|
GET | 서버에서 클라이언트로 지정한 리소스를 보내라. |
PUT | 클라이언트에서 서버로 보낸 데이터를 지정한 이름의 리소스로 저장하라. |
DELETE | 지정한 리소스를 서버에서 삭제하라. |
POST | 클라이언트 데이터를 서버 게이트웨이 애플리케이션으로 보내라. |
HEAD | 지정한 리소스에 대한 응답에서, HTTP 헤더 부분만 보내라. |
이러한 요청 메세지는 상태 코드와 함께 반환합니다.
상태 코드의 간단하게 정리하고 링크를 달아놓겟습니다.
HTTP 상태 코드 | 설명 |
---|---|
정보 응답 | 1xx |
성공 응답 | 2xx |
리다이렉션 메시지 | 3xx |
클라이언트 에러 응답 | 4xx |
서버 에러 응답 | 5xx |
트랜잭션의 기본적인 동작 구조는 다음과 같습니다.
다음은 GET 메서드의 예입니다.
HTTP 메시지는 데이터를 안전하게 전달하기 위해서 TCP 커넥션을 이용합니다.
TCP/IP는 각 네트워크와 하드웨어의 특성을 숨기고, 어떤 종류의 컴퓨터나 네트워크든 서로 신뢰성 있는 의사소통을 하게 해줍니다.
트랜잭션 동작의 자세한 순서는 다음과 같습니다.
❗ 프록시는 클라이언트와 서버 사이에 위치하여, 클라이언트의 모든 HTTP 요청을 받아 전달합니다.
역할
보안의 경우 모든 웹 트래픽 흐름속에서 신뢰할 만한 중개자 역할을 합니다. 또한, 프락시는 요청과 응답을 필터링합니다.
실제로, 프록시 서버의 이러한 특징을 이용하여 기업 내에서 개인적으로 운영하는 프록시 서버가 존재합니다.
예를 들어, 해외에서 업무를 보기 위해서 기업 내의 서버에 접근을 하려고 할 때 기업 내의 프록시 서버를 이용하면 가능할 수 있습니다.
클라이언트가 보낸 HTTP 메시지가 프락시로 거쳐 가는 방법에는 4가지가 존재합니다.
참고: 프락시(Proxy)란 무엇인가? :: Ratel의 개발일지
공부하다가 생각이 든 것인데 클라우드 같은 경우 프록시 서버를 이용하여 여러 클라이언트가 클라우드 서버를 이용하는 할 때 효율적으로 처리 해주나 생각이 들었습니다(대규모 트래픽의 경우 여러 프록시 서버에서 분산해서 처리해 줄 수 있을 것이라고 생각해서). 하지만, 찾아본 결과 프록시 서버를 이용하는 것과 관련해서는 정확히 모르겠지만, 클라우드 서버의 경우 VPC(Virtual Private Cloud)방식을 이용하는 것 같습니다.
다음을 참고해 봅시다.
<참고>
❗ 캐시는 특별한 종류의 HTTP 프록시 서버로, 웹캐시와 캐시 프록시는 자신을 거쳐 가는 문서들 중 자주 찾는 것의 사본을 저장합니다.
역할
❗ 게이트웨이는 다른 서버들의 중개자로 동작하는 특별한 서버입니다.
게이트웨이는 주로 HTTP 트래픽을 다른 프로토콜로 변환하기 위해 사용합니다.
예를 들어, HTTP/FTP 게이트웨이는 FTP URI에 대한 HTTP 요청을 받아들인 뒤, FTP 프로토콜을 이용해 문서르 ㄹ가져옵니다. 받아온 문서는 HTTP 메시지에 담겨 클라이언트에게 보냅니다.
❗ 터널은 두 커넥션 사이에서 날(raw) 데이터를 열어보지 않고 그대로 전달해주는 HTTP 애플리케이션입니다.
HTTP 터널은 주로 비 HTTP 데이터를 하나 이상의 HTTP 연결을 통해 그대로 전송해주기 위해 사용합니다.
HTTP 터널을 활용하는 대표적인 예로, 암호화된 SSL 트래픽을 HTTP 커넥션으로 전송함으로써 웹트래픽만 허용하는 사내 방화벽을 통과시키는 것이 있습니다.
Reference