既使用tcp又使用udp
1.首先了解一下tcp與udp傳送位元組的長度限制:
udp報文的最大長度為512位元組,而tcp則允許報文長度超過512位元組。當dns查詢超過512位元組時,協議的tc標誌出現刪除標誌,這時則使用tcp傳送。通常傳統的udp報文一般不會大於512位元組。
2.區域傳送時使用tcp,主要有一下兩點考慮:
1)輔網域名稱伺服器會定時(一般時3小時)向主網域名稱伺服器進行查詢以便了解資料是否有變動。如有變動,則會執行一次區域傳送,進行資料同步。區域傳送將使用tcp而不是udp,因為資料同步傳送的資料量比乙個請求和應答的資料量要多得多。
2)tcp是一種可靠的連線,保證了資料的準確性。
3.網域名稱解析時使用udp協議:
客戶端向dns伺服器查詢網域名稱,一般返回的內容都不超過512位元組,用udp傳輸即可。不用經過tcp三次握手,這樣dns伺服器負載更低,響應更快。雖然從理論上說,客戶端也可以指定向dns伺服器查詢的時候使用tcp,但事實上,很多dns伺服器進行配置的時候,僅支援udp查詢包。
cookies是一種能夠讓**伺服器把少量資料儲存到客戶端的硬碟或記憶體,或是從客戶端的硬碟讀取資料的一種技術
。cookies是當你瀏覽某**時,由web伺服器置於你硬碟上的乙個非常小的文字檔案,它可以記錄你的使用者id、密碼、瀏覽過的網頁、停留的時間等資訊。(本地的文字檔案)
session是伺服器用來跟蹤使用者的一種手段,每個session都有乙個唯一標識:session id
。當伺服器建立了session時,給客戶端傳送的響應報文包含了set-cookie欄位,其中有乙個名為sid的鍵值對,這個鍵值session id。客戶端收到後就把cookie儲存瀏覽器(儲存的web報文),並且之後傳送的請求報表都包含sessionid。http就是通過session和cookie這兩個傳送一起合作來實現跟蹤使用者狀態,session用於服務端,cookie用於客戶端
。
session機制:當使用者請求來自應用程式的 web 頁時,如果該使用者還沒有會話,則 web 伺服器將自動建立乙個 session 物件。當會話過期或被放棄後,伺服器將終止該會話。cookie機制:採用的是在客戶端保持狀態的方案,而session機制採用的是在服務端保持狀態的方案
。同時我們看到由於伺服器端保持狀態的方案在客戶端也需要儲存乙個標識,所以session機制可能需要借助cookie機制來達到儲存標識的目的
。
1.應用程式寫入資料的位元組大小大於套接字傳送緩衝區的大小。
2.進行mss大小的tcp分段。mss是最大報文段長度的縮寫。mss是tcp報文段中的資料字段的最大長度。資料字段加上tcp首部才等於整個的tcp報文段。所以mss並不是tcp報文段的最大長度,而是:mss=tcp報文段長度-tcp首部長度。
3.乙太網的payload大於mtu進行ip分片。mtu指:一種通訊協議的某一層上面所能通過的最大資料報大小
。如果ip層有乙個資料報要傳,而且資料的長度比鏈路層的mtu大,那麼ip層就會進行分片,把資料報分成託干片,讓每一片都不超過mtu。注意,ip分片可以發生在原始傳送端主機上,也可以發生在中間路由器上
。
訊息定長。例如100位元組。
在包尾部增加回車或者空格符等特殊字元進行分割,典型的如ftp協議。
將訊息分為訊息頭和訊息尾。
其它複雜的協議,如rtmp協議等。
第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_send狀態,等待伺服器確認;
第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態;
第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established狀態,完成三次握手。
完成三次握手,客戶端與伺服器開始傳送資料
客戶端先傳送fin,進入fin_wait1狀態
服務端收到fin,傳送ack,進入close_wait狀態,客戶端收到這個ack,進入fin_wait2狀態
服務端傳送fin,進入last_ack狀態
客戶端收到fin,傳送ack,進入time_wait狀態,服務端收到ack,進入close狀態
time_wait的狀態就是主動斷開的一方(這裡是客戶端),傳送完最後一次ack之後進入的狀態。並且持續時間還挺長的。客戶端time_wait持續2倍msl時長,在linux體系中大概是60s,轉換成close狀態
time_wait
time_wait 是主動關閉鏈結時形成的,等待2msl時間,約4分鐘。主要是防止最後乙個ack丟失。 由於time_wait 的時間會非常長,因此server端應儘量減少主動關閉連線
close_wait
close_wait是被動關閉連線是形成的。根據tcp狀態機,伺服器端收到客戶端傳送的fin,則按照tcp實現傳送ack,因此進入close_wait狀態。但如果伺服器端不執行close(),就不能由close_wait遷移到last_ack,則系統中會存在很多close_wait狀態的連線。此時,可能是系統忙於處理讀、寫操作,而未將已收到fin的連線,進行close。此時,recv/read已收到fin的連線socket,會返回0。
假設最終的ack丟失,server將重發fin,client必須維護tcp狀態資訊以便可以重發最終的ack,否則會傳送rst,結果server認為發生錯誤。tcp實現必須可靠地終止連線的兩個方向(全雙工關閉),client必須進入 time_wait 狀態,因為client可能面 臨重發最終ack的情形。
如果 time_wait 狀態保持時間不足夠長(比如小於2msl),第乙個連線就正常終止了。第二個擁有相同相關五元組的連線出現,而第乙個連線的重複報文到達,干擾了第二個連線。tcp實現必須防止某個連線的重複報文在連線終止後出現,所以讓time_wait狀態保持時間足夠長(2msl),連線相應方向上的tcp報文要麼完全響應完畢,要麼被 丟棄。建立第二個連線的時候,不會混淆。
如果伺服器出了異常,百分之**十都是下面兩種情況:
1.伺服器保持了大量time_wait狀態
2.伺服器保持了大量close_wait狀態,簡單來說close_wait數目過大是由於被動關閉連線處理不當導致的。
網域名稱解析 –> 發起tcp的3次握手 –> 建立tcp連線後發起http請求–> 伺服器響應http請求,瀏覽器得到html** –> 瀏覽器解析html**,並請求html**中的資源(如js、css、等) –> 瀏覽器對頁面進行渲染呈現給使用者
(get)請注意,查詢字串(名稱/值對)是在 get 請求的 url 中傳送的:/test/demo_form.asp?name1=value1&name2=value2
get 請求可被快取
get 請求保留在瀏覽器歷史記錄中
get 請求可被收藏為書籤
get 請求不應在處理敏感資料時使用
get 請求有長度限制
get 請求只應當用於取回資料post 方法(post)請注意,查詢字串(名稱/值對)是在 post 請求的 http 訊息主體中傳送的:post /test/demo_form.asp http/1.1host: w3schools.comname1=value1&name2=value2
post 請求不會被快取
post 請求不會保留在瀏覽器歷史記錄中
post 不能被收藏為書籤
post 請求對資料長度沒有要求
uri一般由三部組成:
訪問資源的命名機制
存放資源的主機名
資源自身的名稱,由路徑表示,著重強調於資源
url是uniform resource locator,統一資源定位器,它是一種具體的uri,即url可以用來標識乙個資源,而且還指明了如何locate這個資源。url是internet上用來描述資訊資源的字串,主要用在各種www客戶程式和伺服器程式上,特別是著名的mosaic。採用url可以用一種統一的格式來描述各種資訊資源,包括檔案、伺服器的位址和目錄等。
url一般由三部組成:
協議(或稱為服務方式)
存有該資源的主機ip位址(有時也包括埠號)
主機資源的具體位址。如目錄和檔名等
https協議需要到ca申請證書,一般免費證書很少,需要交費。
http是超文字傳輸協議,資訊是明文傳輸;https 則是具有安全性的ssl加密傳輸協 議。
http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。
http的連線很簡單,是無狀態的;https協議是由ssl+http協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。
http預設使用80埠,https預設使用443埠。
get:客戶端向服務端發起請求,獲得資源。請求獲得url處所在的資源。
post:向服務端提交新的請求字段。請求url的資源後新增新的資料。
head:請求獲取url資源的響應報告,即獲得url資源的頭部。
patch:請求區域性修改url所在資源的資料項。
put:請求修改url所在資源的資料元素。
delete:請求刪除url資源的資料
面試知識點 計算機網路
目錄tcp與udp的區別 三次握手建立連線 四次揮手釋放連線 瀏覽器工作原理 tcp的可靠交付是依靠停止等待協議和連續arq協議 ack seq欄位的意義 只有ack 1時,ack欄位才有意義 連線請求時,syn 1,ack 0 響應請求,syn 1,ack 1 最後一次握手的作用?防止失效的連線請...
計算機網路常考知識點總結
1 電路交換與分組交換的區別是什麼?優劣對比?答 先介紹基本概念 缺點 特點 分組交換 也稱包交換 缺點 2 電路交換 報文交換和分組交換 3 計算機網路的定義 4 相關概念 5 網路各分層的功能 6 體系結構 7 應用層 6 表示層 5 會話層 4 傳輸層 3 網路層 2 資料鏈路層 1 物理層 ...
計算機網路常用面試知識點
從下到上 物理層,資料鏈路層,網路層,傳輸層 應用層 握手次數 client server 第一次握手 什麼都不能確認 確認c可以發,s可以接 第二次握手 確認c接髮 s接髮 和第一次一樣 第三次握手 和第二次一樣 確認c接髮 s接髮 syn 同步序列編號 synchronize sequence ...