W3C, DTD 트래픽 때문에 몸살
- Posted at 2008/02/09 23:56
- Filed under 이야기
웹 표준을 지킨 사이트에서 페이지 소스 보기를 해보면, 문서 맨 위에 DTD 선언이 되어있는 것을 보실 수 있습니다.
이런 식으로요.
저기서 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd 라고 되어있는 부분이 바로 DTD 선언입니다. DTD는 SGML 규칙에 따라 마크업 언어가 어떤 식으로 정의되어 있는지를 나타내는데, 예를 들어 'HTML'이라는 형식 자체가 DTD의 일종입니다.

W3C가 만드는 웹 표준의 DTD 선언은 보시다시피, 웹으로 접근할 수 있는 URL 형태로 되어있습니다. http:// 로 시작하죠. W3C의 경우 저 URL로 따라가면 실제로 DTD 문서가 있습니다. 반면에 MS의 OOXML 같이 실제로는 없는 주소를 DTD로 쓰는 경우도 있습니다.
여기서 문제가 발생합니다. 아시다시피, HTML은 지구상에서 가장 널리 쓰이는 DTD 중 하나입니다. 따라서 W3C 서버에서 DTD 문서를 가져오지 않더라도, 충분히 HTML 문서를 해석할 수 있습니다. 게다가, XHTML 1.0 스펙은 지난 몇 년 동안 변하지 않았습니다. 사실, 일단 한 번 스펙이 정해지면 변하는 일이란 없습니다.
따라서 파이어폭스, 인터넷 익스플로러 등 대부분의 브라우저도 DTD 문서를 직접 읽지는 않습니다. 그랬다면 페이지를 이동할 때마다 w3.org에 접근해야 했을 것입니다.
하지만 W3C 시스템 관리팀 블로그에 올라온 글에 따르면, 현실은 그와 다른 것 같습니다. 현재 W3C 서버가 받는 DTD 요청은 하루에 1억 3천만 건 정도라고 합니다. 이에 따라 트래픽이 350Mbps 소모됩니다. 쉽게 말해 1초에 DTD 문서가 44MB 전송된다는 것입니다. 이 정도면 DDoS 공격을 능가하는 수준입니다.
이러한 요청 중 많은 수는 HTML, XML, XSLT, SVG 등을 다루는 소프트웨어에 의해 이루어지는데, 심각한 것은 이들 중 캐싱조차 안 하는 프로그램이 많다고 합니다. 그래서 503 Service Unavailable 오류를 내보내거나 IP 차단을 하는 등 조치를 취하기도 한다는데, 역부족이라는군요. 무시하고 계속 요청이 들어온다고 합니다.
W3C 시스템 관리팀의 고충을 생각하면 이래선 안 되겠지만, 이것 참 재밌네요. 저도 심심해서 HTML의 DTD 문서에 몇 번 들어가본 적은 있지만, 이렇게까지 민폐가 되는 줄은 몰랐습니다. 앞으로 소프트웨어를 짤 때 조심해야겠다는 생각이 듭니다.
저 블로그의 댓글을 보면, 애초에 DOCTYPE 지정을 http:// 로 하는 것 자체가 문제라는 말도 보입니다. 실제로, HTML 5부터는 '<!DOCTYPE html>'를 사용하지요.
W3C's Excessive DTD Traffic
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" ...>
이런 식으로요.
저기서 http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd 라고 되어있는 부분이 바로 DTD 선언입니다. DTD는 SGML 규칙에 따라 마크업 언어가 어떤 식으로 정의되어 있는지를 나타내는데, 예를 들어 'HTML'이라는 형식 자체가 DTD의 일종입니다.
여기서 문제가 발생합니다. 아시다시피, HTML은 지구상에서 가장 널리 쓰이는 DTD 중 하나입니다. 따라서 W3C 서버에서 DTD 문서를 가져오지 않더라도, 충분히 HTML 문서를 해석할 수 있습니다. 게다가, XHTML 1.0 스펙은 지난 몇 년 동안 변하지 않았습니다. 사실, 일단 한 번 스펙이 정해지면 변하는 일이란 없습니다.
따라서 파이어폭스, 인터넷 익스플로러 등 대부분의 브라우저도 DTD 문서를 직접 읽지는 않습니다. 그랬다면 페이지를 이동할 때마다 w3.org에 접근해야 했을 것입니다.
하지만 W3C 시스템 관리팀 블로그에 올라온 글에 따르면, 현실은 그와 다른 것 같습니다. 현재 W3C 서버가 받는 DTD 요청은 하루에 1억 3천만 건 정도라고 합니다. 이에 따라 트래픽이 350Mbps 소모됩니다. 쉽게 말해 1초에 DTD 문서가 44MB 전송된다는 것입니다. 이 정도면 DDoS 공격을 능가하는 수준입니다.
이러한 요청 중 많은 수는 HTML, XML, XSLT, SVG 등을 다루는 소프트웨어에 의해 이루어지는데, 심각한 것은 이들 중 캐싱조차 안 하는 프로그램이 많다고 합니다. 그래서 503 Service Unavailable 오류를 내보내거나 IP 차단을 하는 등 조치를 취하기도 한다는데, 역부족이라는군요. 무시하고 계속 요청이 들어온다고 합니다.
W3C 시스템 관리팀의 고충을 생각하면 이래선 안 되겠지만, 이것 참 재밌네요. 저도 심심해서 HTML의 DTD 문서에 몇 번 들어가본 적은 있지만, 이렇게까지 민폐가 되는 줄은 몰랐습니다. 앞으로 소프트웨어를 짤 때 조심해야겠다는 생각이 듭니다.
저 블로그의 댓글을 보면, 애초에 DOCTYPE 지정을 http:// 로 하는 것 자체가 문제라는 말도 보입니다. 실제로, HTML 5부터는 '<!DOCTYPE html>'를 사용하지요.
W3C's Excessive DTD Traffic
Posted by 랜덤여신
Trackback URL : http://barosl.com/blog/trackback/673
Comments List
-
사실 이거 옛날부터 혼자 예상하고 있던 것이긴 했는데 정말로 그럴 줄은 몰랐군요...;;;
-
참고적으로 html 5 이전의 doctype이 길었던 이유는 sgml 기반이었기 때문에 dtd 문서가 필요했기 때문이고, html 5는 더 이상 sgml 기반을 두지 않기 때문에 짧게 바뀌었다고..
http://www.w3.org/TR/html5-diff/#doctype -
저도 daybreaker 님 처럼 상상만 하고 있었는뎅;;
실제로 문제가 심각한가 보네요...;; -
이 글을 제 블로그에 퍼가고 싶습니다 허락해 주십시오. (분류는 "리눅스외 정보"라는 카테고리에 올릴예정)
-
전문을 퍼가지 마시고, 일부 인용에 링크 부탁합니다.
-