TCP/IP協議學習(一)

一。網絡模型服務器

  OSI七層模型:自上至下依次是 應用層,表示層,會話層,傳輸層,網絡層,數據鏈路層,物理層網絡

    應用層:具體的應用協議如HTTP、SMTP、FTP、TELNET、DNS等spa

    表示層:針對數據格式,使應用程序不用關心各個主機中的數據格式接口

    會話層:管理會話,針對通訊時機,肯定什麼時候創建或斷開鏈接路由

    傳輸層:針對數據的傳輸和具體的創建或斷開鏈接等,TCP、UDP協議開發

    網絡層:尋址和路由,實際上的數據傳輸任務由網絡層完成(發送數據包),單位爲包。路由器屬於這一層同步

    數據鏈路層:物理層上互連的節點之間通訊,如同一鏈路上的主機數據傳輸服務,單位爲幀。交換機在這一層路由器

    物理層:關注怎樣在傳輸媒體上傳輸數據比特流,單位爲比特。集線器在這一層請求

  TCP/IP模型:自上至下依次是 應用層,傳輸層,網絡層,鏈路層(網絡接口層)程序

  五層協議模型:自上而下依次是 應用層,傳輸層,網絡層,數據鏈路層,物理層

二。TCP的三次握手

  基於TCP的通訊中,在客戶端和服務端進行通訊以前,須要進行三次握手以創建鏈接。

  三次握手流程

  (1)客戶端向服務端發送鏈接請求報文段(SYN包):SYN=1,seq=x

  (2)服務端收到消息後向客戶端發送確認應答和創建鏈接報文(SYN+ACK):SYN=1,ACK=1,seq=y,ack=x+1

  (3)客戶端收到消息後再向服務端發送確認應答報文段(ACK包):ACK=1,seq=x+1,ack=y+1

  三次握手的做用

  (1)肯定客戶端和接收端雙方都已具備接收消息和發送消息的功能。

  (2)防止已過時的鏈接請求報文段(如因阻塞而未及時到達)忽然發送到服務器,從而形成錯誤。

  這也是爲何不是兩次握手的主要緣由。

 

  ACK:1個字節,ACK=1時表示有效

  ack:確認號,4個字節,表示但願收到的下一個報文段中第一個字節的編號

  SYN:同步包,SYN=1,ACK=1時表示贊成鏈接;SYN=1,ACK=0時表示鏈接請求

  seq:序列號,用來標記數據段順序,報文段中第一個字節的編號

三。TCP的四次揮手

  基於TCP的通訊中,在客戶端和服務端結束通訊以前,須要經過四次揮手來斷開鏈接。

  四次揮手流程

  (1)客戶端向服務端發送請求斷開鏈接(FIN包):FIN=1,seq=u

  (2)服務端收到請求後回覆確認應答(ACK包):ACK=1,seq=v,ack=u+1

  (3)服務端向客戶端發送請求以斷開鏈接(FIN包):FIN=1,seq=w

  (4)客戶端收到請求後回覆確認應答(ACK包):ACK=1,seq=u+1,ack=w+1

  四次揮手的做用

  由於一方收到另外一方的斷開鏈接消息(FIN報文)後,必須先回復一個確認消息(ACK報文),而後才能發送FIN報文

  在收到FIN報文時,服務端的數據可能還沒有徹底發送完畢,並不須要當即關閉鏈接。所以,FIN報文和ACK報文一般分開發送?

  FIN:用來釋放鏈接誒,FIN=1表示但願斷開鏈接

四。TCP與UDP的區別

  TCP:面向鏈接的、可靠的、數據流協議(面向字節流,將數據看做一串無結構的字節流),

     且TCP協議擁有順序控制、超時重傳、擁塞控制等機制;

     只支持一對一通訊

  UDP:無鏈接的、不可靠的(UDP只盡最大能力完成交付)、數據報協議(面向報文)

     支持一對一,一對多,多對多通訊

相關文章
相關標籤/搜索