2012-03-05 13 views
12

"thư mục tin nhắn" trong ngữ cảnh sau đây là gì?Ranh giới thư là gì?

Một sự khác biệt giữa TCP và UDP là UDP duy trì thông báo đường biên.

Tôi hiểu sự khác biệt giữa TCPUDP, nhưng không chắc chắn về định nghĩa của "ranh giới thông báo". Vì UDP bao gồm thông tin đích và cổng trong từng gói riêng lẻ, có thể là thông báo này cung cấp cho thông báo "ranh giới" không?

+0

Hmm, http://codeidol.com/csharp/csharp-network/Connectionless-Sockets/Distinguishing-UDP-Messages/ (UDP) và http://codeidol.com/csharp/csharp-network/IP-Programming -Basics/Lập trình-với-TCP-và-UDP/(TCP) có thể giúp đỡ. – Jason

Trả lời

16

Không, ranh giới thông báo không liên quan gì đến điểm đến hoặc cổng. "Biên giới thông báo" là sự tách biệt giữa hai thư được gửi qua giao thức. UDP bảo tồn ranh giới thư. Nếu bạn gửi "FOO" và sau đó "BAR" trên UDP, đầu kia sẽ nhận được hai datagram, một chứa "FOO" và một chứa "BAR".

Nếu bạn gửi "FOO" và sau đó "BAR" qua TCP, không có ranh giới thư nào được giữ nguyên. Đầu kia có thể nhận được "FOO" và sau đó "BAR". Hoặc nó có thể nhận được "FOOBAR". Hoặc nó có thể nhận được "F" và sau đó "OOB" và sau đó "AR". TCP không thực hiện bất kỳ nỗ lực nào để bảo vệ các ranh giới thông điệp ứng dụng - nó chỉ là một luồng byte theo mỗi hướng.

+0

Trong TCP, luồng/bộ đệm sẽ truyền hoặc nhận theo thứ tự? Tôi sẽ không nhận được "BAR" trước "FOO" hoặc mỗi byte có thể trộn lẫn với một cái gì đó như "ORAFBO"? – KMC

+0

@KMC: [Wikipedia TCP] (http://en.wikipedia.org/wiki/Transmission_Control_Protocol): TCP cung cấp đáng tin cậy, ** được sắp xếp ** phân phối luồng byte [..] – LumpN

+0

Cũng lưu ý rằng UDP KHÔNG . – GazTheDestroyer

2

Ranh giới thư trong ngữ cảnh này chỉ đơn giản là bắt đầu phần kết thúc của thư/gói tin bắt đầu &. Với các kết nối TCP, tất cả các tin nhắn/gói dữ liệu được kết hợp thành một dòng dữ liệu liên tục, trong khi đó với UDP, các tin nhắn được gửi cho bạn ở dạng ban đầu của chúng. Chúng sẽ có kích thước chính xác theo byte.