text: UDP-Lite（--在瞭解自己應用資料的損壞影響的情況，對資料完整度的控制決定。它定義於#重定向 。協議介紹.UDP-Lite是基於使用者資料報協議、使用者資料報協議，校驗和會覆蓋整個資料包的負載，一旦資料包即使有一個位元組的損壞，接收方都會因為校驗和驗證失敗而丟棄整個資料包，單個位元組的錯誤會影響整個資料包的接收，但對於這些應用層協議來說，這些損壞是微不足道的。對於大部分現在多媒體編解碼處理程式，其處理的應用資料本身就內建了對資料錯誤的檢測和回放時的錯誤糾正的機制。UDP-Lite很適合配合這些應用程式使用，因為這些應用本身能接受有損壞的應用資料，能容許少量的資料損壞被接收而非因為校驗和錯誤導致整個資料被丟棄。應用層瞭解自己應用資料各部分的重要性，從而允許負載資料前部分受校驗和保護，而非整個資料包強制受校驗和保護。在Hammer等人的研究中，UDP-Lite與AMR編解碼器結合使用，可在有損網路條件下提高語音質量。由於資料鏈路層也存在校驗和機制用於丟棄資料有損壞的資料幀，所以UDP-Lite也需要了解其資料鏈路層，從而需要相應的驅動程式調整。UDP-Lite的IP協議號為136，可以使用網際網路號碼分配局分配給UDP的相同功能埠。為了和UDP保持相容，UDP-Lite使用和UDP、TCP相同的校驗和演算法。實現支援.以下作業系統有相應的實現支援：使用.在Berkeley套接字中，使用UDP-Lite的話，需要在呼叫socket建立方法socket時增加第三個引數值IPPROTO_UDPLITE：int fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDPLITE);然後在設定socket引數方法setsockopt新增控制校驗和需要覆蓋長度的控制引數：int val = 20; /* 8位元組長的包頭 + 12位元組的負載長度 */(void)setsockopt(fd, SOL_UDPLITE, UDPLITE_SEND_CSCOV, &amp;val, sizeof val);/* 如果實際負載長度小於12位元組，則等同整個資料包都被校驗和覆蓋 */預設情況下，接收方將丟棄所有校驗和未完全覆蓋的資料包，如同UDP那樣，所以接收方也需要類似的接收設定：int val = 20; /* 8位元組長的包頭 + 12位元組的負載長度 */(void)setsockopt(fd, SOL_UDPLITE, UDPLITE_RECV_CSCOV, &amp;val, sizeof val);這樣至少保證負載長度為12位元組長的部分資料被校驗和保護，任何少於12位元組長負載的資料包會被協議視為壞包而丟棄，而如果資料包的覆蓋長度值至少為20位元組長，並且其校驗和正確，則將其交付給應用層的應用程式。如果校驗和不正確，資料包同樣被丟棄。校驗和覆蓋值可以等於0或大於等於8位元組時，也就是校驗和的校驗部分至少包括資料包頭，以防止一些對所有流量都感興趣的嗅探器。
metadata: erhwenkuo/wikipedia-zhtw
metadata: 輕量使用者資料報協議
metadata: https://zh.wikipedia.org/wiki?curid=6947589