早在大學中咱們就學過計算機網絡,首先要知道安全
應用層:顯示到界面上給用戶看服務器
表示層:解析數據(圖片就解析成圖片 音頻就解析成音頻)微信
會話層:創建鏈接(如打電話)網絡
傳輸層:定義傳輸協議TCP/UDP架構
網絡層:負責ip尋址(路由)大數據
數據鏈路層:mac地址解封裝網絡傳輸協議
物理層:制定硬件設備(網線光纖啦這些)spa
這套模型是國際標準組織爲了統一網絡通訊架構而提出的。可是再它出來以前,各大開發商不能幹等着吧,因而各大開發商本身瞎搗鼓搞出來一套現在廣泛再用的TCP/IP網絡參考模型,當OSI參考模型出來的時候,TCP/IP模型,早已一統江湖,人們早已習慣了TCP/IP模型。計算機網絡
TCP/IP(Transmission Control Protocol/Internet Protocol)傳輸控制協議/網間協議。是一個網絡通訊模型,以及一整個網絡傳輸協議家族,TCP/IP協議是協議族,並非只有TCP + IP排序
TCP/IP提供點對點的連接機制,將數據應該如何封裝、定址、傳輸、路由以及在目的地如何接收,都加以標準化。
一、主機到網絡層
TCP/IP 沒有真正描述這一層的實現,只要能給 網絡互聯層一個訪問接口,以便讓其上傳遞IP分組就行。
二、網際層(網絡互聯層)
把分組發往目標網絡或主機。同時,爲了儘快地發送分組,可能須要沿不一樣的路徑同時進行分組傳遞。所以,分組到達的順序和發送的順序可能不一樣,這就須要上層必須對分組進行排序。
網絡互聯層定義了分組格式和協議,即IP協議(Internet Protocol)。
三、傳輸層
定義了兩種不一樣的協議。
傳輸控制協議TCP 和 用戶數據報協議UDP
TCP協議是一個面向鏈接的、可靠的協議。它將一臺主機發出的字節流無差錯地發往互聯網上的其餘主機。在發送端,它負責把上層傳送下來的字節流分紅報文段並傳遞給下層。在接收端,它負責把收到的報文進行重組後遞交給上層。
UDP協議是一個不可靠的、無鏈接協議,主要適用於不須要對報文進行排序和流量控制的場合。
四、應用層
應用層面向不一樣的網絡應用引入了不一樣的應用層協議。
有基於TCP協議的,如文件傳輸協議FTP、 超文本連接協議HTTP。
也有基於UDP協議的。
各層次都有些神馬:
IP地址(惟一標示網絡設備的)
本地環回地址127.0.0.1 或者localhost
端口號 (定位程序)
用於標示進程的邏輯地址,不一樣進程的標示(如,我電腦上有qq 也有 微信 我用qq聊天時,服務器怎麼知道是qq發的消息而不是微信呢,就是端口號在起做用)
有效端口:0~65535 其中0~1024由系統使用或者保留端口,開發中不要用
傳輸協議(用什麼樣的方式進行交互)
通信的規則
常見協議:TCP、UDP
創建鏈接。造成傳輸數據的通道
在鏈接中進行大數據傳輸(數據大小不受限制)
經過三次握手完成鏈接,是可靠協議,安全送達
必須創建鏈接,效率會稍低
將數據及源和目的封裝成數據包中,不要創建鏈接
每一個數據報的大小限制在64k以內
由於無需鏈接,所以是不可靠協議
不須要創建鏈接,速度快
位碼:TCP標誌位,有6種:
SYN(synchronous創建聯機)
ACK(acknowledgement 確認)
PSH(push傳送)
FIN(finish結束)
RST(reset重置)
URG(urgent緊急)
Sequence number(順序號碼)
Acknowledge number(確認號碼)
第一次握手:主機A發送位碼爲SYN=1,隨機產生seq number=1234567的數據包到服務器,主機B由SYN=1知道,A要求創建聯機
第二次握手:主機B收到請求後要確認聯機信息,向A發送ack number=(主機A的seq+1),SYN=1,ACK=1,隨機產生seq number =7654321的包
第三次握手:主機A收到後檢查ack number是否正確(即第一次發送的seq number+1) 和 位碼ACK是否爲1。 若正確,主機A會再發送ack number=(主機B的seq+1),ACK=1,主機B收到後確認ack number值與ACK=1則鏈接創建成功。
完成三次握手,主機A與主機B開始傳送數據。
(1)客戶端A發送一個FIN,用來關閉客戶A到服務器B的數據傳送(報文段4)。
(2)服務器B收到這個FIN,它發回一個ACK,確認序號爲收到的序號加1(報文段5)。和SYN同樣,一個FIN將佔用一個序號。
(3)服務器B關閉與客戶端A的鏈接,發送一個FIN給客戶端A(報文段6)。
(4)客戶端A發回ACK報文確認,並將確認序號設置爲收到序號加1(報文段7)