<!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 랜덤여신

