OSI的七層結構圖是制定的標準,可是在現實中並無被普遍採用;TCP/IP的5層是爲了方便學習而假設出來的;現實中普遍使用的是TCP/IP的四層網絡結構圖。html
以TCP/IP五層結構圖來說解:應用層主要是dns、http、ftp、smtp等應用層協議;運輸層主要是tcp、udp協議;網絡層主要是ip協議;數據鏈路層是MAC幀;物理層是010101的比特流。web
咱們經常使用的http、dns、ftp等應用層協議。網絡
1.它們都有本身的報文格式(請求報文和響應報文),報文有本身的語法、含義。app
2.應用層協議都有本身的端口,如http爲80,ftp爲21,ssh爲22,smtp爲25,dns爲53,https爲443。ssh
3.應用層協議的報文傳輸依賴下面的運輸層協議tcp或udp來進行傳輸。tcp
這時候咱們來理解各類協議就很容易了。如http協議:下面使用http://www.kongfz.com
的請求和響應報文來舉例。學習
GET http://www.kongfz.com/ HTTP/1.1 Host: www.kongfz.com Connection: keep-alive Cache-Control: max-age=0 Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36 DNT: 1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9,ja;q=0.8,zh-CN;q=0.7,zh;q=0.6 Cookie: acw_tc=7b39758315366525831781305e07127bc2496e172c5bae202bda3e35c76e72; kfz_uuid=0147d2f0-1626-4a30-9109-89bc69daa209; shoppingCartSessionId=3ce70b7ecc16ff4b0f5cbe4a35371d73; reciever_area=1006000000; PHPSESSID=m0m8apquke28uscf2usiam9ouc1uveko; kfz_trace=0147d2f0-1626-4a30-9109-89bc69daa209|0|20d476e6329fb229|-; kfz-tid=0502f82d47b9978735efd2b427a4babb; Hm_lvt_bca7840de7b518b3c5e6c6d73ca2662c=1538441986,1538464530,1538634990,1538703246; Hm_lpvt_bca7840de7b518b3c5e6c6d73ca2662c=1538703246; Hm_lvt_33be6c04e0febc7531a1315c9594b136=1538441986,1538464530,1538634990,1538703246; Hm_lpvt_33be6c04e0febc7531a1315c9594b136=1538703246 If-None-Match: W/"5bb6bf4e-46d7d" If-Modified-Since: Fri, 05 Oct 2018 01:33:02 GMT
請求報文的格式:ui
第一行爲狀態行,代表請求的方法,請求的網址,使用的http協議版本。spa
中間就是請求發送的各類頭部信息,都是k-v對。rest
最後就是請求的內容,這裏沒有,若是咱們提交表單或上傳什麼數據的話,就會有請求內容這一塊。
HTTP/1.1 304 Not Modified Date: Fri, 05 Oct 2018 01:34:12 GMT Connection: keep-alive Server: openresty Last-Modified: Fri, 05 Oct 2018 01:33:02 GMT ETag: "5bb6bf4e-46d7d" 響應的html文檔省略...
響應報文的格式:
第一行是狀態行,代表http的協議版本,狀態碼及說明。
中間也是響應的頭部信息。
最後就是響應的內容,這裏是返回一個html頁面,內容就不顯示了。
當咱們鏈接WLAN時(家裏的WIFI或者是學校的WLAN),咱們查看網絡屬性能夠看到都是自動獲取ip地址。經過ipconfig
能夠查看到本身被分配的ip。這就是動態主機配置協議。DHCP服務分配給客戶端的ip地址是臨時的,這很適合常常移動位置的計算機。
http使用tcp協議,dns使用udp協議,ftp使用tcp協議,smtp使用tcp協議,dhcp使用udp協議。
由於UDP沒有擁塞控制,因此網絡出現的擁塞也不會下降它的發送速率,使得其適用於實時性高的應用,如:網絡電話、視頻、遊戲等。
接收方對UDP報文進行校驗和的驗證,若是不正確則丟棄。
1.中止等待協議。保證不丟包。
2.以字節爲單位的滑動窗口
擁塞避免控制: 擁塞窗口是指字節滑動窗口,即TCP發送的報文(以字節爲單位)。
1.設置慢開始門限爲16;慢開始,指數增大,每一次是以前的2倍:1-2-4-8-16,到達門限值後,改成擁塞避免。
2.擁塞避免,使用加法增大,16-17-18---24,出現了超時狀況。這時候認爲網絡擁塞。調整慢開始門限值爲當前擁塞窗口的一半:12,並從新使用慢開始。
3.從新慢開始,1-2-4-8-12,到達門限值,改成擁塞避免。
4.擁塞避免,12-13-14-15-16,這時候連續收到3個ACK。說明個別報文在網絡中丟失了,網絡並無出現擁塞。執行快恢復,而不是慢開始。把門限值調整爲當前擁塞窗口的一半:8。並把擁塞窗口調整爲8。
5.而後使用擁塞避免,8-9-10…直到碰到超時或連續的ACK狀況。
一個概念是,網絡中的擁塞狀況是沒法肯定的,咱們只能在實際中去探測當前擁塞窗口的一個門限值是多少。若是咱們認爲如今出現網絡擁堵,就調整對應的門限值從新開始,這樣下一次到達門限值時應該不會出現擁堵了。若是網絡擁塞嚴重,就再調整門限值。使用一次次的門限降級,來避免加劇網絡擁塞的狀況從而消除網絡擁塞。固然,在降級後,還會一次次地加法增大,由於實際狀況老是在不斷變化的。一次次的門限升級可使得網絡的傳輸效率最大化。
1.尋址與路由
2.分段與重組1.IP數據報經過不一樣類型的通訊網絡發送,IP數據報的大小會受到這些網絡所規定的最大傳輸單元的限制。2.將IP數據報拆分紅一個個可以適合下層技術傳輸的小數據報,被分段後的IP數據報能夠獨立地在網絡中進行轉發,在到達目的主機後被重組,恢復成原來的IP數據報。