Select the product you need help with
Nh?ng v?n đ? thi?t k? - g?i d? li?u nh? các phân đo?n qua TCP v?i WinsockID c?a bài: 214397 ? Trang nàyTÓM T?TKhi b?n c?n ph?i g?i các gói d? li?u nh? qua TCP, thi?t k? ?ng d?ng c?a b?n Winsock là đ?c bi?t quan tr?ng. M?t thi?t k? mà không đưa vào tài kho?n tương tác c?a s? th?a nh?n b? tr? ho?n, các thu?t toán Nagle, và Winsock đ?m m?nh có th? có hi?u l?c hi?u su?t. Bài vi?t này th?o lu?n v? nh?ng v?n đ? này, b?ng cách s? d?ng m?t vài trư?ng h?p nghiên c?u, và m?t lo?t các khuy?n ngh? cho vi?c g?i các gói d? li?u nh? m?t cách hi?u qu? t? m?t ?ng d?ng Winsock này có ngu?n g?c. THÔNG TIN THÊMN?nKhi m?t ch?ng Microsoft TCP nh?n đư?c m?t gói d? li?u, m?t b? đ?m th?i gian ch?m tr? 200-ms t?t đi. Khi m?t ACK cu?i cùng g?i, b? đ?m th?i gian ch?m tr? đ?t l?i và s? b?t đ?u m?t 200-ms s? ch?m tr? khi gói d? li?u ti?p theo nh?n đư?c. Đ? tăng hi?u qu? trong Internet và các ?ng d?ng m?ng n?i b?, ch?ng Microsoft TCP s? d?ng các tiêu chí sau đây đ? quy?t đ?nh khi nào đ? g?i m?t ACK trên các gói d? li?u nh?n đư?c:
Winsock s? d?ng các quy t?c sau đ? ch? ra m?t hoàn thành g?i đ?n các ?ng d?ng (tùy thu?c vào cách g?i kích ho?t, thông báo hoàn thành có th? là ch?c năng tr? v? t? m?t cu?c g?i ch?n, báo hi?u m?t s? ki?n ho?c g?i đi?n tho?i m?t ch?c năng thông báo, và vv):
Trư?ng h?p nghiên c?u 1T?ng quan:M?t khách hàng Winsock TCP c?n ph?i g?i h? sơ 10000 Winsock TCP trên máy ch? đ? lưu tr? trong cơ s? d? li?u. Kích thư?c c?a các h? sơ khác nhau t? 20 byte 100 byte dài. Đ? đơn gi?n hóa logic ?ng d?ng, thi?t k? là như sau:
Hi?u su?t:Trong th?i gian th? nghi?m, các nhà phát tri?n th?y khách hàng ch? có th? g?i h? sơ năm / giây đ?n máy ch?. Các h? sơ 10000 t?ng, t?i đa lúc 976 K byte d? li?u (10000 * 100 / 1024), ph?i m?t hơn m?t n?a gi? đ? g?i t?i h? ph?c v?.Phân tích:B?i v? khách hàng không đ?t tùy ch?n TCP_NODELAY, thu?t toán Nagle l?c lư?ng ch?ng TCP ch? đ?i cho m?t ACK trư?c khi nó có th? g?i m?t gói vào dây. Tuy nhiên, các khách hàng đ? vô hi?u hoá Winsock đ?m b?ng cách thi?t l?p các tùy ch?n SO_SNDBUF-0. V? v?y, các 10000 g?i các cu?c g?i có th? đư?c g?i và ACK'ed riêng r?. M?i ACK là b? tr? ho?n 200-ms v? sau đây x?y ra trên ch?ng TCP c?a máy ch?:
Làm th? nào đ? c?i thi?n:Có hai v?n đ? v?i thi?t k? này. Đ?u tiên, không có v?n đ? b? đ?m th?i gian ch?m tr?. Khách hàng c?n đ? có th? g?i các gói d? li?u hai đ?n máy ch? trong 200-ms. v? khách hàng s? d?ng các thu?t toán Nagle theo m?c đ?nh, nó nên ch? c?n s? d?ng m?c đ?nh Winsock đ?m và không thi?t l?p SO_SNDBUF 0. Sau khi ch?ng TCP có coalesced m?t b? đ?m l?n hơn so v?i đơn v? truy?n t?i t?i đa (MTU), m?t gói tin có kích thư?c đ?y đ? g?i ngay l?p t?c mà không c?n ch? ACK t? máy ch? t? xa.Th? hai, thi?t k? này kêu m?t g?i m?i h? sơ như v?y kích thư?c nh?. G?i đi?u này nh? kích thư?c không ph?i là r?t hi?u qu?. Trong trư?ng h?p này, các nhà phát tri?n có th? mu?n pad m?i h? sơ đ?n 100 byte và g?i h? sơ 80 t?i m?t th?i gian t? m?t khách hàng g?i g?i. Đ? cho máy ch? bi?t làm th? nào nhi?u h? sơ s? đư?c g?i trong t?ng s?, khách hàng có th? mu?n b?t đ?u giao ti?p v?i m?t tiêu đ? có kích thư?c s?a ch?a có ch?a s? lư?ng h? sơ đ? làm theo. Nghiên c?u trư?ng h?p 2T?ng quan:M?t ?ng d?ng khách Winsock TCP m? hai k?t n?i v?i m?t ?ng d?ng máy ch? Winsock TCP cung c?p d?ch v? báo giá c? phi?u. K?t n?i đ?u tiên đư?c s? d?ng như m?t kênh l?nh g?i bi?u tư?ng c? cho h? ph?c v?. K?t n?i th? hai đư?c s? d?ng như m?t kênh d? li?u nh?n đư?c báo giá c? phi?u. Sau khi hai k?t n?i đ? đư?c thi?t l?p, khách hàng s? g?i m?t bi?u tư?ng c? cho h? ph?c v? thông qua các kênh l?nh và ch? đ?i cho báo giá c? phi?u đ? tr? l?i thông qua các kênh d? li?u. Nó s? g?i yêu c?u bi?u tư?ng c? ph?n ti?p theo t?i h? ph?c v? ch? sau khi các c? phi?u báo đ?u tiên đ? đư?c nh?n. Máy khách và máy ch? không đ?t tùy ch?n SO_SNDBUF và TCP_NODELAY.Hi?u su?t:Trong th?i gian th? nghi?m, các nhà phát tri?n th?y khách hàng ch? có th? nh?n đư?c báo giá năm / giây.Phân tích:Thi?t k? này ch? cho phép m?t trong nh?ng xu?t s?c c? phi?u báo yêu c?u m?t lúc. K? hi?u ch?ng khoán đ?u tiên đư?c g?i đ?n máy ch? thông qua các l?nh kênh (k?t n?i) và m?t ph?n ?ng ngay l?p t?c đư?c g?i v? t? h? ph?c v? cho khách hàng trên kênh d? li?u (k?t n?i). Sau đó, khách hàng ngay l?p t?c s? g?i yêu c?u bi?u tư?ng c? phi?u th? hai và g?i tr? l?i ngay l?p t?c như đ?m yêu c?u g?i g?i sao chép vào b? đ?m Winsock h?t nhân. Tuy nhiên, ch?ng TCP khách hàng không th? g?i yêu c?u t? b? đ?m h?t nhân c?a nó ngay l?p t?c v? là ngư?i đ?u tiên g?i qua kênh l?nh không đư?c th?a nh?n đư?c nêu ra. Sau khi 200-ms tr? ho?n h?n gi? t?i máy ch? l?nh kênh h?t h?n, ACK cho yêu c?u k? hi?u đ?u tiên tr? l?i cho khách hàng. Sau đó, theo yêu c?u báo giá th? hai thành công đư?c g?i đ?n máy ch? sau khi b? tr? ho?n cho 200-bà trích d?n cho bi?u tư?ng c? phi?u th? hai tr? l?i ngay l?p t?c thông qua các kênh d? li?u v?, vào th?i gian này, b? đ?m th?i gian ch?m tr? lúc kênh d? li?u khách hàng đ? h?t h?n. M?t ACK cho ph?n ?ng báo trư?c đó đư?c nh?n b?i các máy ch?. (H?y nh? r?ng khách hàng có th? không g?i m?t yêu c?u báo giá c? phi?u th? hai cho 200-ms, do đó đưa ra th?i gian cho h?n gi? ch?m tr? trên máy khách đ? h?t h?n và g?i m?t ACK đ?n máy ch?.) Do đó, khách hàng đư?c ph?n ?ng báo th? hai và có th? v?n đ? m?t yêu c?u báo giá, đó là tùy thu?c vào cùng m?t chu k?.Làm th? nào đ? c?i thi?n:Thi?t k? hai k?t n?i (kênh) là không c?n thi?t ? đây. N?u b?n s? d?ng ch? có m?t k?t n?i cho các yêu c?u báo giá c? phi?u và ph?n ?ng, ACK báo yêu c?u có th? đư?c piggybacked trên báo ph?n ?ng và tr? l?i ngay l?p t?c. Đ? ti?p t?c c?i thi?n hi?u su?t, khách hàng có th? "kích" yêu c?u báo giá c? phi?u nhi?u vào m?t trong nh?ng cu?c g?i g?i đ?n máy ch? và máy ch? có th? c?ng "kích" nhi?u báo ph?n ?ng vào m?t cu?c g?i g?i cho khách hàng. N?u thi?t k? hai unidirectional kênh là th?c s? c?n thi?t cho m?t s? l? do, c? hai bên nên đ?t tùy ch?n TCP_NODELAY đ? các gói d? li?u nh? có th? đư?c g?i ngay l?p t?c mà không c?n ph?i ch? đ?i cho m?t ACK cho gói d? li?u trư?c đó.Khuy?n ngh?:Trong khi các nghiên c?u trư?ng h?p hai đư?c ch? t?o, h? giúp đ? minh h?a m?t s? k?ch b?n trư?ng h?p x?u nh?t. Khi b?n thi?t k? ?ng d?ng có liên quan đ?n r?ng r?i cho d? li?u nh? phân khúc s? g?i và recvs, b?n nên xem xét các nguyên t?c sau đây:
THAM KH?OĐ? bi?t thêm chi ti?t v? s? th?a nh?n tr? ho?n và thu?t toán Nagle, xin vui l?ng xem dư?i đây: Braden, R. [1989], RFC 1122, yêu c?u cho Internet Hosts--giao ti?p l?p, Internet Engineering Task Force. Thu?c tínhID c?a bài: 214397 - L?n xem xét sau cùng: 21 Tháng Tám 2011 - Xem xét l?i: 2.0
Máy d?ch QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này. Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:214397
(http://support.microsoft.com/kb/214397/en-us/
)
| D?ch tiêu đ? |




Quay l?i đ?u trang








