1. 程式人生 > >【T09】要認識到TCP是一個可靠的,但不是絕對可靠的協議

【T09】要認識到TCP是一個可靠的,但不是絕對可靠的協議

1、稍微想一下就知道,TCP不是絕對可靠的協議,比如:網路斷開,主機崩潰,無論TCP如何努力,都無法將資料傳給對方。
2、考慮應用程式A嚮應用程式B傳送資料的TCP流程,資料流從應用程式A通過他所在主機的TCP/IP棧向下傳輸,經過幾臺中間路由器,
    通過應用程式B所在主機的TCP/IP棧向上傳輸,最後到達應用程式B。
    特別注意:中間的路由器(即使擁有TCP/IP協議棧)並不涉及TCP層和應用層,只是轉發IP資料報,
    也就是說,不會在路由器的TCP/IP協議棧向上傳輸,然後在向下傳輸,只有在傳送端和接收端才有這部分流程。
3、考慮一種極端的情況,TCP確認了收到的資料,但是應用程式還沒有來得及把這部分資料取走,就崩潰了。
    這種情況下,傳送端認為接收端已經準確無誤地收到了資料,但是接收端的應用程式並沒有取到資料。
    除此之外,還有其他一些的情況,
4、網路中斷,如果沒有備用的路徑,資料傳輸一直失敗,知道傳輸路徑修復好,或者存在了備用的路徑。
5、對等實體崩潰,也就是對端的應用程式崩潰,
    注意:對等實體崩潰與對等實體呼叫close(windows下呼叫closesocket)以及exit是無法區分的。
    這種情況下,對等實體會發送fin包,表明沒有辦法再發送資料了。
6、對等實體的主機崩潰,這和對等實體崩潰不同,主機崩潰了,沒法傳送fin給我們。

相關推薦

T09認識TCP一個可靠絕對可靠協議

1、稍微想一下就知道,TCP不是絕對可靠的協議,比如:網路斷開,主機崩潰,無論TCP如何努力,都無法將資料傳給對方。 2、考慮應用程式A嚮應用程式B傳送資料的TCP流程,資料流從應用程式A通過他所在主機的TCP/IP棧向下傳輸,經過幾臺中間路由器, 通過應用程式B所在主機的TCP/IP棧向上傳輸,最後

文件各種上傳開的表單

