OS七層模型運輸層


傳輸層:傳輸層是高低層之間銜接的接口層。數據傳輸的單位是報文,當報文較長時將它分割成若干分組,然後交給網絡層進行傳輸。傳輸層是計算機網絡協議分層中的最關鍵一層,該層以上各層將不再管理信息傳輸問題。

1) Ip協議可以將源主機發送的分組按首部中目的地址交給目的主機,爲何還要設置運輸層?

 ----Ip協議可以將源主機發送的分組按首部中目的地址交給目的主機,但是分組仍停留在主機的網絡層而未交付給主機的應用進程,真正通信的實體是主機的應用進程,運輸層提供進程間的邏輯通信。

   2)  端口:在單個計算機中進程用pid標誌,但在因特網環境下標誌運行在應用層的進程不可行,因爲因特網上os很多,不同os有不同的pid,應用進程要通信就得有統一的標誌,但是特定機器上運行的特定進程知名爲因特網上通信的終點還是不行,因爲進程的創建和撤銷是動態的。通信一方無法識別對方機器上的進程。另外,一般要用目的主機提供的功能識別終點而無需知道具體實現此功能的進程是哪個,解決這個問題的辦法就是在運輸層上使用協議端口號。通信終點是應用進程,但是我們只需將報文交到目的主機的合適目的端口,剩下的工作由TCP完成。此端口是軟件端口,不同於硬件端口(不同硬件交互的接口),是應用層各協議進程與運輸實體進行層間交互的一種地址。

客戶發起通信請求時必須知道對方服務器的IP地址和端口號。

16b(65536)的端口號表示端口,只具有本地意思,是各進程在運輸層交互的層間接口。

服務器端使用的端口號:

熟知/系統端口號(0~1023),FTP(21),TELNET(23),SMTP(25),DNS(53),TFTP(69),HTTP(80),SNMP(161),SNMP(trap)(162);登記端口號(1024~49151)

客戶端使用的端口號(49152~65535

wKioL1Qz0SeywOmcAADknWa4WZM018.jpg

   3)  運輸層兩個重要協議:UDP(用戶數據報協議)TCP(傳輸控制協議)

 ----UDP:傳送數據前不需要連接,遠地主機的運輸層收到UDP報文後無需確認,盡最大努力交付,面向報文的(報文不合並不拆分,報文長度要始終,否則,IP層要分片,降低效率),無擁賽控制如果目標端收到的UDP數據報中的目標端口號不能與當前已使用的某端口號匹配,則將該數據報拋棄,併發送目標端口不可達的ICMP差錯報文。有兩個字段:數據字段和首部字段。首部字段很簡單,只有8個字節,由4個字段組成,每個字段都是兩個字節。各字段意義如下所述: 源端口字段:源端口號,可選項。目的端口字段:目的端口號。長度字段:UDP用戶數據報的長度。檢驗和字段:可選項。

wKiom1Qzyl-AkrnOAAHgxTBsCEE773.jpg

這個僞頭部並不是UDP的真正組成部分,它只是爲了UDP在進行差錯檢查時可以把更多的信息包含進去而人爲加上的。僞頭部的格式如圖所示。僞頭部包含IP頭部的一些字段,填充域全填0,目的是使僞頭部爲16位二進制數的整數倍,這是計算校驗和時所需要的。UDP長度爲UDP數據報的總長(當然不能包括虛構的僞頭部)。源端在發送UDP數據報時,使用構造的UDP僞頭部和UDP數據報計算出校驗和(校驗和計算方法與IP頭部校驗和的計算方法相同),然後填入UDP頭部。

wKioL1Qzy86AV8XRAAOOWBHEToI027.jpg

 ----TCP:傳送數據前需要連接,傳送完畢後釋放鏈接,點對點通信,全雙工通信,面向字節流。可靠傳輸,所以增加了許多開銷:確認,流量控制,計時器及連接管理等。不提供廣播或多播服務。

 

wKioL1QzzoCiqdalAAN1S9mXV9I736.jpg

wKiom1QzzkrzQXsYAASMnDNAUvg499.jpg

wKioL1QzzoGiZ6g6AAVGWEfcEO0839.jpg

TCP連接:每一條TCP連接有兩個端點,叫套接字socket =IP:端口號)。

 

可靠傳輸的工作原理:

1:無差錯傳輸

2:出現差錯(B收到A發送的M1時檢測出錯或傳輸中丟失B不知道則B不發送任何消息,A過了一段時間後未收到確認,便認爲報文丟失,則重傳。叫超時重傳,每個分組設置一個超時定時器。每發送一個分組必須先保留已發送的分組的副本,收到確認後纔可清除;分組和確認分組必須有自己的編號;設置的超時時間該比數據在分組的傳輸平均往返時間長)

3:確認丟失和確認遲到(B收到M1,發送的對M1的確認丟失了,A在設置的超時時間內沒收到確認,但不知道原因,A進行重傳,B有收到後丟棄重複的分組M1,不向上層交付,並向A發送確認;另一種情況:BM1的確認遲到,A收到重複確認,收到後丟棄,B也收到重複的M1,同樣丟棄重複的M1,並重傳確認分組)

TCP三次握手過程

只簡單的描述下這三次對話的簡單過程:主機A向主機B發出連接請求數據包:“我想給你發數據,可以嗎?”,這是第一次對話;主機B向主機A發送同意連接和要求同步(同步就是兩臺主機一個在發送,一個在接收,協調工作)的數據包:“可以,你什麼時候發?”,這是第二次對話;主機A再發出一個數據包確認主機B的要求同步:“我現在就發,你接着吧!”,這是第三次對話。三次“對話”的目的是使數據包的發送和接收同步,經過三次“對話”之後,主機A才向主機B正式發送數據

詳細點說就是:(文章部分轉載http://zhangjiangxing-gmail-com.iteye.com,主要是這個人講解得很到位,的確很容易使人理解!)

wKiom1Qzzq3yoZRlAADzrZbWxyE820.jpg

1 主機A通過向主機發送一個含有同步序列號的標誌位的數據段給主機B ,向主機請求建立連接,通過這個數據段,主機A告訴主機兩件事:我想要和你通信;你可以用哪個序列號作爲起始數據段來回應我

主機收到主機A的請求後,用一個帶有確認應答(ACK)和同步序列號(SYN)標誌位的數據段響應主機A,也告訴主機A兩件事:我已經收到你的請求了,你可傳輸數據了;你要用哪佧序列號作爲起始數據段來回應我

主機A收到這個數據段後,再發送一個確認應答,確認已收到主機的數據段:"我已收到回覆,我現在要開始傳輸實際數據了

這樣3次握手就完成了,主機A和主機就可以傳輸數據了


3次握手的特點:

沒有應用層的數據

SYN這個標誌位只有在TCP建產連接時纔會被置1

握手完成後SYN標誌位被置0


wKiom1Qzz0fwkYsMAAGdZN9JKls482.jpg

TCP建立連接要進行3次握手,而斷開連接要進行4

1 當主機A完成數據傳輸後,將控制位FIN1,提出停止TCP連接的請求

2 主機B收到FIN後作出響應,確認這一方向上的TCP連接將關閉,ACK1
      3  端再提出反方向的關閉請求,FIN1

      4  主機A對主機B的請求進行確認,ACK1,雙方向的關閉結束.

TCP的三次握手和四次斷開可以看出,TCP使用面向連接的通信方式,大大提高了數據通信的可靠性,使發送數據端和接收端在數據正式傳輸前就有了交互,爲數據正式傳輸打下了可靠的基礎

ACK  TCP報頭的控制位之一,對數據進行確認.確認由目的端發出,用它來告訴發送端這個序列號之前的數據段都收到了.比如,確認號爲X,則表示前X-1個數據段都收到了,只有當ACK=1,確認號纔有效,ACK=0,確認號無效,這時會要求重傳數據,保證數據的完整性

SYN  同步序列號,TCP建立連接時將這個位置1

FIN  發送端完成發送任務位,TCP完成數據傳輸需要斷開時,提出斷開連接的一方將這位置1


wKioL1Qz0maSiItbAAD8izoSta8467.jpg

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