본문 바로가기
조회 수 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 포인트 만렙! 도전 4663 2025.03.19
공지 🚨(뉴비필독) 전체공지 & 포인트안내 2 25849 2024.11.04
공지 URL만 붙여넣으면 끝! 임베드 기능 20432 2025.01.21
146 특정 문자 삭제 프로그램 (일본어,중국어,한국어,영어가 섞여있을때 편리함) file 1602 2023.04.27
145 Avalanche로 연속학습 해본 사람 있음? 1 386 2023.05.05
144 .Htaccess 301 리디렉션 규칙 473 2023.05.13
143 레노버 CMOS setup 진입방법 file 535 2023.05.13
142 공유기 QoS로 각각의 PC 인터넷 속도 제한하기 512 2023.06.03
141 svn만 쓰다가 github 쓸려니 너무 어려웡 2 421 2023.06.06
140 2023년 Stack Overflow 개발자 보고서 file 206 2023.06.24
139 10만 개가 넘는 챗GPT 계정 정보가 다크웹에서 판매됨 file 190 2023.06.24
138 레드햇, RHEL 소스를 CentOS Stream에만 제공 file 200 2023.06.24
137 구글 도메인이 서비스 종료 예정입니다. 199 2023.06.24
136 Debian 12 Bookworm 릴리즈 file 248 2023.06.24
135 Ubuntu Pro는 이제 누구나 사용할 수 있습니다. file 573 2023.08.02
134 AMD 인셉션 취약점 패치, 최대 54%의 성능 저하 file 544 2023.08.21
133 히토미 https://misskey.io/ 특정 유저 주소는 다운 안되는 문제 730 2023.08.26
132 노트북 모니터 시간지나면 ubuntu 화면 자동으로 꺼지기 373 2023.08.30
131 [Linux] ethtool 명령어를 이용한 NIC(Network Interface Controller) 정보 확인 방법 520 2023.08.31
130 제조사 맥 주소 확인 방법(How to check MAC address by manufacturer) 508 2023.08.31
129 메인보드 전원,리셋,LED,스피커 선 연결하는방법 821 2023.08.31
128 윈도우 파일 폴더 용량 관리 Tree size 545 2023.08.31
127 [리눅스] 리눅스 tar, gz 압축 및 해제 518 2023.08.31
126 [Ubuntu 20.04 server] 자동으로 디스플레이 끄기 534 2023.08.31
125 SQLSTATE[HY000] '***' doesn't have a default value 에러 고치기 547 2023.08.31
124 Best Practices for MySQL(mariadb) with SSD, NVME file 567 2023.08.31
123 cpu clock(속도) 조절 Linux CPU Frequency 514 2023.09.02
122 취업하려는 공부는 적당히하자 698 2023.10.11
121 스프링이 취업안될정도면 학벌이 ㅈ구린가봄 694 2023.10.11
120 AI로 인해, 스택오버플로우 28% 정리해고 1 file 2442 2023.10.18
119 Ubuntu 23.10, 악의적인 사용자 번역으로 ISO 재배포 file 2484 2023.10.18
» 대기 시간을 줄이기 위해 TCP를 통한 TLS 최적화 file 1409 2023.10.27
117 서버 PHP용 다중 코어를 사용하는 방법 2 286 2023.11.06
Board Pagination Prev 1 2 3 4 5 Next
/ 5