IP Header Checksum tính toán checksum IP là một trường 16-bit trong header IP được sử dụng để phát hiện lỗi cho IP header. Nó tương đương với của một sự bổ sung của những ai bổ sung tổng hợp của tất cả các từ 16 bit trong header IP. Các lĩnh vực kiểm tra được khởi tạo cho tất cả các số không ở tính toán. Một bù tiền được tính toán bằng cách tổng hợp tất cả các số và thêm các carry (hoặc thực) để kết quả. Và một người được xác định bổ sung bằng cách đảo ngược tất cả các số 0 và số 1 ở bit đại diện của số. Ví dụ, nếu một IP header là 0x4500003044224000800600008c7c19acae241e2b. Chúng ta bắt đầu bằng cách tính toán của một số tiền bổ sung. Đầu tiên, chia hex đầu vào 16 bit mỗi và tổng hợp, lập 4500 + 0030 + 4422 + 4000 + 8006 + 0000 + 8c7c + 19ac + ae24 + 1e2b = 2BBCF Tiếp gấp kết quả vào 16 bit bằng cách thêm các carry để kết quả , 2 + BBCF = BBD1 Bước cuối cùng là tính toán của một bù của tổng của một sự bổ sung của, BBD1 = 1011101111010001 IP checksum = một của bổ sung (1011101111010001) = 0100010000101110 = 442E Lưu ý rằng IP tiêu đề cần được phân tích tại mỗi hop, vì IP địa chỉ cần thiết để định tuyến các gói tin. Để phát hiện các sai sót ở IP header, tổng kiểm tra được xác nhận tại mỗi hop. Việc xác nhận được thực hiện bằng cách sử dụng cùng một thuật toán. Nhưng lần này giá trị checksum khởi tạo là 442E. 2BBCF + 442E = 2FFFD, sau đó 2 + FFFD = FFFF Lấy ai bù của FFFF = 0. Tại xác nhận, việc tính toán checksum nên đánh giá là 0 nếu các tiêu đề IP là đúng. TCP Checksum Tính toán TCP Checksum là một trường 16-bit trong TCP tiêu đề được sử dụng để phát hiện lỗi. Nó được tính toán trên các phân đoạn TCP (sức mạnh cộng với một số padding) và một 12-byte TCP giả tiêu đề tạo trên bay. Tương tự như IP checksum, TCP checksum cũng là một trong những nhân bổ sung của của một bổ sung tổng hợp của tất cả các từ 16 bit trong các dữ liệu tính toán. Dưới đây là một con số để minh họa các dữ liệu được sử dụng để tính toán TCP checksum, Hình 1. TCP Checksum tính toán dữ liệu Như trong hình, tiêu đề giả bao gồm 5 lĩnh vực, địa chỉ nguồn: 32 bits / 4 byte, được lấy từ tiêu đề IP địa chỉ đích: 32bits / 4 byte, được lấy từ tiêu đề IP resevered: 8 bit / 1 byte, tất cả các số giao thức: 8 bit / 1 byte, được chụp từ IP header. Trong trường hợp của TCP, điều này luôn luôn nên là 6, mà là số giao thức TCP cho. TCP Length: Chiều dài của đoạn TCP, bao gồm TCP header và dữ liệu TCP. Lưu ý rằng lĩnh vực này không có sẵn trong tiêu đề TCP, do đó được tính trên bay. Lưu ý rằng tiêu đề TCP giả không thực sự tồn tại, và nó không được truyền qua mạng. Nó được xây dựng trên bay để tính toán checksum. Nếu một phân đoạn TCP chứa một số lẻ các octet được checksummed, các octect cuối cùng được đệm trên đúng với số không để tạo thành một từ 16-bit. Nhưng đệm không phải là một phần của các phân đoạn TCP và do đó không được truyền. Cũng lưu ý các trường checksum của tiêu đề TCP cần phải được khởi tạo để số không trước khi tính checksum. Và đó là thiết lập để các giá trị tính toán sau khi tính toán. Khi gói tin TCP được nhận tại đích, mã TCP nhận cũng thực hiện các tính toán TCP và xem nếu có một không phù hợp. Nếu có, nó có nghĩa là có lỗi trong các gói tin và nó sẽ bị loại bỏ. Các logic xác nhận cùng sử dụng cho IP xác nhận tiêu đề kiểm tra có thể được sử dụng. UDP Checksum Calcuation tính UDP Checksum tương tự như TCP Checksum tính toán. Nó cũng là một lĩnh vực 16-bit của một người bổ sung của một người bổ sung tổng của một giả UDP header + UDP datagram. Các Pseudo UDP header cũng bao gồm 5 lĩnh vực, địa chỉ nguồn: 32 bits / 4 bytes, lấy từ header IP địa chỉ đích: 32 bit / 4 byte, được lấy từ tiêu đề IP dành riêng: 8 bit / 1 byte, thiết lập tất cả các số 0. protocol: 8 bit / 1 byte, được lấy từ tiêu đề IP dài: Bởi vì UDP header có một lĩnh vực chiều dài cho biết chiều dài của toàn bộ datagram, kể cả UDP header và dữ liệu, giá trị từ UDP header được sử dụng. Lưu ý rằng điều này là khác nhau từ phần đầu TCP giả, được tính trên bay. Nhưng cả hai đều chỉ ra độ dài tiêu đề + tải trọng. Lưu ý rằng UDP checksum là tùy chọn. Nếu nó không được tính, đó là thiết lập cho tất cả các số 0. Điều này có thể gây ra vấn đề là đôi khi các kiểm tra có thể được tính như tất cả các số 0. Để tránh nhầm lẫn, nếu checksum được tính như tất cả các số 0, đó là thiết lập cho tất cả các 1s (tương đương trong một số học của bổ sung).
đang được dịch, vui lòng đợi..
