ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [HTTP 완벽가이드] 4장 커넥션 관리
    기타/HTTP 완벽가이드 2020. 11. 17. 16:46

    TCP

    • HTTP가 전송하려는 메세지를 세그먼트 단위로 자른 뒤, IP 패킷에 담아 인터넷을 통해 전달.
    • IP 패킷

    TCP 커넥션

    • <발신지 주소, 발신자 포트 , 수신지 IP주소 , 수신지 포트> 조합으로 TCP 커넥션 생성/식별

    TCP 소켓 프로그래밍

    • 운영체제는 TCP 커넥션 생성과 관련된 여러기능을 제공. 소켓 API.
    • 소켓 API를 통해 1) TCP 종단 데이터 구조를 생성하고 - 2) 데이터 구조를 원격 서버의 TCP 종단에 연결해 - 3) 데이터 스트림을 읽고 쓴다.
    • 웹서버는 소켓 생성 후 커넥션을 기다린다. 브라우저는 소켓 생성 후, 서버 IP주소:포트로 TCP 커넥션을 생성한다.

    TCP 성능 고려

    HTTP 트랜잭션 지연

    • HTTP 지연은 TCP 네트워크 지연으로 발생.
    • 처음/오랜만에 방문한 URI의 호스트명을 IP주소로 변환 시간
    • 서버에 TCP 커넥션 요청 후 허가 회신 대기 시간
    • HTTP 요청 메시지가 인터넷을 통해 전달, 서버에서 처리까지 걸리는 시간
    • 서버가 HTTP 응답 메시지를 보내는데 걸리는 시간

    성능 중요 요소

    • TCP 커넥션 핸드셰이크 지연
      • 데이터 전송시 새로운 TCP 커넥션을 맺기 위해 두번 연속 패킷을 교환한다.
        1. 커넥션요청 목적 패킷 교환 → 2) 커넥션맺음 알림 목적 확인응답 패킷 교환
      • 작은 데이터 전송 사용시 HTTP 성능저하 초래.
    • 확인응답지연 알고리즘
      • 세그먼트 잘 받으면 수신자는 송신자에게 확인응답 패킷 반환. TCP는 확인응답 패킷은 같은방향 데이터패킷에 편승(piggyback) 한다.
      • 확인응답이 같은 방향으로 가는 데이터 패킷에 편승되는 경우를 늘리기 위한 알고리즘. (편승안되면 별로 패킷 생성 후 전송)
      • 요청/응답 뿐인 HTTP 동작방식에선 편승 기회가 적어 알고리즘에 의한 지연이 자주 발생.
    • TCP의 느린시작(slow-start)
    • nagle 알고리즘 TCP_NODELAY
    • TIME-WAIT 지연과 포트 고갈

    HTTP 커넥션 관리

    Connection 헤더

    • 현재 맺는 커넥션에만 적용할 옵션 명세. 다른 커넥션에 전달되지 않는다. 전달시점에 삭제됨.

    순차 처리 대안 HTTP 커넥션

    - 병력커넥션

    - 지속커넥션

    - 파이프라인커넥션

    - 다중커넥션


    커넥션 끊기

Designed by Tistory.