TCP/IP 四層模型
說到網絡通信 就要談一談耳熟能詳的TCP/IP 四層模型了
- 鏈路層(數據鏈路層/網絡接口層):包括操作系統中的設備驅動程序、計算機中對應的網絡接口卡
- 網絡層(互聯網層):處理分組在網絡中的活動,比如分組的選路。
- 傳輸層:主要爲兩臺主機上的應用提供端到端的通信。
- 應用層:負責處理特定的應用程序細節。
HTTP協議-瀏覽器訪問服務器的過程
http協議又稱超文本傳輸協議(HyperText Transfer Protocol)是一種應用層協議。
HTTP是萬維網的數據通信的基礎。設計HTTP最初的目的是爲了提供一種發佈和接收HTML頁面<網頁>的方法。
1989年蒂姆·伯納斯-李在CERN研發
1999年公佈現今廣泛使用的HTTP 1.1版(RFC2616)
TCP協議
TCP協議,傳輸控制協議(英語:Transmission Control Protocol,縮寫爲 TCP)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議,由IETF的RFC 793定義。
TCP通信需要經過創建連接、數據傳送、終止連接三個步驟。
TCP通信模型中,在通信開始之前,一定要先建立相關的連接,才能發送數據,類似於生活中,“打電話”。
這種連接是一對一的,因此TCP不適用於廣播的應用程序,基於廣播的應用程序請使用UDP協議。
TCP協議負責在兩臺計算機之間建立可靠連接,保證數據包按順序到達。TCP協議會通過握手建立連接,然後,對每個IP包編號,確保對方按順序收到,如果包丟掉了,就自動重發。許多常用的更高級的協議都是建立在TCP協議基礎上的,比如用於瀏覽器的HTTP協議、發送郵件的SMTP協議等。
一個TCP報文除了包含要傳輸的數據外,還包含源IP地址和目標IP地址,源端口號和目標端口號。
TCP通訊模型
TCP的三次握手四次揮手
TCP的三次握手(建立連接)和四次揮手(關閉連接)
TCP(Transmission Control Protocol) 傳輸控制協議
三次握手
TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,採用三次握手確認建立一個連接:
位碼即tcp標誌位,
有6種標示:
SYN(synchronous建立聯機)
ACK(acknowledgement 確認)
PSH(push傳送)
FIN(finish結束)
RST(reset重置)
URG(urgent緊急)
UDP協議
用戶數據報協議(User Datagram Protocol,UDP)是一種傳輸層協議。在 TCP/IP 網絡中,它與 TCP 協議一樣用於處理數據包,是一種無連接的協議。
TCP 協議在進行數據傳輸時,需要建立連接,並且每次傳輸的數據都需要進行確認。當不再進行傳輸數據時,還需要斷開連接。這樣做雖然安全,但是效率較低。而 UDP 協議正好避免了這些過程,它是一種沒有複雜控制,提供面向無連接的通信服務協議。
udp 發送數據
創建一個基於udp的網絡程序流程很簡單,具體步驟如下:
- 創建客戶端套接字
- 發送/接收數據
- 關閉套接字
TCP和UDP的區別
TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接
TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付
UDP具有較好的實時性,工作效率比TCP高,適用於對高速傳輸和實時性有較高的通信或廣播通信。
每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
TCP對系統資源要求較多,UDP對系統資源要求較少。