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

단축키

Prev이전 문서

Next다음 문서

단축키

Prev이전 문서

Next다음 문서

인터넷의 계층적 특성(신뢰할 수 있는 전송(예: 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
번호 제목 글쓴이 날짜 조회 수
공지 에디터 업데이트+) GPT AI 기능을 포함하여 강력한 도구들을 사용해보세요 ⬆️ file 🍀플로버404 2024.04.16 1222
공지 덕질 공통 이용규칙 및 안내 (업데이트중+ 2024-04-13) 😀컴덕824 2024.04.14 1491
공지 1000P를 모으면 다이소 상품권 1000원을 신청할 수 있습니다. file Private 2024.02.14 3089
52 claudebot 클로드봇 수집 공격 1 😀익명892 2024.04.18 105
51 이젠 병원에 UX개발 프로세스가 필요하다. file 😀익명100 2024.04.14 349
50 Redis 및 캐시 일관성 문제 file 😀익명461 2024.04.14 307
49 GPT-4 Turbo가 다시 왕좌에 올랐고 ChatGPT가 무료로 업그레이드되었습니다! file 😀익명996 2024.04.14 357
48 6가지 Devin 대안 살펴보기: 프로그래밍 작업 자동화 😀익명328 2024.04.14 319
47 Opcache 설정 설명 file 😀익명681 2024.03.19 216
46 혼자 공부할 수 있는 프로그래밍 강의 링크 모음(국내) 😀익명400 2024.03.15 758
45 MIT 공개강좌 - 공짜(무료) 컴퓨터 과학 & 프로그래밍 입문 (python) 😀익명116 2024.03.10 513
44 WebRTC API 😀익명128 2024.03.10 469
43 진짜 서버 만들었습니다 file 😀익명210 2024.03.09 537
42 Pi-KVM, 라즈베리 파이를 이용하여 KVM over IP file 😀익명149 2024.03.09 521
41 IT 온라인 교육 사이트 모음 (21개 사이트) 😀익명811 2024.03.05 481
40 Apache Pulsar 2023년 검토 file 😀익명479 2024.02.08 218
39 Visual Studio Code를 위한 10가지 개발 팁 file 😀익명654 2024.02.08 249
38 효율적인 웹 개발을 위한 10가지 Visual Studio Code 확장 file 😀익명863 2024.02.08 249
37 웹 개발에 매우 ​​유용한 10가지 Github 저장소 file 😀익명538 2024.02.08 256
36 10가지 매우 유용한 Python 라이브러리 😀익명355 2024.02.08 285
35 AI 엔지니어링을 위한 상위 5개 JavaScript 도 file 😀익명991 2024.02.08 235
34 DNS 전파를 확인하는 7가지 사이트 😀익명750 2023.11.20 45
33 도메인 사이트주소 접속이 안될때 DNS 캐시 플러시 하는방법 (웹개발자가 봐야하는) file 😀익명174 2023.11.19 50
목록
Board Pagination Prev 1 2 3 Next
/ 3