OSI模型:
使用OSI模型的意義:
簡化教學
加快發展速度
確保技術的互操作性
簡化模塊化設計
標準化接口
降低復雜性
OSI 網絡模型分層
————————- |
7 應用層 | 網絡進程訪問層:為應用程序進程提供網絡服務?
————————–
6 表示層 | 數據表示:
————————–
5 會話層 | 端連接: 建立、管理和終止在應用程序的會話
————————-
4 傳輸層 | 傳輸問題:確保數據傳輸的可靠性(負責網段–> 可靠性)?
————————–
3 網絡層 | 數據傳輸:1路由數據包2.選擇傳遞數據最佳路徑3.支持邏輯尋址(數據包–> 路由)
————————–
2 數據鏈路層 | 訪問介質:定義了如何格式化數據以便鏡像傳輸以及如何控制對網絡訪問(幀–>mask) ?
————————–
1 物理層 | 二進制傳輸 :為啟動、維護及關閉物理鏈路定義了電氣等規范和功能規范(位–》二進制傳輸)
————————-
數據在網絡流動的方向如圖:
發生方:數據封裝
接收方:數據解封
關于PDU和PUD在OSI各層的不同稱呼:
PDU: Protocol Data Unit,協議數據單元是指對等層次之間傳遞的數據單位
物理層的PDU是數據位bit
數據鏈路層的PDU是數據幀frame
網絡層的PDU是數據包packet
傳輸層的PDU是數據段segment
其他更高層次的PDU是消息message
TCP/IP 協議棧
最早發源于美國國防部(縮寫為DoD)的因特網的前身ARPA網項目,1983年1月1日,TCP/IP取代了舊的網絡控制協議NCP,成為今天的互聯網和局域網的基石和標準,由互聯網工程任務組負責維護
1.TCP/IP 協議棧 共定義了四層
TCP/IP協議棧
—————————-
1. 應用層 |
—————————–
2. 傳輸層 |
—————————–
3. Internet層 |
—————————–
4. 網絡訪問層 |
———————- ——
2. Internet 協議特征
?運行于OSI 網絡層
?面向無連接的協議
?獨立處理數據包
?分層編址
?盡力而為傳輸
?無數據恢復功能
3. 傳輸層 tcp和UTP的特性:
TCP的特性:
TCP特性
a.工作在傳輸層面向連接協議
b.全雙工協議
c.半關閉
d.錯誤檢查
e.將數據打包成段,排序
f.確認機制
g.數據恢復,重傳
h.流量控制,滑動窗口
i.擁塞控制,慢啟動和擁塞避免算法
關于TCP包頭圖:
源端口、目標端口:計算機上的進程要和其他進程通信是要通過計算機端口的,而一個計算機端口某個時刻只能被一個進程占用,所以通過指定源端口和目標端口,就可以知道是哪兩個進程需要通信。源端口、目標端口是用16位表示的,可推算計算機的端口個數為2^16個
?序列號:表示本報文段所發送數據的第一個字節的編號。在TCP連接中所傳送的字節流的每一個字節都會按順序編號。由于序列號由32位表示,所以每2^32個字節,就會出現序列號回繞,再次從0 開始
?確認號:表示接收方期望收到發送方下一個報文段的第一個字節數據的編號。也就是告訴發送發:我希望你(指發送方)下次發送的數據的第一個字節數據的編號是這個確認號
?數據偏移:表示TCP報文段的首部長度,共4位,由于TCP首部包含一個長度可變的選項部分,需要指定這個TCP報文段到底有多長。它指出TCP 報文段的數據起始處距離TCP 報文段的起始處有多遠。該字段的單位是32位(即4個字節為計算單位),4位二進制最大表示15,所以數據偏移也就是TCP首部最大60字節
?URG:表示本報文段中發送的數據是否包含緊急數據。后面的緊急指針字段(urgent pointer)只有當URG=1時才有效
?ACK:表示是否前面的確認號字段是否有效。ACK=1,表示有效。只有當ACK=1時,前面的確認號字段才有效。TCP規定,連接建立后,ACK必須為1,帶ACK標志的TCP報文段稱為確認報文段
?PSH:提示接收端應用程序應該立即從TCP接收緩沖區中讀走數據,為接收后續數據騰出空間。如果為1,則表示對方應當立即把數據提交給上層應用,而不是緩存起來,如果應用程序不將接收到的數據讀走,就會一直停留在TCP接收緩沖區中
?RST:如果收到一個RST=1的報文,說明與主機的連接出現了嚴重錯誤(如主機崩潰),必須釋放連接,然后再重新建立連接?;蛘哒f明上次發送給主機的數據有問題,主機拒絕響應,帶RST標志的TCP報文段稱為復位報文段
?SYN:在建立連接時使用,用來同步序號。當SYN=1,ACK=0時,表示這是一個請求建立連接的報文段;當SYN=1,ACK=1時,表示對方同意建立連接。SYN=1,說明這是一個請求建立連接或同意建立連接的報文。只有在前兩次握手中SYN才置為1,帶SYN標志的TCP報文段稱為同步報文段
?FIN:表示通知對方本端要關閉連接了,標記數據是否發送完畢。如果FIN=1,即告訴對方:“我的數據已經發送完畢,你可以釋放連接了”,帶FIN標志的TCP報文段稱為結束報文段
?窗口大小:表示現在充許對方發送的數據量,也就是告訴對方,從本報文段的確認號開始允許對方發送的數據量
?校驗和:提供額外的可靠性
?緊急指針:標記緊急數據在數據字段中的位置
?選項部分:其最大長度可根據TCP首部長度進行推算。TCP首部長度用4位表示,選項部分最長為:(2^4-1)*4-20=40字節
常見選項:
關于端口:
a.0-1023:系統端口或特權端口(僅管理員可用) ,眾所周知,永久
分配給固定的系統應用使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)
b.1024-49151:用戶端口或注冊端口,但要求并不嚴格,分配給程序注冊為某應用使用,1433/tcp(SqlServer),1521/tcp(oracle),
3306/tcp(mysql),11211/tcp/udp(memcached)
49152-65535:動態端口或私有端口,客戶端程序隨機使用的端口
其范圍的定義:/proc/sys/net/ipv4/ip_local_port_range
TCP/IP協議棧和ISO參考模型的分層的對應關系如圖:
原創文章,作者:m25Chronos,如若轉載,請注明出處:http://www.www58058.com/85138