Post

[HTTP 완벽 가이드 정리] 01. HTTP: 웹의 기초 - 04. 커넥션 관리

4장 커넥션 관리에서는 HTTP에서 관리하는 TCP 커넥션에 대한 일반적인 오해들과 잘못 작성된 규칙 및 동작 방식에 대해서 알아본다.

[HTTP 완벽 가이드 정리] 01. HTTP: 웹의 기초 - 04. 커넥션 관리

📝 핵심 요약

주제요약
TCP 커넥션- 메시지의 손실 또는 손상 방지 및 순서 보장으로 안전하게 전달
- 데이터 스트림을 잘게 나눈 세그먼트 단위로 IP 패킷에 담겨 전송
TCP 성능에 대한 고려TCP 성능 최적화를 위해 지연에 대한 이해 필요
1) TCP 커넥션의 핸드셰이크 설정
2) 혼잡 제어를 위한 TCP의 느린 시작(slow-start)
3) 네이글(nagle) 알고리즘
4) 확인응답 지연 알고리즘
5) TIME_WAIT 지연과 포트 고갈
HTTP 커넥션 관리병렬 / 지속 / 파이프라인 / 다중 커넥션을 통해 성능 향상 가능
병렬 커넥션- 병렬 커넥션의 지연 시간이 겹쳐짐으로써 총 지연시간 단축 가능
- 다수의 커넥션은 자원 낭비와 혼잡 초래 가능
지속 커넥션- 커넥션을 재사용함으로써
1) 커넥션을 맺기 위한 설정 비용을 줄이고
2) 느린 시작 지연을 피하여 성능 향상 가능

- HTTP/1.1 에서는 기본적으로 지속 커넥션 활성화되어 있음
- 커넥션 끊는 경우 Connection: close 헤더를 명시
파이프라인 커넥션- HTTP/1.1은 지속 커넥션을 통해 요청 파이프라이닝 가능
- 요청 전송 대기 시간 단축으로 성능 향상 가능하지만
1) 지속 연결 필요
2) 응답 순서 보장 필수
3) 연결 조기 종료 대비 필요
4) 문제가 발생할 수 있는 비멱등 요청은 파이프라이닝 지양
등의 제약 사항 존재
커넥션 끊기에 대한 미스터리- 커넥션은 언제든 끊을 수 있음
- 종료 타이밍이 어긋날 경우 reset 오류 발생할 수 있음
- reset 메시지는 입력 버퍼에 저장되어 있는 아직 읽히지 않은 데이터를 모두 삭제함
- 내 출력 채널을 먼저 끊고 다른 쪽 출력 채널이 끊기길 기다리는 게 좋지만,
그렇게 되지 않으면 타임아웃으로 커넥션 강제 종료




📌 이 장에서 다루는 내용

  • HTTP는 어떻게 TCP 커넥션을 사용하는가

  • TCP 커넥션의 지연, 병목, 막힘

  • 병렬 커넥션, keep-alive 커넥션, 커넥션 파이프라인을 활용한 HTTP 최적화

  • 커넥션 관리를 위해 따라야 할 규칙들



This post is licensed under CC BY 4.0 by the author.