khangvt
24-07-2004, 02:08 PM
- Theo em được biết thì tính checksum của UDP bao gồm cả phần header và phần data. Người ta sẽ coi cả segment như là một chuỗi các từ 16 bit. Đầu tiên người ta tính tổng các từ này lại ( phép cộng nhị phân) sau đó lấy phần bù của nó và ghi giá trị này vào trường UDP checksum ở bên gửi. Ví dụ như là:
Một UDP datagram có 16bits Source port, 16 bits Destionation port, 16 bits UDP length, 16 bits Checksum và 32 bits data. Như vậy theo quy tắc trên thì người ta sẽ tính tổng của:
Source port + Destionation port+ UDP length+ data---> lấy phần bù---> ghi vào UDP checksum.
Tính như thế này có đúng chưa ạ ?
- Theo như cách tính này thì UDP pseudo header không có được tính đến, nhưng mà khi người ta lại nói là "UDP bao gồm cả 12- byte pseudo- header chỉ để phục vụ cho việc tính toán checksum". Điều này nghĩa là sao ạ ?
- Tại sao UDP length lại có cả trong phần header và phần pseudo-header, trong khi ta đã chỉ ra rằng trường này là có thể có hoặc không( vì UDP length= IP datagram length- IP header)
Hỏi hơi nhiều, mong các anh chị chỉ giúp giùm em. Em xin cảm ơn trước ạ !! :D
Một UDP datagram có 16bits Source port, 16 bits Destionation port, 16 bits UDP length, 16 bits Checksum và 32 bits data. Như vậy theo quy tắc trên thì người ta sẽ tính tổng của:
Source port + Destionation port+ UDP length+ data---> lấy phần bù---> ghi vào UDP checksum.
Tính như thế này có đúng chưa ạ ?
- Theo như cách tính này thì UDP pseudo header không có được tính đến, nhưng mà khi người ta lại nói là "UDP bao gồm cả 12- byte pseudo- header chỉ để phục vụ cho việc tính toán checksum". Điều này nghĩa là sao ạ ?
- Tại sao UDP length lại có cả trong phần header và phần pseudo-header, trong khi ta đã chỉ ra rằng trường này là có thể có hoặc không( vì UDP length= IP datagram length- IP header)
Hỏi hơi nhiều, mong các anh chị chỉ giúp giùm em. Em xin cảm ơn trước ạ !! :D