1부 HTTP: 웹의 기초
├── 1장 HTTP 개관
│ ├── 1.6 TCP 커넥션
│ ├── 1.7 프로토콜 버전
│ ├── 1.8 웹의 구성요소
│ ├── 1.9 시작의 끝
│ └── 1.10 추가 정보
│
├── 2장 URL과 리소스
│ ├── 2.1 인터넷의 리소스 탐색하기
│ ├── 2.2 URL 문법
"HTTP는 애플리케이션 계층 프로토콜이다. HTTP는 네트워크 통신의 핵심적인 세부사항에 대해서 신경 쓰지 않는다. 대신 대중적이고 신뢰성 있는 인터넷 전송 프로토콜인 TCP/IP 에게 맡긴다."
HTTP 요청을 직접 테스트하거나 커넥션을 점검할 때 유용한 도구
클라이언트-서버 중개자
- 포워드 프록시
클라이언트(Front-end)에게 미리 저장해둔 정적 데이터 반환- 리버스 프록시
다수의 서버를 프록시 서버 하단부에 배치, 조건에 맞는 요청을 적절한 서버에게 전달(분산)
jcdgods.tistory.com
항목 | Forward Proxy | Reverse Proxy |
---|---|---|
대리하는 쪽 | 클라이언트 (사용자) | 서버 (서비스 제공자) |
주 사용 목적 | - 사용자의 익명성 보호 - 방화벽 우회 - 접근 제어 - 캐싱 | - 서버 IP 숨김 - 로드 밸런싱 - SSL 종료 - 캐싱 |
접속 대상 | 여러 외부 서버 (인터넷 등) | 여러 내부 서버 (서비스 서버 등) |
요청 흐름 | 사용자가 프록시에 요청 → 프록시가 외부 서버에 요청 | 사용자가 프록시에 요청 → 프록시가 내부 서버에 전달 |
사용 예시 | - 회사에서 사내 직원들이 인터넷 접속 - VPN, Tor - 웹 필터링 | - Nginx를 웹서버 앞에 둠 - AWS CloudFront - Netlify, Vercel 같은 플랫폼 |
IP 숨김 대상 | 사용자의 IP 주소 | 서버의 IP 주소 |
클라이언트 입장 | 실제 서버를 모름 (프록시 통해서만 접속) | 실제 서버가 어디 있는지 모름 (프록시 주소로만 접속) |
일종의 프락시 서버
HTTP 헤더의 Cache-Control
, ETag
, Last-Modified
등을 통해 동작
프락시 = 캐시 라고 알고 있었는데, 캐시는 캐싱 기능을 하는 일종의 프락시였다. 프락시는 캐싱외에도 보안, 로드발란싱, 접근 제어 등으로 사용된다.
서로 다른 프로토콜/네트워크와 HTTP 사이를 중개하는 서버
클라이언트 입장에서는 일반 HTTP 서버처럼 보임
e.g., NAT 게이트웨이, 인터넷 게이트웨이(IGW)
여러 게이트웨이를 배우면서 게이트웨이가 무엇인지는 몰랐는데, 다른 네트워크/프로토콜과 http를 중개한다는 걸 알게되면서 내가 알고있던 게이트웨이들의 공통점이 그것인걸 깨달았다..
NAT 게이트웨이 - 사설 망과 인터넷 중개
IGW - VPC와 인터넷 중개
데이터 내용을 열어보지 않고 그대로 전달만 하는 중개자
사용자 대신 HTTP 요청을 생성하고 전송하는 클라이언트 프로그램
HTTP 요청 시 User-Agent
헤더를 통해 자신을 식별함
e.g., 웹 크롤러
"ftp.joes-hardware.com에 FTP로 접속해. 익명 사용자로 로그인한 다음 비밀번호로 네 이름을 입력해. pub 디렉터리로 이동한 다음, 바이너리 형식으로 전환해. 이제 complete-catalog.xls란 이름의 파일을 너의 로컬 파일 시스렘에 내려 받은 다음 보면 될 거야"
-> “ftp://ftp .lots-o-books . com/pub/complete-catalog.xls를 열어봐”
<스킴>://<사용자 이름>:<비밀번호>@<호스트>:<포트>/<경로>;<파라미터>?<질의>#<프래그먼트>
The IP address 127.0. 0.1 is called the loopback address and is used by a computer to refer to itself. It is also known as localhost. When a server is running on your local PC, it will be accessible at 127.0. 0.1.
어떤 프로토콜?
대소문자 구분x
리소스 호스팅 장비, 서버 위치
호스트-> 도메인 이름 또는 IP 주소
포트 -> 생략 시 기본 포트 사용 (HTTP는 80, HTTPS는 443)