tcp/ip五層模型
應用層:
http,https協議,其中http沒有對資料進行加密操作,但是https對資料進行了加密操作
其中http埠號一般是80/8080等等,https埠號是443,ssh埠號一般是22,ftp是21
http協議報頭:
首行:請求方法,url,協議版本
請求報頭:
host:主機
connection:長連線還是短連線
content-length:標示body的長度
accept-encoding:客戶告訴伺服器編碼型別和語言型別
cookie:在客戶端儲存少量資訊,實現會話的功能
空行body
傳輸層:
udp協議:
udp報頭格式
16位源埠號 16位目的埠號
16位udp長度 16位udp檢驗和(保證基本的資料正確性資料可以丟失,但不能把錯的 資料傳給應用層)
資料
udp的特點:
無連線:知道對方的的ip和埠號就直接進行傳送資料,不管對方有沒有連線
面向資料報:不管應用層給自己交付的報文長度是多少都不會進行組裝和拆分,假如傳送方一次傳送了100個位元組,那麼接收方也必須對接受的資料一次性接受100位元組
不可靠傳輸:udp沒有實現確認機制和重傳機制,因此如果資料發生丟失則不會告訴給上層的應用層
udp的緩衝區
udp是呼叫sendto將資料直接交給核心,核心將資料交給網路層協議進行後續傳輸動作,udp有接受緩衝區,當資料在接收方的緩衝區已經滿的時候,此時如果再給對方進行資料傳送,資料就會丟失
udp是基於全雙工的,通訊雙方既可以讀,也可以寫
udp傳輸資料
udp在傳輸資料的時候最大長度是16位,也就是在傳輸的過程中最大長度就是64k,如果傳輸裹過程中資料大於64k,此時就需要應用層將資料進行分包,在到達對方的時候進行解包
tcp協議
http協議報頭:
16位源埠號 16位目的埠號
32位序列號
32位確認序列號
4位首部長度 保留6位 標識位 16位視窗大小
16位檢驗和 16位緊急指標
選項資料
其中16位的源埠號表示的是來自上層協議中的那個程序,目的埠號表示要交給接受端那個程序.32位序列號和確認序列號保證資料的請求和應答的正確性.同時也可以保證資料的按需到達,由於序列號和序列號也保證了資料的重傳機制,也不用再擔心丟包問題
tcp建立連線和釋放連線
連線的建立:
客戶端向伺服器端傳送乙個syn請求報文,此時客戶端進入syn_send狀態,伺服器接收到這個資料之後給客戶端傳送乙個ack確認應答報文,表示自己也已經收到客戶端的syn報文,同時也會傳送乙個syn請求報文,同時伺服器進入syn_recv狀態,此時當客戶端接收到這個報文之後給伺服器端傳送乙個ack,此時客戶端進入established,伺服器接收到這個報文之後也會進入established狀態
為什麼要進行三次握手,為什麼要等待2*msl
假如只有兩次握手,伺服器放給客戶端的確認訊號丟失,此時客戶端會認為伺服器端沒有接受到自己的報文,於是不停給伺服器傳送無效的報文,勢必造成伺服器的負擔
在進行四次握手的時候,當客戶端給伺服器傳送的最後乙個報文ack丟失,此時伺服器端沒有接受到客戶機的ack,此時他會給伺服器傳送乙個fin,伺服器接收到這個fin後對客戶端進行確認應答,傳送乙個ack,此時兩次下來剛好就是2*msl
tcp保證可靠性的傳輸手段
確認應答
客戶端每次給伺服器傳送syn,伺服器給客戶端傳送的ack,同時將自己的應答訊號也會帶著給傳送過去,從而保證了客戶端請求,伺服器端應答機制,而tcp報頭中剛好有序號和確認序號,從而保證了可靠性傳輸
超時重傳
當主機a給主機b傳送乙個資料的時候,此時由於網路的原因造成主機b傳送給主機b的確認應答報文丟失,主機b會受到大量的重複的報文,此時主機a會等待特定時間,最後直到最大時間內還沒有受到主機b傳送給自己的確認應答的時候,此時就會認為對方已經斷開連線,於是主機a會強制關閉連線
流量控制
在tcp報頭中包括了乙個視窗大小的字段用來表示自己可以接收的最大報文數量.當主機a向主機b傳送乙個報文的時候,每次都會看一下主機b的接受視窗,主機b接收到主機a傳送給自己的資料之後,此時會將自己的接受視窗寫入到tcp報頭中視窗欄位中,a接受到主機b傳送給自己的報文之後,首先先看一下對方視窗大小,如果這個視窗大小比較小了,此時主機a會加快自己傳送速度,如果發現接受方的接受視窗比較小的時候,此時就會減慢自己的傳送速度,當發現對方的接受視窗為0的時候,此時就會停止自己傳送報文.當過一段時間的時候,此時傳送方a會給接收方b傳送探測資料,以便知道對方的接受視窗的大小
擁塞控制
網絡卡羅上連線了許多的資料,如果一開始的時候各個主機直接給網路傳送很多的資料,此時勢必會造成網路擁塞.tcp規定了乙個擁塞視窗,表示當前網路能夠接受的做大資料,每次傳送方在傳送的時候都會將對方的視窗大小和擁塞視窗進行比較,將較小的資料作為自己的傳送視窗.
同時在傳送的時候規定擁塞視窗大小為1,每接收到乙個應答便將擁塞視窗加1,當擁塞視窗的大小大於乙個閥值的時候,此時將變為線性增長,同時每次超時重傳的時候閥值會降為原來的一半.同時將硬塞視窗變為1
tcp保證效能傳輸
滑動視窗
滑動視窗左邊表示的是已經確認過的,滑動視窗內表示的是已經發出去,但是沒有進行確認的,滑動視窗右邊的表示的是未傳送的資料
延遲應答
接受方接受到資料後先不對傳送方進行確認,經過一段時間後才對對方傳送的資料進行一起確認.
捎帶應答
每次接收方在對對方的傳送資料進行確認的時候,此時也將自己需要傳送給接受方的資料也全部傳送給接收方
tcp和udp的區別
網路層為什麼要有網路?
之所以要有網路層,是因為資料在傳送方傳輸層的時候只有自己的源埠和目標埠,但是不知道對方的ip以及資料應該如何到達對方的目的埠都是不知道的,有了網路層,此時加上路由器就會將資料從遠端通過路由**演算法對其進行**,一直到達對方所在的區域網
資料從上層的傳輸層傳下來的時候,此時山層協議有很多,為了區分資料來自上層的哪個協議此時就在ip層的報頭中新增了乙個8位協議,表示自己接受的資料來自上層協議的那個協議,同時在ip層也有對應的ipv4和ipv6,為了區別兩者,也就增加了乙個4位版本,同時由於資料進行了封裝,那麼如和區別自己是正文還是報頭資訊,此時就需要將自己的資料進行區分,於是便有了首部長度這個字段(4位),同時也有乙個8位服務型別,同時16位的總長度表示資料段加上首部整體的長度,由於資料來自上層,有可能資料太大了,於是就需要將資料進行分片,來自上層的同乙個資料在經過分片後它的標識是一樣的,但是為了防止在ip層對資料進行胡亂的分片,此時就有了3位的表示字段表示是否允許分片.同時既然進行了分片,此時接受方接受到資料後就要進行組裝,在進行組裝的時候肯定要知道那個資料在前,那個資料在後,於是就需要乙個片偏移表示資料的位置,同時在ip層資料要進行路由**,於是每乙個資料都得有自己的乙個生存時間,同時也得對首部資訊進行校驗.既然進行路由**,此時就需要知道源ip,目的ip,同時也有選項字段(最多40)位元組
4位版本 4位首部長度 8位服務型別 16位總長度
16位識別符號 3位標識 13位的片偏移
8位生存時間 8位協議 16位首部校驗和
32位源ip位址
32位的目的ip位址
選項資料
網段劃分
為什麼要有網段劃分:
之所以要有網段劃分是因為網路中有很多的主機,而在這麼多的主機中要去找乙個主機,那可能會耗費大量的人力物力,所以為了方便找到網路中的每乙個主機
ip包括網路號和主機號,其中網路號是為了保證兩個網段具有不同的標識,埠號是為了保證在同乙個網路之間的主機有不同的標識
其中同乙個子網中的主機之間網路號相同,主機號不同
icmp
和ip相同的是icmp也是工作在網路層的,但是icmp不能保證資料是否成功到達對方,而icmp可以確認資料是否成功到達對方,同時在進行返回的時候會通知ip報被對其的原因,雖然icmp只能針對ipv4進行使用
網路五層模型詳解
詳細的分層介紹位址 網路層傳輸層 應用層物理手段,主要規定了網路的一些電氣特徵,作用是負責傳輸0和1的電訊號 它在 實體層 的上方,確定了0和1的分組方式。乙太網規定,一組電訊號構成乙個資料報,叫做 幀 frame 每一幀分成兩個部分 標頭 head 和資料 data 乙太網規定,連入網路的所有裝置...
邂逅五層網路模型
廢話不多說,直接上大菜 伺服器上的程式或者軟體稱之為 應用層 瀏覽器和伺服器之間通訊就是通過設定相應的協議來保證正確通訊 就好比是應用層協議,比如http協議,dns協議 網域名稱解析 ftp協議 檔案傳輸 smtp協議 郵件傳輸 等等。加密方式就像是能識別http協議的程式才能解讀http協議裡傳...
五層網路模型整理
僅供參考 五層模型 自上而下,底層 頂層 實體層 物理層 實體層的作用就是把電腦連線起來,可用光纜 電纜 雙絞線 無線電波等方式 就是傳送0和1的訊號 鏈結層 也稱鏈路層,作用是解讀0和1 乙太網協議 早期,每家公司都有自己的電訊號分組方式,但是後來,一種叫做 乙太網 ethernet 的協議逐漸佔...