HTTP 1.1 커넥션 수는 2개이다.

요즘 Ajax Leaders Club 이라는 스터디 모임에 참여하고 있습니다. 사실 리더는 못되지만 노력은 하고 있죠;;

몇일전 카페에서 커넥션수에 대한 논의가 있었던 모양입니다. 블랭커스님의 블로그글을 링크하자면 HTTP 1.0에서는 커넥션 제한이 4개였는데 1.1에 들어와서 2개로 줄었다는것입니다.

이부분에 대해서 저도 기억이 나는 부분이 있네요. 중학교~고1 시절 홈페이지를 만드는데(그당시에는 대부분이 모뎀이었고 잘사는 사람들은 ISDN을 쓰곤 했었습니다) 책에 이런 내용이 있었었죠.

“인터넷 익스플로러의 경우 동시에 4개씩을 다운 받을수 있습니다. 큰 이미지의 경우 4개로 쪼개면 좀더 빠른 다운로드를 도모할수 있습니다.”

그당시에는 홈페이지라고는 그저 HTML에 글자 몇개 끄적이고 큰 이미지 하나 올려놓으면 정말 멋지고 포토샵 잘하는 부러운 사람이었습니다.

그런데 저는 한발 더 앞서 그 그림을 4개로 쪼개기까지 했죠. 그리곤 BORDER없는 TABLE 2×2를 만들어 그림을 끼워넣곤 했습니다. 그당시의 모뎀으로 더더욱 잘 느낄수 있었지만 그림 4개가 동시에 읽혀지는 장관을 볼수 있었죠.

마치 달력을 넘긴달까? 위에서 부터 내려오는 혹은 GIF의 모자이크 형식으로 대충 읽었다가 점점 선명해 지는 광경을 이제는 볼수 없게 되어 버렸네요.

각설하고 그 2개의 커넥션이 호스트별 2개인지 브라우저별 2개인지 궁금해졌습니다.

증거자료를 제시하진 못하지만 서버를 모니터링 하면서 시름해본 결과 브라우저별 2개이네요. 당연하겠지만요;

브라우저 여러개 띄우면 다른 브라우저에서 다운중이라고 현재 브라우저가 기달려선 안되겠죠.

w3의 RPC문서 에도 같은 내용이 있네요. 8.1.4 Practical Considerations에 잠깐 언급하는군요.

물론 2개는 디폴트 설정이고 익스플로러의 경우는 레지스트리 설정을 바꾸어  늘릴수 있습니다.

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings 밑의

MaxConnectionsPerServer 값을 2개에서 10(16진수 a)개정도로 올리면 속도의 향상을 느낄수 있습니다.

하지만 웹서비스를 준비하는 기업의 입장에서는 대부분의 사용자가 디폴트 설정을 가지고 있을것이다고 가정하고 작업하는것이 맞겠지요. 그래서 자바스크립트 파일을 합치는 식으로 로드해야 하는 오브젝트의 수를 줄이는것입니다.

열리는 커넥션을 테스트 하기위해서는 파이어폭스의 파이어버그나 iWatch등을 사용하면 됩니다. iWatch의 경우 Unix기반의 운영체제에서만 돌아가는 모양이네요. 파이어버그는 정확한 시간을 표시해 주지 못하는듯합니다.

서버관리자의 입장이라면 다음과 같이 측정할수 있습니다.

[code][root@tomeii /] # netstat -an | grep -c “:80.*127.0.0.1.*ESTABLISHED”[/code]

127.0.0.1에 모니터링할 호스트의 IP를 적어주면 됩니다.

서버의 80번 포트에 현재 접속한 호스트의 커넥션 수를 표시해 줍니다. 정상적이라면 페이지가 막 열릴때 2개를 넘지 않겠지요.

2개를 넘으면 악의적인 공격이다라고 판단할수도 있을것이라 생각합니다. 보통의 사용자가 같은 서버의 페이지를 2개이상 띄워놓고 동시에 접속하는 것이 아닌 이상은요.

아무튼 HTTP 1.1의 커넥션 수는 2개가 맞군요. 정확히는 디폴트 수가 2개입니다. 요즘 나오는 브랜드 PC들은 임의로 올려서 나오기도 하는군요. 제가 이번에 산 노트북이 복구시디로 밀고 확인해 보니 10개로 되어있습니다.