2014-12-03 58 views
0

背景信息:xinetd是否保留數據完整性?

我用PHP編寫的一個網頁,將數據發送到另一臺服務器上,像這樣:

$url = "example=data&to=show&the=format&im=using"; 
$client = stream_socket_client("<IP address and port>", $errno, $errorMessage); 
fwrite($client, $url . "\n"); 

在接收端服務器使用xinetd來啓動一個腳本,執行實際處理。它的配置是這樣的:

service b2b 
{ 
    socket_type = stream 
    protocol = tcp 
    wait = no 
    user = root 
    server = /bbj/bin/bbj 
    server_args = -c/samuel/config.daemon -q SS0B2R - system /tmp 
    groups = yes 
    disable = no 
    per_source = UNLIMITED 
    instances = UNLIMITED 
    flags = NODELAY KEEPALIVE 
} 

問題:比方說有某種災難,就像是有人翻出了以太網電纜,是有可能的腳本只接收字符串的一部分?即:example=data&to=sh

回答

0

這不是關於xinetd,它是關於協議。

如果你使用像stream_socket_client("tcp://www.example.com:80", $errno, ... everything is OK.

TCP TCP是一種可靠的數據流進行配送服務,保證收到的所有字節將與發送的字節,並以正確的順序相同。由於通過許多網絡的分組傳輸是不可靠的,所以使用稱爲帶有重傳的肯定確認的技術來保證分組傳輸的可靠性。這種基本技術要求接收器在接收數據時用確認消息進行響應。發件人保存它發送的每個數據包的記錄。發送方還從數據包發送時起維護一個計時器,如果計時器在消息確認之前到期,則重新發送數據包。在數據包丟失或損壞的情況下需要定時器

+0

這似乎與我在這裏得到的答案相矛盾:http://superuser.com/questions/847863/sending-large-data-over-tcp-and-progress - 指示/ 其他答案完全錯誤? – Shane 2014-12-04 15:49:12