這周開始學習分層網絡模型的第三層,傳輸層。算法
TCP層的目的是補償IP層中可能出現的錯誤,並充分利用可用資源。因爲IP層是有可能丟失數據的,所以TCP層會保存一份數據拷貝,不斷的重發數據包直到收到確認應答,若是耗時太長(hop數過多),也將從新發送。數據庫
TCP的原理大體是這樣的:數據在傳輸數據時會分紅不少個packets(包),分開發送。咱們不斷地重複發送過程直到從目的端收到acknowledgement(確認回覆),若是途中有出現數據丟失的狀況,那麼會一直重複發送直到收到目的端的確認爲止。網絡
所以TCP的工做其實就是確保全部的packet(包)都能被目的端接收。tcp
IP不被要求可以進行Storage(存儲),就像路由器不會進行任何存儲,只是儘快的來回傳輸。但咱們也須要有Memory(內存)來存儲這些數據包,以便咱們重傳,因此電腦或手機經過網絡發送數據時,它就承擔起存儲副本的功能,而不是網絡自己來存儲。分佈式
在20世紀80年代後期,有人預測因特網將會消亡,確實隨着NSFNet的出現,接入的計算機數目增長致使網速愈來愈慢,網絡很難繼續支撐。全靠Van Jacobson,他提出了Slow Start(慢啓動)算法,解決了網絡擁堵問題並拯救了互聯網。ide
接下來是關於他的一段採訪。學習
cwnd(Congestion Window,擁塞窗口)是一個狀態變量,它表示無需等待確認應答就能夠繼續發送數據包的最大數量,其大小取決於網絡的擁塞程度,而且動態地在變化。發送方讓本身的發送窗口等於擁塞窗口,另外考慮到接受方的接收能力,發送窗口可能小於擁塞窗口。
慢開始算法的思路就是,避免一開始就發送大量的數據,換成先試探網絡的擁塞程度,再由小到大逐漸增長擁塞窗口的大小。spa
DNS(Domain Name System,域名系統)是萬維網上做爲域名與IP地址相互映射的一個分佈式數據庫,可以使用戶只需記住更加友好且有意義的字符串域名,域名經過解析再獲得IP地址。畢竟數字IP對人類來講不怎麼友好,顯然,記住一串有意義的英文或者英文縮寫的組合比記一串數字更加容易也更加直觀。3d
總而言之,TCP主要就是彌補IP層所作的工做的不完美之處。例如:數據到達時,能夠再也不是無序的;TCP使得數據在發送端儲存了拷貝,若是沒有收到ACK就會重複發送,確保數據不會丟失。blog