幾個概念算法
1.分層(咱們使用四層模型更爲貼合咱們的實際網絡)編程
分層是爲何,其實和公司中職位是同樣的,不一樣職位的人作不一樣的事情,而後不一樣職位的人合起來,一塊兒完成了數據傳輸的事情。緩存
鏈路層 在這個層面,主機與主機的交互只認得硬件mac編號,並不認識IP。服務器
網絡層 IP ICMP IGMP網絡
運輸層 TCP UDPspa
應用層 Telnet遠程登錄,FTP文件傳輸協議(咱們這個端口和那個端口的鏈接是用來幹什麼的,傳輸文件?那麼可使用FTP。傳輸文本?那麼可使用HTTP。應用層就是實際上對具體的程序之間的交互功能進行定義的層。)3d
2. 接口 互聯網上的每一個接口必須有一個惟一的 I P地址指針
使用T C P / I P協議的應用程序一般採用兩種應用編程接口( A P I):視頻
s o c k e t和T L I(運輸層接口:Transport Layer Interface)。server
3. 封裝 T C P傳給I P的數據單元稱做 T C P報文段或簡稱爲 T C P段(T C P s e g m e n t)。
I P傳給網絡接口層的數據單元稱做 I P數據報(IP datagram)。經過以太網傳輸的比特流稱做幀(Fr a m e )。
IP:網絡協議
一.基本概念
全部的 T C P、U D P、I C M P及I G M P數據都以I P數據報格式傳輸。IP的就像給網絡上每一個機器一個門牌號,網絡層,你能夠把它理解爲郵件運輸工,它的職能就是負責把一包東西,從這個門牌運輸到另一個門牌。
不可靠(u n r e l i a b l e)的意思是它不能保證 I P數據報能成功地到達目的地。若是發生某種錯誤時,如某個路由器暫時用完了緩衝區, I P有一個簡單的錯誤處理算法:丟棄該數據報,而後發送 I C M P消息報給信源端。任何要求的可靠性必須由上層來提供(如T C P)。
無鏈接 I P數據報能夠不按發送順序接收。若是一信源向相同的信宿發送兩個連續的數據報(先是 A,而後是B),每一個數據報都是獨立地進行路由選擇,可能選擇不一樣的路線,所以 B可能在A到達以前先到達。
但一樣存在面向鏈接的虛電路和無鏈接的數據包。
二.路由算法
對應網絡上也存在自適應算法(動態路由,根據網絡狀態刷新路由表)和非自適應算法(靜態路由,可靠)。
(Dijkstra最短通路算法,距離矢量DistanceVector算法,鏈路狀態算法)
網際協議 IP 是 TCP/IP 體系中兩個最主要的協議之一。與 IP 協議配套使用的還有三個協議:
地址解析協議 ARP(Address Resolution Protocol)
網際控制報文協議 ICMP (Internet Control Message Protocol)
網際組管理協議 IGMP (Internet Group Management Protocol)
TCP傳輸層
傳輸層相比於網絡層最大的不一樣就是引入了端口的概念。網絡層只管發送地址和目的地址。可是發送主機上有可能有多個程序和同一個接收主機進行傳輸數據,怎麼區分這多個程序呢?就引入了端口的概念。
傳輸層還有一個職能是定義發送方和接收方基本處理包的行爲。上面說到網絡層就至關於郵件運輸工,它只負責把一包東西從一個地方放到另一個地方,可是,這包東西是否送達了,送達以後接收方又有什麼行爲。這些均可以在傳輸層進行定義。注意,這裏說的是能夠,你也能夠在傳輸層布無論這些,只作簡單的基本封裝四元組。你懂的,我說的就是UDP。
包的序號,用來解決網絡包亂序(reordering)問題。
Acknowledgement Number就是ACK——用於確認收到,用來解決不丟包的問題。
Window又叫Advertised-Window,也就是著名的滑動窗口(Sliding Window),用於解決流控的。
TCP Flag ,也就是包的類型,主要是用於操控TCP的狀態機的。
2、流量控制與滑動窗口
3、TCP創建鏈接和關閉的三次握手
client和server應該理解爲發送方(客戶端)和接收方(服務器)
三. 擁塞阻塞 明明網絡已經堵塞了,還一個勁地發送大量包,甚至重發,那麼這個時候,你們都沒得玩了。因而,TCP引入了擁塞窗口(cwnd)的概念。
「每收到一個ACK,擁塞窗口就增長一個報文段」。
固然上圖的狀況太理想,實際的狀況,坑cwnd爲2的請求發出去兩個報文包的時候,先返回了一個ACK,而後cwnd這個時候就爲3,發送方就會繼續發送請求包。。。
擁塞避免算法
慢啓動使得cwnd是呈指數增加。必定不多是無限增加的,這裏就有個閥值,超過這個閥值,就進入擁塞避免算法。
先說擁塞避免算法,擁塞避免算法說的是擁塞窗口的增長再也不是「每收到一個ACK,擁塞窗口就增長一個報文段」。 而是「每收到一個ACK,cwnd = cwnd + 1/cwnd」。
快速回復算法
快速恢復算法是爲了避免要有一個重傳就那麼大響應。能儘快恢復到網絡流暢時候穩定的狀態。
其餘