HTTP 커넥션은 몇몇 사용 규칙을 제외하고는 TCP 커넥션에 불과함.
TCP는 포트번호를 통해 여러 개의 커넥션을 유지한다. IP주소로 해당 컴퓨터에 연결되고 포트번호는 해당 애플리케이션으로 연결된다.
TCP커넥션은 네가지 값으로 식별. <발신지 IP, 발신지 포트, 수신지 IP, 수신지 포트>.
네가지 값이 같은 TCP커넥션은 유일함.
HTTP 트랜잭션 지연
- 크기가 작은 HTTP 트랜잭션은 50%이상의 시간을 TCP를 구성하는 데에 사용함. 이미 존재하는 커넥션을 재활용해서 최적화 해야함. 아래는 관련 TCP 단에서 사용하는 기술
- 확인응답 지연
- TCP slow start
- 네이글 알고리즘 & TCP_NODELAY
- TIME_WAIT의 누적과 포트 고갈
HTTP 커넥션 관리 - 커넥션을 생성하고 최적화하는 HTTP 기술
keep-alive
Connection: Keep-Alive
Keep-Alive: max=5, timeout=120
#서버가 약 5개의 추가 트랜잭션이 처리될 동안 커넥션을 유지하거나, 2분동안 커넥션을 유지하라는 내용의 Keep-Alive응답헤더
dumb proxy
클라이언트 - 프락시 - 서버 구조에서 프락시가 Connection헤더를 이해하지 못해서 발생하는 문제
- 클라이언트가 Connection헤더를 갖는 요청을 보내면 서버는 프락시가 커넥션을 유지하자고 요청하는 것으로 잘못 판단함. (프락시->서버 시점)
- 클라이언트는 프락시가 커넥션을 유지하는 것에 동의했다고 추정함 (프락시->클라이언트 시점)
- 프락시는 Connection헤더를 이해하지 못하므로 커넥션이 끊어지길 기다리고 서버와 클라이언트는 커넥션을 유지함
- 클라이언트가 다음 요청을 보내면, 그 요청은 프락시로부터 무시되고 브라우저는 응답없이 로드중이라고 표시됨
-> 프락시는 Connection헤더를 전달하면 안됨. Proxy-Connection헤더 사용.
'웹 > 책 & 강의' 카테고리의 다른 글
HTTP 완벽가이드 - 7장 (캐시) (0) | 2022.01.09 |
---|---|
HTTP 완벽가이드 - 6장 (프락시) (0) | 2022.01.09 |
HTTP 완벽가이드 - 5장 (웹 서버) (0) | 2022.01.09 |
HTTP 완벽 가이드 - 1,2,3장 (HTTP 개관, HTTP 메시지) (0) | 2022.01.09 |
Tindog ( html / css + bootstrap ) (0) | 2020.12.05 |