網絡連接,TCP/IP協議,HTTP連接基礎

1.TCP/IP是一個協議簇,裏面有tcp udp ip協議等,
2.複用,所有應用層到ip網絡層的數據都通過運輸層
3.分用,ip層來的數據必須指明進程端口號,端口號是用來在互聯網環境下標識一個進程的,端口號是2-16次方個,只具有本地意義,標識本地進程在運輸層交互時的接口
3.計算機通信採用的是客戶-服務器方式的
端口分服務端端口(熟知端口如http80和登記端口)和客戶端端口(在客戶端運行進程時每次動態選擇,並不固定),通信結束後客戶端端口號就被回收了
UDP特點 無連接,儘可能交付,沒有擁塞控制,網絡擁塞時不影響源主機的發送速率,但是有時會導致網絡嚴重擁塞,首部開銷少8字節,tcp20字節
Udp對應用層發下來的報文不封裝也不拆分,直接加上udp首部就往下傳
Udp用戶數據報分首部和數據字段,
首部包括源端口號(如果不需要回復,可全0)2字節,目標端口號(必須)2字節,數據長度(至少8,僅首部)2字節,檢驗和(數據丟失則丟棄)2字節
校驗和通過一個不往上也不往下傳遞的僞首部通過其中的值相加爲1則證明沒有丟失,否則意味着丟失數據,則丟棄這段報文
udp報文若目標端口錯誤,則ICMP發送端口不可達的返回信息
ICMP協議允許目標主機或者路由器返回異常情況,封裝在ip報文中,報文分爲差錯報告報文和詢問報文,差錯報告包括超時,終點不可達參數錯誤等,詢問報文包括回送請求和回答,以及時間戳請求和回答,前者用於測試目標端口是否可達ping,後者返回當前日期時間
ping使用icmp報文而非tcp或udp,連續發送四次icmp報文,每次都得迴應結果
tcp連接的特點
面向連接 每次通信都要先建立連接,用完釋放連接
點對點通信,只能建立在兩個端口之間
可靠交付,
面向字節流(發送端和接受段的數據塊大小和數量不一定相同,但字節數相同,tcp不識別字節流的含義,但是兩端的應用層應該識別),udp報文長度是應用程序給的,udp只加上首部,而tcp將字節流緩存下來,根據擁塞程度和窗口大小調整報文長度
全雙工通信(Tcp中設有緩存,臨時存儲發送和待接收的數據,應用程序適時的發送和接收即可)
TCP的端點是套接字(點分十進制的ip+端口號)
IP層是最大可能交付
超時重傳(ARQ,自動重傳請求)
發送方超過規定的時間沒有收到接收方的接收回復,就會認爲剛纔傳的分組消失了,重新傳,原理是在每一個分組發送時設置超時計時器,直到收到回覆才歸0,另外發送的分組在收到回覆之前都有一個備份以便超時重傳
超時重傳時間比分組發送並收到回覆的往返時間長一些,因爲有時候有網絡擁塞延遲
確認的丟失和確認的遲到
如果接收方回覆的確認報文丟了,那發送方重傳的報文會被接收方接收並丟棄,再次的回覆也會被髮送方丟棄,。如果回覆的報文遲到了,那麼同樣的重傳報文和回覆報文被丟棄,即只要接收過一次的報文,再次接收都丟棄
Tcp利用這種確認和重傳機制在不可靠的網絡上實現了可靠交付
停止等待協議,即發送一個分組就停下來等待對方迴應,簡單但是信道利用率差,解決此問題用了滑動窗口,一次性發送位於滑動窗口內的所有分組,提高信道利用率
TCP報文段分爲首部和數據部分,首部最小20字節,後面是4n字節根據需要加

