Tôi đang cố gắng hiểu lý do đằng sau thiết kế như vậy. Tôi lướt qua một vài RFC nhưng không tìm thấy bất cứ điều gì rõ ràng.Tại sao bit SYN hoặc FIN trong phân đoạn TCP sử dụng một byte trong không gian số thứ tự?
22
A
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.
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.
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
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
Để 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