2013-11-21 4 views
2

Я писал сервер-клиентское приложение. Сервер закодирован в C#, а клиентский код написан с использованием java. Протокол связи - TCP.Насколько надежным является TCP-соединение?

При передаче файла с использованием tcp можно отправить отсутствующие данные. Другими словами, tcp гарантирует, что данные поступают правильно. (Должен ли я отправлять информацию заголовка для этого файла, чтобы проверить ошибки, такие как размер файла, хеш и т. Д.)

+1

TCP может иногда иметь ошибки. Вот почему вы иногда видите контрольные суммы с файлами. –

+2

TCP [надежный] (http://en.wikipedia.org/wiki/Transmission_Control_Protocol) –

+0

Sriram Я знаю, что tcp - надежные пакеты. Я имею в виду, что это проверка ошибок, потеря пакетов и т. Д. Но я не уверен в надежности на заказанной передаче пакета. Иными словами, предположим, что вы отправляете большой файл через tcp.While передавая файл клиенту потерянный пакет, конечно, он будет отправлять снова причину tcp.However на стороне клиента вы открыли поток и напишите входящие данные в файл, то что произошло с пакетом. Это не тот порядок, который должен быть. Что происходит на заднем плане? Если я непосредственно пишу входящий поток в файл, правильно ли он написан? –

ответ

3

Заказ пакетов передачи tcp надежный.

Например ваше сообщение ТСР делится на три пакета A, B и C.

Ваш клиент получает пакет, B теряется, а затем клиент получает C. В потоке вы получите только пакет А, пакет C сохраняется, и как только пакет B будет повторно передан и получен вашим клиентом, в потоке вы получите пакет B, а затем C.

То же самое можно сделать, если пакет B маршрутизируется другим способом и должен быть получен после package C.

Для этого механизма требуется поле 'Sequence Number' в заголовке tcp.

3

TCP обеспечивает 16-разрядную контрольную сумму в протоколе. Он может обнаружить большинство ошибок. Ошибки чаще совершаются на верхних уровнях, а не tcp/ip. Если вам нужна высокая надежность в вашем программном обеспечении, можно рассмотреть комплексную стратегию.

Существует классическая статья, в которой говорится об этом: «end to end arguments in system design».

Смежные вопросы