首部信息如圖,源端口和目標端口各2字節,序號(每個字節都會有序號)4字節,確認號(期望收到發送方的下一個報文段的第一個字節序號)4字節,保留6位,緊急urg,當緊急報文段需要發送就將urg置爲1,這樣該報文段會插到最前面,確認ACK,連接建立後所有報文段ACK爲1
,SYN建立連接時用來同步信號,SYN=1,ACK=0表明是一個請求報文,當同意建立連接,響應時首部的ACK=1,SYN=1.
Syn爲1表明是一個連接請求或者連接接受報文(迴應)
終止FIN爲1時表明發送方發送完畢,並請求釋放連接
窗口,是報文的接收窗口值,是發送方設置自己發送窗口的依據,比如回覆了一個報文段確認號爲701,窗口爲1000,即接收方的緩存空間只能接受701-1701序號的字節,窗口值動態變化
校驗和,有錯誤就丟棄報文,並重傳
首部中有選項,選項中的時間戳重要字段是時間戳字段,用來記錄往返時間RTT,時間戳
滑動窗口以字節爲單位,分前沿後沿,回覆的報文有確認號和窗口,以此構建滑動窗口
緩存空間
發送方緩存空間存的是應用程序傳給tcp緩存但未發送的數據,二是已發送但未收到確認的數據。接收方緩存空間存的是已經接收但未傳給應用程序的字節,二是未按序到達的數據
雖然發送方窗口根據接收方窗口設定,但是同一時間並不一樣大,因爲會有網絡延遲的影響,前一刻窗口值跟後一刻不一樣
對於不按序到達的數據先保存。等缺失字節齊備之後,再交付上層,另外,目前爲止,對於缺失字節的報文段還是會超時重傳
流量控制
即讓發送方不要發送太快,以便接收方來得及接收,採用的是滑動窗口,根據窗口值和網絡擁塞程度動態設定
如果接收方回覆的窗口rwnd爲0,則發送方會暫停發送,直到有新的窗口值回覆過來,每一個連接都會有一個持續計時器,0窗口時啓動,如果新的窗口一直沒發送或者丟失了,那麼當超過這個計時器時就發送一個零窗口探測報文,接收方回覆這個探測報文給出當前窗口值
TCP報文發送時機,方法有緩存到底最大報文段長度MSS時發送等
擁塞控制和流量控制,擁塞控制是防止過多數據注入網絡中,是爲整個網絡承載能力考慮,流量控制則端對端,控制發送方的速率
輸入負載或者叫網絡負載(單位時間內輸入網絡的分組)和吞吐量(輸出網絡的分組),理想的情況是吞吐量和網絡負載相等,見網絡擁塞控制圖
擁塞控制方法(慢開始和擁塞避免)
發送窗口等於擁塞窗口,根據擁塞窗口調整發送窗口,,根據是否超時重傳判斷是否擁塞
慢開始,即由小到大逐漸增大擁塞窗口的數值,,,,擁塞避免即每經過一個RTT,就把擁塞窗口增大一個MSS最大報文段長度
慢開始門限,即從慢開始轉爲擁塞避免算法的值,,在擁塞避免階段,擁塞窗口是按線性增大的,一旦發現3個重複確認(快重傳算法)或者超時重傳,則將慢開始門限值減小爲當前擁塞窗口的一半,並將擁塞窗口置爲1(1個MSS最大報文段長度),
發送窗口是接收窗口和擁塞窗口的最小值

TCP運輸連接分三部分,連接建立,數據傳輸,連接釋放
連接建立過程三次握手,交換三次報文段,連接建立前客戶端A處於主動打開,服務端B被動打開。a在請求時先發出連接請求,首部的syn爲1,再選擇一個序號x,syn不能攜帶數據,但是會佔一個字節,B同意建立則將syn爲1,ACK爲1,確認號ack=x+1,同時爲自己選擇一個序號y,然後A收到後再次給B發送回覆報文。其中三種狀態slose synsent/revd estiblished
最後一次A的確認主要是防止之前發出的已經失效的連接請求再次傳送到B,B即便給出確認報文,A也不會回覆,連接就無法建立
連接釋放四次握手
發送方A處於established狀態,將首部fin置爲1,向B發送請求之後狀態變爲FIN-wait1.fin消耗一個序號,b回覆以後b的狀態改爲close-wait,此時處於半關閉狀態,A不再發送數據,但仍要接收B發送的數據A的狀態變爲了time wait2,等待B發送釋放連接的報文,當B將首部FIN置爲1,並重復發來確認號時,就意味着要釋放了,之後b進入last_ack狀態,A收到通知,發送確認給B,b進入close狀態,但是A進入time wait狀態此時有一個時間等待器,經過2MSL(最長報文時間段),再關閉
2MSL存在的原因,一是保證A發送的最後一次確認B能收到,如果丟失了,B會超時重傳,A就可以再次確認,然後重啓2MSL時間定時器
二是爲了防止這次失效的連接請求出現在下次新的連接中,通過2MSL時間可以把所有報文段發送完

除了等待計時器還有報活計時器,確保客戶機建立了連接,但是卻發生了故障,每次建立連接就重置保活計時器,兩小時後服務器發送探測報文,每隔七十五秒發送一次,十次無應答認爲客戶機故障,則斷開連接
4.ARP協議,用於通過ip查詢目標機器的mac地址 http://www.elecfans.com/baike/tongxingjishu/chungshuwang/20171102574319.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章