티스토리 뷰
2022 우아한스터디 "HTTP 완벽가이드"를 진행하면서
'HTTP 완벽 가이드' 책을 읽고, 글쓴이의 생각을 정리하는 글 입니다.
https://book.naver.com/bookdb/book_detail.nhn?bid=8509980
1. 그럼 사용자는 Proxy를 어떻게 사용하는가?
최신 웹브라우저들은 대부분 Proxy를 지원합니다.
덕분에, 특별한 설정을 하지 않더라도 브라우저 자체적으로 Proxy 설정이 되어있기 때문에 평소에는 신경쓸 필요가 없습니다.
만약 특별히 Proxy를 지정할 때는 PAC(Proxy Auto-Configuration)이라는 JavaScript 파일을 이용하게 됩니다.
Proxy가 하나로 고정된 경우 상관없지만, 여러 Proxy를 운용하는 경우에는 고정값으로 Proxy를 설정하는것이 매우 불합리하게 됩니다.
해당 File내에는 FindProxyForURL이라는 함수가 정의되어야 하고, 이 함수를 Return값을 이용해서 Proxy를 찾게됩니다.
/*책에 소개됨 PAC File 예제*/
function FindProxyForURL(url, host) {
if (url.substring(0, 5) == "http:"){
return "PROXY http-proxy.mydomain.com:8080";
} else if (url.substring(0, 4) == "ftp:"){
return "PROXY ftp-proxy.mydomain.com:8080";
} else {
return "DIRECT";
}
}
2. Proxy Requests의 미묘한 특징들
Proxy와 Server에 보내는 Requests를 비슷하지만, 구별되는 특징이 존재합니다.
2_1. URI가 다르다(Clinet에서 Proxy로 Requests를 보내는것을 명시할 때만)
Server로 보내는 URI는 "/index.html"과 같이 상대주소를 사용하지만,
Proxy로 보낼때는"http://www.marys-antiques.com/index.html"과 같이 절대주소를 사용합니다.
단, 인터셉트, 대리 Proxy의 경우 Client는 Server라고 생각하고 Requests를 보내기 때문에 URI가 상대주소로 들어갑니다.
(이때문에 Proxy는 Proxy요청과 Server요청 두가지를 모두 처리할 수 있어야 합니다)
3. HTTP Message 추적
Proxy의 운용이 대중화 되면서, HTTP Message가 어떻게 이동했는지 추적하기 위한 "Via" Header가 존재합니다.
"Via : 1.1 proxy-62.irenes-isp.nst, 1.0 cache.joes-hardware.com"
위 처럼 지나온 Proxy의 기록이 HTTP 헤더에 포함되게 됩니다.
Via Header는 E-BNF 문법으로 표기하면 아래와 같습니다.
Via = "Via" ":" (waypoint) [", " ( waypoint)...]
waypoint = ( received-protocol received-by [ comment ])
received-protocol = [protocol-name "/" ] protocol-version
received-by = (host [ ":" port ] ) | pseudonym
Via Header는 Requests와 Response모두 가질 수가 있습니다. 대신, 같은 경오로 이동했다면 Via에 있는 Proxy의 순서는 반대가 됩니다.
해당 Via Header의 경우 HTTP 뿐만 아니라 Gate Way역시 기록을 남기게 된 다는 점이 특이한 점 입니다.
이와 별도로 Server의 경우 "Server" Header를 사용해서 원Server의 정보를 남깁니다.
'네트워크 > HTTP' 카테고리의 다른 글
11. 캐시(2편) (0) | 2022.06.01 |
---|---|
10. 캐시(1편) (0) | 2022.06.01 |
8. Proxy(1편) (0) | 2022.05.27 |
7. Web Server (0) | 2022.05.26 |
6. 멍청한 Proxy (0) | 2022.05.22 |
- Total
- Today
- Yesterday
- 분할정복
- SIMD
- Search알고리즘
- prime number
- 셀프모청
- 청첩장
- hash
- 이분탐색
- AVX
- 코딩테스트
- git
- 완전탐색 알고리즘
- 알고리즘
- Greedy알고리즘
- 프로그래머스
- 동적계획법
- react
- 모바일청첩장
- stack
- GDC
- 사칙연산
- heap
- javascript
- 컴퓨터그래픽스
- Python
- Sort알고리즘
- C++
- 자료구조
- 병렬처리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |