thắc mắc Vài thắc mắc về network mong các bác chỉ giáo

alexTVr1

Member
em viết 1 con proxy dạng MITM, để nằm chính giữa , giữa 1 webbrowser và server web
1. cho em hỏi khi mình tạo 1 kết nối theo giao thức tcp, ở đây em dùng java socket, thì có cách nào để biết được packet cuối cùng mà server nó gửi cho client ko nhỉ, em có tìm trên mạng thì nó nói trong header http có trường content-length, hoặc chunk , nhưng cách này ko khả thi vì chỉ xem đc của http, còn https thì ko xem đc nên ko thể biết đc packet nào là packet cuối cùng , rồi nào là check ending character nhưng cũng ko khả thi nốt nếu gặp https

2. với 1 packet lớn thì tự động nó sẽ chia nhỏ packet đó ra từng phần rồi chuyển từ server sang, vd: bên server nó response về 1 packet 1mb , thì bên con proxy em viết, em dùng 1 vòng lặp để lấy các packet từ inputstream của socket, thì em thấy đúng là nó chia nhỏ ra chạy nhiều lần mới get xong 1mb đó, thì cho em hỏi khi em chuyển từng packet đó về lại client mà em chuyển ko theo thứ tự thì client nó có hiểu mà ghép lại đc ko? vd: lúc em nhận thứ tự packet 1,2,3,4 nhưng khi em chuyển lại về cho client thì em chuyển lộn xộn 3,4,1,2 thì client nó có chấp nhận ko,và vì sao?

3. câu hỏi ngoài luồng 1 tý, mấy thím cho em hỏi sự khác nhau giữa việc sử dụng Server-Sent Events và việc tạo 1 kết nối tcp bền (persistent connection http , bản http 1.1 trở về sau mới có cái này), để mình gửi data liên tục từ server cho client, em thấy bản chất nó giống nhau, em lấy ví dụ với 1 server web bằng nodejs, 1 cặp http request-response sẽ đóng lại nếu thằng server nó gọi đến lệnh res.end() lúc này server sẽ đóng kết nối với client, còn khi nào mà server chưa đóng thì mình cứ dùng res.write() để đẩy packet về client, em chỉ thấy thằng Server-Sent Events khác biệt là nó thêm vào header response là Content-Type': text/event-stream
 
1. TCP là stream, vì vậy không thể biết được là đã hết stream hay chưa, tuỳ ứng dụng với nhau mà nó có thể quy định, còn close connection thì có gửi FIN.
2. TCP đảm bảo order, và trong header nó có thứ tự, vậy nên không sao.
3. SSE thì thì không cần phải store toàn bộ buffer nhu kiểu XHR cũ, memory efficient hơn
 
1. TCP là stream, vì vậy không thể biết được là đã hết stream hay chưa, tuỳ ứng dụng với nhau mà nó có thể quy định, còn close connection thì có gửi FIN.
2. TCP đảm bảo order, và trong header nó có thứ tự, vậy nên không sao.
3. SSE thì thì không cần phải store toàn bộ buffer nhu kiểu XHR cũ, memory efficient hơn
thanks thím, chỗ sse "không cần phải store toàn bộ buffer nhu kiểu XHR cũ" chỗ này thím có tài liệu hay dẫn chứng gì ko, hay thím từng làm và quan sát thấy nó như thế
 
Back
Top