티스토리 뷰

네트워크/HTTP

9. Proxy(2편)

Teus 2022. 5. 31. 12:31
728x90
반응형

2022 우아한스터디 "HTTP 완벽가이드"를 진행하면서

'HTTP 완벽 가이드' 책을 읽고, 글쓴이의 생각을 정리하는 글 입니다.

https://book.naver.com/bookdb/book_detail.nhn?bid=8509980 

 

HTTP 완벽 가이드

성공적인 웹 트랜잭션 뒤의 숨은 핵심, HTTP의 모든 것『HTTP 완벽 가이드』는 HTTP 규약이 어떻게 작동하고 웹 기반 애플리케이션을 개발하는 데 어떻게 사용하는지 설명하고, HTTP가 효율적으로 동

book.naver.com

 

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의 정보를 남깁니다.

 

 

728x90
반응형

'네트워크 > 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
링크
«   2024/09   »
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
29 30
글 보관함