dal 不變 沒有 each post str 線程 order bmi 閱讀目錄 利用表單實現文件上傳 表單異步上傳(jquery.form插件) 模擬表單數據上傳(FormData) 分片上傳 使用HTML5 拖拽、粘貼上傳 上傳插件(WebUploader

需要學習的是程式設計是程式語言

我們不僅是程式設計師,而且是個(與時俱進的)學習者。鮮見的是有多少人認為他們是在學習程式設計的呢。原翻譯傳送門is here 你可能在學習程式設計語言而不是程式設計本身 別對學習電腦科學(CS)不是研究計算機這種言論感到驚訝。相反的,學習CS是對自動解決問題的研究。解決問題的是電腦科學,而不是程

bootstrapValidatorbootstrapValidator對隱藏域驗證外掛能捕獲“程式賦值事件”解決方案

1. 賦值之後觸發一次“change”事件 //bootstrapValidator這個外掛不能捕獲這樣的“程式賦值事件”,所以這裡不能達到驗證的效果。 //解決辦法:賦值之後觸發一次“change”事件 $("#result").val(result).change(); 2.e

Linuxapt-get update更新失敗到xxx

提示什麼索引錯誤導致找不到xxx,花了點時間才解決這個問題。 先刪除快取: sudo rm -vrf /var/lib/apt/lists/* 一般這樣會解決問題,如果沒解決的話。 再次刪除快取,接

EXPDP匯出全部表的時候選擇匯出某個表

匯出的時候指定某一張表不匯出的話,一般都用的是資料泵的expdp來操作 具體方法是: expdp test/test dumpfile=test.dmp directory=test_dir exclude=table:"='TEST_TABLE'" 不匯出test_tab

Python使用socketserver建立一個非同步TCP伺服器

概述 這篇文章是講解如何使用socketserver建立一個非同步TCP伺服器,其中Python版本為3.5.1。 socketserver主要的類 socketserver模組中的類主要有以下幾個

網絡知識1http、tcp/udp、soap的區別

target https tar 網絡知識 soa 區別 ext soap udp 一句話總結: soap信息可以通過http協議包裝後通過tcp或udp傳輸參考:https://zhidao.baidu.com/question/617706398106243452.ht

Django01_創建一個簡單的項目

版本 啟動服務 star nag png size inline 管理 round 1.創建Django項目點擊:file-->new project,出現下面的對話框。選擇Django欄目,輸入項目名稱,選擇python解釋器版本,點擊create創建。Django

assembly用匯編寫的一個BMP圖片讀取器

head aof 分享 first 代碼 sub mov erp ddr ;----------------------------- ;文件滿足256色調的 ;----------------------------- Stack Segment

使用webmagic搭建一個簡單的爬蟲

class 直接 了解 pid 個數 粘貼 body 教程 相關配置 【轉】使用webmagic搭建一個簡單的爬蟲 剛剛接觸爬蟲,聽說webmagic很不錯,於是就了解了一下。 webmagic的是一個無須配置、便於二次開發的爬蟲框架,它提供簡單靈活的API,只需少量代碼

BBC解剖了一個200斤女子看完你會用生命去減肥!

一個 是否 ID 中國 RM 過度 中國人口 理學 enter 此文有部分血腥的解剖畫面,如果無法忍受可以現在關掉頁面!   最近BBC有一部紀錄片震驚全球,   他們用最直觀的方式告訴你肥胖有對可怕,   紀錄片的名字叫——解剖肥胖!▼   紀錄片中,兩位解剖病理學專家

原創自己動手寫一個服務網關

exception 負責 lis world 前置 create ble ddr load 引言 什麽是網關?為什麽需要使用網關? 如圖所示,在不使用網關的情況下,我們的服務是直接暴露給服務調用方。當調用方增多,勢必需要添加定制化訪問權限、校驗等邏輯。當添加API網關後,

HTTP學習---TCP和UDP協議的區別與應用

用戶數 prot 發送 smi 處理 層次 實時性 oot user 【原文】https://www.toutiao.com/i6592813624689951239/ 概述 ⊙TCP/IP是個協議組,可分為三個層次:網絡層、傳輸層和應用層。 在網絡層有IP協議、ICMP

網路程式設計基礎day10:我是一個程序(三)

一、引子 我聽說我的祖先們生活在專用計算機裡, 一生只幫助人類做一件事情,比說微積分運算 了、人口統計了 、生成密碼、甚至通過織布機印花 !   如果你想在這些專用“計算機”上乾點別的事兒,例如安裝個遊戲玩玩, 那是絕對不可能的, 除非你把它拆掉, 然後建一個全新的機器。  

網路程式設計基礎day10:我是一個執行緒(四)

本節內容 1、第一回 初生牛犢 2、第二回 漸入佳境 3、第三回 虎口脫險 4、第四回 江湖再見 第一回 初生牛犢 我是一個執行緒,我一出生就被編了個號:0x3704,然後被領到一個昏暗的屋子裡,在這裡我發現了很多和我一模一樣的同伴。 我身邊的同伴0x6900 待的時間比較長,他帶著滄桑的口氣對

專案利用node開發一個部落格網站

專案:利用node開發一個部落格網站 首先你要先安裝node(這個在網上都是有教程的) [點選前往中文網站]:(http://nodejs.cn/) [點選前往英文網站]:(https://nodejs.org/en/) 其次寫的是各個頁面的佈局 這個專案主要還是實現新增隨筆的功能,以及如何把新

人工智慧用Python實現一個簡單的人臉識別原來我和這個明星如此相似

近幾年來,興起了一股人工智慧熱潮,讓人們見到了AI的能力和強大,比如影象識別,語音識別,機器翻譯,無人駕駛等等。總體來說,AI的門檻還是比較高,不僅要學會使用框架實現,更重要的是,需要有一定的數學基礎,如線性代數,矩陣,微積分等。 幸慶的是,國內外許多大神都已經給我們造好“輪子”,我們可以直接來使用某些模型

用JavaScript寫一個區塊鏈

幾乎每個人都聽說過像比特幣和以太幣這樣的加密貨幣,但是隻有極少數人懂得隱藏在它們背後的技術。在這篇部落格中,我將會用JavaScript來建立一個簡單的區塊鏈來演示它們的內部究竟是如何工作的。我將會稱之為SavjeeCoin! 全文分為三個部分: part1:實現一個基本的區塊鏈

翻譯把滑鼠當做一個畫筆

⚠️這個系列是自己瞎翻的,文法很醜,跳著跳著撿重要的部分翻,翻錯了不負責,就這樣。 ⚠️基於3.4.3,Mouse as a Paint-Brush,附原文。 目標  掌握Opencv中的滑鼠事件 你會學到這個方法 : cv.s