部分內容引用自osi七層模型與tcp/ip五層模型 - sevenformer - (cnblogs.com)
「三次握手,四次揮手」你真的懂嗎? - stefno - (cnblogs.com)
在特定協議下實現計算機之間交流的過程,成為網路程式設計。
埠:埠號是用兩個位元組表示的整數。ip 協議抽象了 ip 位址的概念,可以將資料傳送到指定的主機,但是一台主機上執行著多個程式,哪個報文應該交給哪個程式閱讀,是乙個問題。所以 tcp 和 udp 都在傳輸層這一層抽象出了 ports 埠的概念。
一般乙個計算機上執行著很多網路軟體,不同軟體都會占有不同的埠,它們進行資料交流,就會從它們對應的埠來傳輸或者獲取資料。
埠號一般是系統隨機分配,或者在軟體在執行的時候向系統獲取指定埠號。
注意:取值範圍 0 - 65535。埠號不能重複,且小於1024的埠號已經被系統占用,不能使用。
ip+埠號可以保證資料準確無誤地傳送到某計算機的指定軟體上。
常用埠號:80 網路埠(預設),關聯式資料庫(3306 1521),伺服器 (8080)
c/s結構: 客戶端+服務端
b/s結構:瀏覽器+伺服器
osi(open system interconnect),即開放式系統互聯。
osi定義了網路互連的七層框架(物理層、資料鏈路層、網路層、傳輸層、會話層、表示層、應用層),即iso開放互連系統參考模型。
tcp/ip 五層結構
描述協議
應用層(對應osi的應用層,表示層,會話層)
為計算機使用者提**用介面,也為使用者直接提供各種網路服務;
提供各種用於應用層資料的編碼和轉換功能,確保乙個系統的應用層傳送的資料能被另乙個系統的應用層識別,可提供標準表示形式和資料的加密壓縮;
會話層就是負責建立、管理和終止表示層實體之間的通訊會話。該層的通訊由不同裝置中的應用程式之間的服務請求和響應組成。
dns傳輸層
進行網路通訊端到端的傳輸,處理差錯控制和流量控制等問題,層向高層遮蔽了下層資料通訊的細節,使高層使用者看到的只是在兩個傳輸實體間的一條主機到主機的、可由使用者控制和設定的、可靠的資料通路。
包括埠號既是這裡的「端」。
tcp, udp
網路層【核心】分組傳輸資料,並且將分組資料傳送到目標計算機或者網路。
這一層就是我們經常說的ip協議層。ip協議是internet的基礎。
ip資料鏈層
將位元組合成位元組,再將位元組組合成幀,使用鏈路層位址 (乙太網使用mac位址)來訪問介質,並進行差錯檢測。
物理層實際最終訊號的傳輸是通過物理層實現的。通過物理介質傳輸位元流。規定了電平、速度和電纜針腳。常用裝置有(各種物理裝置)集線器、中繼器、數據機、網線、雙絞線、同軸電纜。這些都是物理層的傳輸介質。
udp:使用者資料協議。傳送資料的時候,主機之間不建立邏輯連線,即傳送端和接收端都不會確認雙方是否存在,是否收到。
缺點是不穩定,不可靠,資料被限制在64kb
tcp協議:傳輸控制協議。它是面向連線的通訊協議,即資料傳輸之前,傳送端和接收端之間會建立邏輯連線再傳輸資料。邏輯連線包括三次握手和四次揮手。
建立客戶端和服務端的連線需要三次握手:
客戶端傳送網路包(syn=1 seq=x),服務端收到了。這樣服務端就能得出結論:客戶端的傳送能力、服務端的接收能力是正常的。
服務端發包(syn=1 ack=x+1 seq=y),客戶端收到了。這樣客戶端就能得出結論:服務端的接收、傳送能力,客戶端的接收、傳送能力是正常的。
客戶端發包(ack=y+1 seq=z),服務端收到了。這樣服務端就能得出結論:客戶端的接收、傳送能力,服務端的傳送、接收能力是正常的。
經歷了上面的三次握手過程,客戶端和服務端都確認了自己的接收、傳送能力是正常的。之後就可以正常通訊了。兩次達不到讓雙方都得出自己、對方的接收、傳送能力都正常的結論。
結束客戶端和服務端的連線需要四次揮手:tcp連線是雙向傳輸的對等的模式,就是說雙方都可以同時向對方傳送或接收資料。
當有一方要關閉連線時,會傳送指令fin 告知對方,我要關閉連線了。
這時對方會回乙個ack,此時乙個方向的連線關閉。
但是另乙個方向仍然可以繼續傳輸資料,等到傳送完了所有的資料後,會傳送乙個fin段來關閉此方向上的連線。
接收方傳送ack確認關閉連線。
http:超文字傳輸協議。所有的www檔案都遵循該標準。目前常用版本是http1.1。
報文組成:
報文頭,報文體,正文
報文格式(k-v):
請求報文
方法 如get post
url協議版本
crlf
首部欄位名:值
crlf
請求實體的主體
響應報文
協議版本
狀態碼短語
crlf
首部欄位名:值
crlf
正文:如html...
請求報文體:方法,url,協議版本
請求報文頭:accept,cache-control, host...
響應報文頭:cache-control, etag(表示你請求資源的版本),set-cookie
響應報文體:協議版本,狀態碼,短語(如ok)
特點:
https:ssl超文字傳輸協議。
將資料以密文形式進行傳輸,特點:
內容加密:採用混合加密技術,結合對稱和非對稱加密。
驗證身份:通過證書認證客戶端訪問的是自己的伺服器
保護資料完整性:傳輸中間的資料不會被人冒充和篡改
http2:超文字連線協議2。
在傳統http裡面,html,css,js是排隊傳送的,但是在http2中,由於多路復用,這些檔案可以同時傳送。
網路模型與協議
1.概述 為了減少協議設計的複雜性,大多數網路模型都是按層的方式來組織的,在分層網咯模型中,每一層都為上一層提供一定的服務,而把如何實現本層服務的細節對上一層加以遮蔽,上層只需知道下層提供了什麼功能以及對應於這些功能的介面,而不必關心下一層如何實現這些功能,我的理解是 對於上一層來說,本層就像是乙個...
IOCP模型與網路程式設計
一。前言 在老師分配任務 嘗試利用iocp模型寫出服務端和客戶端的 給我時,腦子一片空白,並不知道什麼是iocp模型,會不會是像軟體設計模式裡面的工廠模式,裝飾模式之類的那些呢?嘿嘿,不過好像是乙個挺好玩的東西,挺好奇是什麼東西來的,又是乙個新知識啦 於是,開始去尋找一大堆的資料,為這個了解做準備,...
Linux網路程式設計網路基礎之網路 協議的概念
計算機聯網的目的 資訊資源 硬體資源 軟體資源以及通訊資源的共享,建立人與人之間更廣泛的溝通渠 協議 網路上的計算機之間又是如何交換資訊的呢?就像我們說話用某種語言一樣,在網路上的各台計算機之間也有一種語言,這就是 網路協議,3 不同的計算機之間必須使用相同的網路協議才能進行通訊。網路協議是網路上所...