tcp/ip分層(4層):網路介面層(連線層)、 網路層、傳輸層、 應用層
五層協議 (5層):物理層、資料鏈路層、網路層、傳輸層、 應用層
傳輸層:建立乙個埠到另乙個埠的通訊(tpc/ip協議)
應用層:規定應用程式的資料格式(http協議)
傳遞長度:get提交資料最多1024位元組,post則沒有限制
傳遞用途:get是從伺服器中獲取資料,post是向伺服器傳送資料
tcp四次揮手:在客戶端傳送close()的時候呼叫觸發,即斷開tcp連線,總共需要客戶端和服務端共傳送4個包來確保連線的斷開
確認序號:ack序號(acknowledge number確認號碼),佔32位,只有ack標誌位為1時,確認序號欄位才有效,ack=seq+1
標誌位:共6個,即urg、ack、psh、rst、syn、fin,具體含義如下:
urg:緊急指標有效(urgent緊急)
ack:確認序號有效(acknowledgement 確認)
psh:接收方應該盡快將這個報文交給應用層(push傳送)
rst:重置連線(reset重置)
syn:發起乙個新連線(synchronous建立聯機)
fin:釋放乙個連線(finish結束)
第二次握手:server收到資料報後由標誌位syn=1知道client請求建立連線,server將標誌位syn和ack都置為1,ack=j+1,隨機產生乙個值seq=k,並將該資料報傳送給client以確認連線請求,server進入syn_rcvd狀態
第三次握手:client收到確認後,檢查ack是否為j+1,ack是否為1,如果正確則將標誌位ack置為1,ack=k+1,並將該資料報傳送給server,server檢查ack是否為k+1,ack是否為1,如果正確則連線建立成功,client和server進入established狀態,完成三次握手,隨後client與server之間可以開始傳輸資料了
第二次揮手:server收到fin後,傳送乙個ack給client,確認序號為收到序號+1,server進入close_wait狀態
第三次揮手:server傳送乙個fin,用來關閉server到client的資料傳送,server進入last_ack狀態
第四次揮手:client收到fin後,client進入time_wait狀態,接著傳送乙個ack給server,確認序號為收到序號+1,server進入closed狀態,完成四次揮手
listen:表示伺服器端的某個socket處於監聽狀態,可以接受連線
syn_rcvd:表示接受到了syn報文
syn_sent:表示客戶端已傳送syn報文
established:表示連線已經建立
fin_wait_1:表示等待對方的fin報文
fin_wait_2:表示等待對方的fin報文,和fin_wait_1的區別是,fin_wait_2表示有一方要求close連線,但另外還告訴對方,我暫時還有點資料需要傳送給你,稍後再關閉連線
time_wait:表示收到了對方的fin報文,並傳送出了ack報文
closing:正常情況下,當你傳送fin報文後,按理來說是應該先收到(或同時收到)對方的ack報文,再收到對方的fin報文。但是closing狀態表示你傳送fin報文後,並沒有收到對方的ack報文,反而卻也收到了對方的fin報文。這種情況,只有在雙方幾乎在同時close乙個socket的時,那麼就出現了雙方同時傳送fin報文的情況,同時也會出現closing狀態,表示雙方都正在關閉socket連線
close_wait:表示在等待關閉
last_ack:表示被動關閉一方在傳送fin報文後,最後等待對方的ack報文
在四次揮手的時候,當服務端收到客戶端的fin報文時,僅僅表示客戶端不再傳送資料,但是還能接收資料,服務端也未必把全部資料都傳送給客戶端了,所以服務端可以立即close,也可以傳送一些資料給客戶端後,再傳送fin報文給客戶端來表示同意現在關閉連線,因此,服務端ack和fin一般都會分開傳送,所以有四次傳送包的機會
udp面向連線,需要三次握手進行連線
面向非連線
傳輸可靠,採用位元組流傳輸
傳輸不可靠,採用報文傳輸
能傳輸大量的資料
能傳輸少量資料
傳輸速度慢
傳輸速度快
連線方式有點對點連線
連線方式有一對一,一對多,多對多
提供超時重發,丟棄重複資料,流量控制等功能
沒有超時重發等機制
節約頻寬:http1.1支援只傳送header資訊(不帶任何body資訊),如果伺服器認為客戶端有許可權請求伺服器,則返回100,否則返回401。客戶端如果接受到100,才開始把請求body傳送到伺服器,客戶端如果接受到401,客戶端就可以不用傳送body資訊,節約了頻寬
host域:http1.0是沒有host域的,http1.1才支援這個引數
資料壓縮:http1.1不支援header資料的壓縮,http2.0使用hpack演算法對header的資料進行壓縮,這樣資料體積小了,在網路上傳輸就會更快
伺服器推送:當我們對支援http2.0的web server請求資料的時候,伺服器會順便把一些客戶端需要的資源一起推送到客戶端,免得客戶端再次建立連線傳送請求到伺服器端獲取,伺服器端推送的這些資源其實存在客戶端的某處地方,客戶端直接從本地載入這些資源就可以了,不用走網路,速度自然是快很多的
http協議用於internet上傳送和接收資訊
所有的請求和應答都是http包
http協議依靠可靠的tcp連線,預設埠是80
http協議第乙個版本是0.9,之後發展到1.0、1.1,到現在的2.0
無連線:只要一次連線就能互相傳送資料
請求頭:請求頭由關鍵字/值對組成,每行一對,關鍵字和值用英文冒號分隔。請求頭通知伺服器有關於客戶端請求的資訊,例如,user-agent:firefox/13.0.1
空行:最後乙個請求頭之後是乙個空行,傳送回車符和換行符,通知伺服器以下不再有請求頭
請求體:請求體不在get方法中使用,而是在post方法中使用,post方法適用於客戶端填寫表單的場合。請求體通常存放的是請求的資料內容
響應頭:響應頭由關鍵字/值對組成,每行一對,關鍵字和值用英文冒號分隔。響應頭通知客戶端有關於服務端請求的資訊,例如,connection:close
空行:最後乙個響應頭之後是乙個空行,傳送回車符和換行符,通知客戶端以下不再有響應頭
響應體:響應體不在get方法中使用,而是在post方法中使用,響應體通常存放的是響應的資料內容
url以http://開頭
url以https://開頭
不安全的
安全的預設埠是80
預設埠是443
工作於osi模型中的應用層
工作於osi模型中的傳輸層
傳輸的資料無需加密
傳輸的資料進行加密
傳輸速度快
傳輸速度慢
訪問無需證書
訪問需要認證證書
存放資源的主機名
資源自身的名稱(路徑+檔名)
存有資源的ip位址
資源的具體目錄位址
訪問方式:cookie儲存的是ascll字串,session能儲存任何型別的值
安全問題:cookie是不安全,客戶端可以修改,session是安全的,伺服器對客戶端是不可見的
有效期:cookie可以設定有效期大小,session依賴於sessionid,如果sessionid設定為-1,關閉瀏覽器session就會失效
對伺服器造成壓力:對於高併發的網路請求,session壓力比cookie大
目標Android高階工程師
現在你是初級工程師,但是你想當個高階工程師,所以,你就要給自己定個目標,即 我是要成為高階工程師的男人。有了這個定位,並且努力朝著這個目標去努力,然後內心深處就會有乙個感覺,這個感覺就會成為你的b格,也就是說,雖然我現在是小菜,但是我不是一般的小菜,從而內心有一種自豪感,而這種自豪感會給你提供正能量...
IT開發工程師經典面試
回答樣本 如果是工作需要我會義不容辭加班,我現在單身,沒有任何家庭負擔,可以全身心的投入工作。但同時,我也會提高工作效率,減少不必要的加班。回答樣本一 我對工資沒有硬性要求,我相信貴公司在處理我的問題上會友善合理。我注重的是找對工作機會,所以只要條件公平,我則不會計較太多。回答樣本二 我受過系統的軟...
演算法工程師面試準備
貝葉斯 nb 神經網路 svm 概率圖模型 特徵選擇 其他 梯度下降的優缺點 降取樣,pca,lda pca的基於特徵值壓縮的方法 基於isolation forest識別的方法 梯度下降的優缺點 常見損失函式 bagging 和 boosting的區別 為什麼用最小二乘而不是最小四乘 gb和牛頓法...