본문 바로가기
조회 수 1409 추천 수 0 댓글 0

인터넷의 계층적 특성(신뢰할 수 있는 전송(예: TCP) 위에 있는 HTTP, 일부 데이터그램 계층(예: IP) 위에 있는 TCP, 일부 링크(예: 이더넷) 위에 있는 IP)는 인터넷 개발에 매우 ​​중요했습니다. 시간이 지남에 따라 다양한 링크 계층이 왔다가 사라졌습니다(아직 802.5를 사용하는 독자가 있습니까?). 이러한 유연성은 웹 브라우저의 연결이 WiFi를 통해 홈 네트워크를 통과한 다음 DSL 회선을 따라 광섬유를 통해 최종적으로 전달될 수 있음을 의미합니다. 웹 서버에 대한 이더넷. 각 레이어는 그 아래 레이어의 구현을 전혀 인식하지 못합니다.

하지만 이 모델에는 몇 가지 단점이 있습니다. TLS(인터넷에서 암호화된 데이터를 전송하는 데 사용되는 가장 일반적인 표준 및 브라우저가 https:// 웹 사이트를 방문할 때 사용하는 프로토콜)의 경우 TCP 위에 TLS를 계층화하면 전송이 지연될 수 있습니다. 웹페이지.

TLS는 전송되는 데이터를 고정된(최대) 크기의 레코드로 나눈 다음 해당 레코드를 TCP에 전달하여 전송하기 때문입니다. TCP는 해당 레코드를 세그먼트로 즉시 나누어 전송합니다. 궁극적으로 해당 세그먼트는 인터넷을 통과하는 IP 패킷 내부로 전송됩니다.

인터넷의 혼잡을 방지하고 안정적인 전달을 보장하기 위해 TCP는 수신자가 세그먼트 수신을 확인할 때까지 기다리기 전에 제한된 수의 세그먼트만 보냅니다. 또한 TCP는 세그먼트가 애플리케이션에 순서대로 전달되도록 보장합니다. 따라서 패킷이 발신자와 수신자 사이 어딘가에서 삭제되면 버퍼가 애플리케이션에 해제되기 전에 누락된 세그먼트가 재전송될 때까지 기다리는 버퍼에 전체 세그먼트 묶음이 유지될 수 있습니다.

TLS와 TCP

이것이 TLS에 의미하는 바는 여러 TCP 세그먼트에 걸쳐 분할된 대규모 레코드에 예상치 못한 지연이 발생할 수 있다는 것입니다. TLS는 전체 레코드 만 처리할 수 있으므로 누락된 TCP 세그먼트로 인해 전체 TLS 레코드가 지연됩니다.

TCP 연결이 시작될 때 TCP 느린 시작이 발생하면 레코드가 상대적으로 느리게 전달되는 여러 세그먼트로 분할될 수 있습니다. TCP 연결 중에 TLS 레코드가 분할된 세그먼트 중 하나가 손실되어 누락된 세그먼트가 재전송될 때까지 레코드가 지연될 수 있습니다.

따라서 고정된 TLS 레코드 크기를 사용하지 않고 기본 TCP 연결이 회전할 때(그리고 정체의 경우 감소할 때) 레코드 크기를 조정하는 것이 좋습니다. 작은 레코드 크기로 시작하면 연결 시작 시 TCP가 전송하는 세그먼트에 레코드 크기를 일치시키는 데 도움이 됩니다. 연결이 실행되면 레코드 크기를 늘릴 수 있습니다.

CloudFlare는 NGINX를 사용하여 웹 요청을 처리합니다. 기본적으로 NGINX는 동적 TLS 레코드 크기를 지원하지 않습니다. NGINX에는 매개변수로 조정할 수 있는 기본값 16KB의 고정 TLS 레코드 크기가 있습니다 ssl_buffer_size.

NGINX의 동적 TLS 레코드

동적 TLS 레코드 크기에 대한 지원을 추가하기 위해 NGINX를 수정했으며 패치를 오픈 소스로 제공하고 있습니다. 여기서 찾을 수 있습니다 패치는 NGINX SSL 모듈에 매개변수를 추가합니다.

ssl_dyn_rec_size_lo: 시작할 TLS 레코드 크기입니다. 기본값은 1369바이트입니다(단일 TCP 세그먼트의 전체 레코드에 맞게 설계됨: 1369 = 1500 - 40(IPv6) - 20(TCP) - 10(시간) - 61(최대 TLS 오버헤드))

ssl_dyn_rec_size_hi: 증가할 TLS 레코드 크기입니다. 기본값은 4229바이트입니다(3개 TCP 세그먼트의 전체 레코드에 맞도록 설계됨).

ssl_dyn_rec_threshold: 레코드 크기를 변경하기 전에 보낼 레코드 수입니다.

각 연결은 크기의 레코드로 시작됩니다 ssl_dyn_rec_size_lo레코드를 보낸 후 ssl_dyn_rec_threshold레코드 크기가 ssl_dyn_rec_size_hissl_dyn_rec_threshold크기가 포함된 추가 레코드를 보낸 후 ssl_dyn_rec_size_hi레코드 크기가 ssl_buffer_size.

ssl_dyn_rec_timeout: TLS 레코드 크기가 감소되는 이 시간(초)보다 오랫동안 연결이 유휴 상태인 경우 ssl_dyn_rec_size_lo위의 논리가 반복됩니다. 이 값이 0으로 설정되면 동적 TLS 레코드 크기가 비활성화되고 ssl_buffer_size대신 고정 크기가 사용됩니다.


List of Articles
번호 분류 제목 조회 수 날짜
공지 사랑LOVE 포인트 만렙! 도전 4675 2025.03.19
공지 🚨(뉴비필독) 전체공지 & 포인트안내 2 25851 2024.11.04
공지 URL만 붙여넣으면 끝! 임베드 기능 20432 2025.01.21
86 전공자인데 프론트지망이야 패캠 김민태 부캠 어떨까… 83 2024.08.11
85 싸피 지원하려면 스펙 어느정도여야 해? 2 144 2024.08.11
84 코딩 하다 보면 실력 느니…???? 하.. 74 2024.08.11
83 다들 업무 대략 어떻게 돼? 73 2024.08.11
82 더투 인스티즈 같은 커뮤 사이트는 게시글 어떤 형식으로 저장하는 거야? 1 140 2024.08.11
81 자바 책 기본, 심화 하나씩 추천 부탁해!! 앱이랑 스프링 하려구 63 2024.08.11
80 초봉 3600 너무 적나..? 69 2024.08.11
79 토이 프로젝트 만드는데 다들 얼마나 걸려 59 2024.08.11
78 아무것도 모르는 대학 동기들끼리 플젝하려하는데 3 79 2024.08.11
77 토렌트 트래커 모음 102 2024.08.09
76 [토렌트]7월 최신 트래커 - 매일 갱신되는 사이트 (2024년 7월) 930 2024.08.09
75 qmail 설치 에러 107 2024.08.04
74 쉘 프로그래밍 질문입니다.. 78 2024.08.04
73 계정별 quota 설정을 명령어 라인에서 할수 있는 방법은 없나요? 55 2024.08.04
72 make 전에 설정했던 ./configure 설정을 어디서 찾아 볼수 있나요? 1 62 2024.08.04
71 SMTP아직도 해결을 몬한채 전쟁중입니다..도와주십시오 ㅠㅠ 2 84 2024.08.04
70 공유기 설정 웹 프로그램은 어떻게 구성되나요? 66 2024.08.04
69 install fedora on sata disk 57 2024.08.04
68 아이피접근제어에대한 질문이요. 1 60 2024.08.04
67 리눅스 삼바에서 smbpasswd 를 암호 지정없이 한줄 명령어로 처리하는 방법은 없나요?[ 62 2024.08.04
66 RAID 10에 대한 질문입니다. 1 72 2024.08.04
65 무료 DNS 서버로 바인드를 설치하지 않아도 가능한지? 1 58 2024.08.04
64 init 6와 reboot의 차이 72 2024.08.04
63 aws amazon linux 질문입니다. 1 72 2024.08.04
62 방화벽 설정하면 DNS 가 안되는 원인은? 1 80 2024.08.04
61 아이피 스푸핑과 패킷 스니퍼링....??? 67 2024.08.04
60 makefile 인스톨 방법 1 file 55 2024.08.04
59 VPN에 따른 라우터 NAT와 방화벽 포트포워딩 에 대하여... 1 file 63 2024.08.04
58 httpd log 사용방법... 1 file 73 2024.08.04
57 [초보질문]root 계정인데 dir 또는 ls 명령어를 입력해도 폴더가 표시 되지 않습니다. 1 85 2024.08.04
Board Pagination Prev 1 2 3 Next
/ 3