2010-02-28 20 views

Trả lời

21

Nó không phải là đặc biệt tinh tế - nó để các bit SYN và FIN có thể được thừa nhận (và do đó được gửi lại nếu chúng bị mất). Ví dụ: nếu kết nối được đóng mà không gửi thêm dữ liệu, thì nếu FIN đã làm không tiêu thụ số thứ tự, thì kết thúc đóng không thể cho biết sự khác biệt giữa ACK cho FIN và ACK cho dữ liệu đã được gửi trước FIN.

+0

Nếu người dùng chỉ định rằng bất cứ thứ gì mở kết nối phải gửi byte 00 ở đầu kết nối (mà người nhận phải bỏ qua) và 00 khác ở cuối (người nhận sẽ bỏ qua) cùng ngữ nghĩa như các bit SYN/FIN, nhưng với chi phí truyền hai byte nhiều hơn với mỗi kết nối? – supercat

+0

Supercat: Sau đó bạn sẽ làm gì nếu dữ liệu trong luồng bắt đầu hoặc kết thúc bằng một byte rỗng? – EricLaw

+0

Để bắt đầu, gói đầu tiên được gửi bởi bên trả lời SYN ban đầu sẽ có số thứ tự bằng với số nhận được trong SYN, thay vì bằng với số cộng thêm; do đó, một người nhận sẽ coi byte đầu tiên của gói đó như là một sự truyền lại vô dụng. Để kết thúc, giao thức sẽ phải được định nghĩa để nói rõ ràng rằng byte cuối cùng của truyền dẫn sẽ bị bỏ qua. – supercat

6

SYN và FIN yêu cầu xác nhận, do đó chúng tăng số thứ tự của luồng lên một khi được sử dụng.

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