2017-08-28 47 views
8

Vì mục đích học tập, tôi đang triển khai TCP (hiện chỉ là RFC 793) nhưng tôi không có ý tưởng nào về cách kiểm tra nó . Hầu hết các nội dung TUN/TAP trên internet đã lỗi thời (ví dụ: cuộc gọi API Linux không còn hoạt động nữa) và không giải thích đủ. Ngoài ra, tôi cảm thấy như tạo thiết bị và gói chuyển tiếp, v.v. không phải là cách tốt nhất cho mục đích học tập. Ví dụ, tôi thà chỉ ghi đè socket(), listen(), connect(), accept(), send(), recv() vv trong một chương trình khá hơn chuyển tiếp tất cả lưu lượng ethernet với một thiết bị/chương trình mà không được bookeeping cho toàn bộ hệ thống chứ không phải hơn cho một chương trình duy nhất.Làm cách nào để kiểm tra triển khai TCP tùy chỉnh trên Linux?

Tôi tự hỏi nếu điều này là có thể. Nếu không, tôi muốn biết cách đơn giản nhất để kiểm tra triển khai TCP trên Linux.

Vì tôi đang theo dõi RFC 793, sẽ rất tuyệt nếu tôi có thể có API giao thức IP (Internet như đã đề cập trong RFC) trong đơn đăng ký của mình. Điều này có thể thực hiện hoặc làm Tôi có phải gây rối với công cụ TUN/TAP không?

Cảm ơn ..

+0

Tôi cố gắng để hiểu rõ hơn về câu hỏi của bạn. Bạn có một ngăn xếp TCP mà bạn đã thực hiện và bạn muốn để có thể kiểm tra đó? Có ít nhất hai cách bạn có thể, bạn muốn kiểm tra ngăn xếp TCP của bạn như một máy chủ và sau đó kết nối bất kỳ máy khách 'chuẩn' nào (như telnet với nó.). Một số nâng nặng bạn phải làm là - để có thể thực hiện lắng nghe và chấp nhận giống như chức năng chính mình trên ngăn xếp TCP - nhưng đó sẽ là một điểm khởi đầu - Giả sử - bạn nhận được các gói dữ liệu IP đầu vào.Cách khác là kiểm tra nó như là một khách hàng, đầu tiên. – gabhijit

Trả lời

0

Tất cả bạn cần là để đánh chặn tất cả các gói tcp với bit (syn, ack, vây, vv) ứng dụng của bạn đã được gửi và để xem nếu nó hoạt động đúng cách:

enter image description here

Nó chỉ đơn giản có thể được thực hiện với Wireshark hoặc Sniffer khác. Khi kiểm tra, bạn sẽ thấy tất cả các gói tcp với các bit bạn đã gửi.

enter image description here

Để bạn muốn xem các cuộc gọi hệ thống Linux mà ứng dụng của bạn đang kêu gọi, bạn có thể sử dụng GDB hoặc bất kỳ chương trình gỡ rối khác.

1

Bạn có thể thử thiết lập hai đồng nghiệp , một bằng cách sử dụng ổ cắm RAW và ổ cắm TCP khác.

Nếu họ có thể giao tiếp và gói dữ liệu thực sự được phân phối/khôi phục giống như cách TCP thực hiện, bạn biết rằng triển khai tùy chỉnh của bạn thành công.

C sockets

C RAW sockets

C TCP implementation

Các vấn đề liên quan