[HTTP] TIL 2

Jiwoo Jung·2025년 4월 14일
0
1부 HTTP: 웹의 기초
├── 1장 HTTP 개관
│   ├── 1.6 TCP 커넥션  
│   ├── 1.7 프로토콜 버전  
│   ├── 1.8 웹의 구성요소  
│   ├── 1.9 시작의 끝  
│   └── 1.10 추가 정보  
│
├── 2장 URL과 리소스
│   ├── 2.1 인터넷의 리소스 탐색하기
│   ├── 2.2 URL 문법

1.6 TCP 커넥션

"HTTP는 애플리케이션 계층 프로토콜이다. HTTP는 네트워크 통신의 핵심적인 세부사항에 대해서 신경 쓰지 않는다. 대신 대중적이고 신뢰성 있는 인터넷 전송 프로토콜인 TCP/IP 에게 맡긴다."

TCP Connection Identifier

  • IP 주소: 서버의 위치를 나타내는 네트워크 주소
  • 포트 번호: 해당 서버 내에서 실행 중인 애플리케이션을 식별 (HTTP: 80, HTTPS: 443)

Telnet, NetCat(nc)

HTTP 요청을 직접 테스트하거나 커넥션을 점검할 때 유용한 도구

1.8 웹의 구성요소

프록시

클라이언트-서버 중개자

  • 포워드 프록시
    클라이언트(Front-end)에게 미리 저장해둔 정적 데이터 반환
  • 리버스 프록시
    다수의 서버를 프록시 서버 하단부에 배치, 조건에 맞는 요청을 적절한 서버에게 전달(분산)

    jcdgods.tistory.com
항목Forward ProxyReverse 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., 웹 크롤러

2.1 인터넷의 리소스 탐색하기

URL이 있기 전

"ftp.joes-hardware.com에 FTP로 접속해. 익명 사용자로 로그인한 다음 비밀번호로 네 이름을 입력해. pub 디렉터리로 이동한 다음, 바이너리 형식으로 전환해. 이제 complete-catalog.xls란 이름의 파일을 너의 로컬 파일 시스렘에 내려 받은 다음 보면 될 거야"
-> “ftp://ftp .lots-o-books . com/pub/complete-catalog.xls를 열어봐”

  • URL을 사용하면 이런 애플리케이션들에서 하나의 인터페이스를 통해 일관된 방식으로 많은 리소스에 접근 가능

2.2 URL 문법

<스킴>://<사용자 이름>:<비밀번호>@<호스트>:<포트>/<경로>;<파라미터>?<질의>#<프래그먼트>
  • 중요 컴포넌트: 스킴, 호스트, 경로
  • localhost
    http://localhost:8080, http://127.0.0.1:8080

    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)

0개의 댓글