tcp là một giao thức dòng byte. chuỗi byte được gửi bởi ứng dụng http của bạn được đóng gói trong các phân đoạn dữ liệu tcp và luồng byte được tạo lại trước khi dữ liệu được gửi đến ứng dụng ở phía bên kia. vì bạn đang truy cập vào các tệp dữ liệu tcp bằng winpcap, bạn cần phải chuyển đến phần dữ liệu của phân đoạn. tiêu đề của tcp có độ dài cố định là 20 byte + một phần tùy chọn mà bạn cần xác định bằng cách sử dụng api winpcap.
độ dài của phần dữ liệu trong phân đoạn tcp được xác định bằng cách trừ chiều dài tiêu đề tcp (được lấy từ trường trong phân đoạn tcp) và độ dài tiêu đề ip (từ trường trong datagram ip đóng gói phân đoạn tcp) từ tổng chiều dài (thu được từ một trường khác trong datagram ip).
vì vậy bây giờ bạn có tổng chiều dài phân đoạn và độ dài của phần dữ liệu trong phân đoạn. vì vậy bạn biết bù đắp nơi dữ liệu yêu cầu http bắt đầu.
offset là
total length-length of data part
or
length of ip-header + length of tcp header
tôi đã không sử dụng winpcap. vì vậy bạn sẽ phải tìm hiểu làm thế nào để có được những lĩnh vực này bằng cách sử dụng api.
cũng ip datagrams có thể được phân mảnh hơn nữa nhưng tôi mong rằng bạn chỉ được cung cấp các gói dữ liệu được tái cấu trúc bằng cách sử dụng api này. bạn rất tốt để đi!
Nguồn
2010-02-15 05:33:54