1.http狀態(tài)碼
400 Bad Request 請求出現(xiàn)語法錯誤悟民。
401 Unauthorized 客戶試圖未經(jīng)授權(quán)訪問受密碼保護的頁面剪芍。應(yīng)答中會包含一個WWW-Authenticate頭雕蔽,瀏覽器據(jù)此顯示用戶名字/密碼對話框歧斟,然后在填寫合適的Authorization頭后再次發(fā)出請求闯团。
403 Forbidden 資源不可用函匕。服務(wù)器理解客戶的請求千诬,但拒絕處理它耍目。通常由于服務(wù)器上文件或目錄的權(quán)限設(shè)置導(dǎo)致。
404 Not Found 無法找到指定位置的資源徐绑。這也是一個常用的應(yīng)答邪驮。
405 Method Not Allowed 請求方法(GET、POST傲茄、HEAD毅访、DELETE、PUT盘榨、TRACE等)對指定的資源不適用喻粹。(HTTP 1.1新)
406 Not Acceptable 指定的資源已經(jīng)找到,但它的MIME類型和客戶在Accpet頭中所指定的不兼容(HTTP 1.1新)草巡。
407 Proxy Authentication Required 類似于401守呜,表示客戶必須先經(jīng)過代理服務(wù)器的授權(quán)。(HTTP 1.1新)
502 Bad Gateway 服務(wù)器作為網(wǎng)關(guān)或者代理時山憨,為了完成請求訪問下一個服務(wù)器查乒,但該服務(wù)器返回了非法的應(yīng)答。
503 Service Unavailable 服務(wù)器由于維護或者負(fù)載過重未能應(yīng)答萍歉。例如侣颂,Servlet可能在數(shù)據(jù)庫連接池已滿的情況下返回503。服務(wù)器返回503時可以提供一個Retry-After頭枪孩。
504 Gateway Timeout 由作為代理或網(wǎng)關(guān)的服務(wù)器使用憔晒,表示不能及時地從遠(yuǎn)程服務(wù)器獲得應(yīng)答。(HTTP 1.1新)
2.http請求的幾種方法
- get
- post
創(chuàng)建資源蔑舞,因此不是冪等的 - put
更新資源拒担,資源本身不變,因此是冪等的 - head
獲取首部 - delete
- options
- patch
3.http版本
- http1.0
- 短連接
2 http1.1 - Connection為keep-Alive和Close對應(yīng)長連接和短連接
- 發(fā)送方不用等上一次的響應(yīng)就可以發(fā)送下一次請求
- 支持?jǐn)帱c續(xù)傳
- 增加了一些header(與緩存控制攻询、)
- Delete Options的添加
3 http2.0 - 二進制分幀
不同數(shù)據(jù)流的幀可以交錯發(fā)送从撼。
同個域名只需要占用一個 TCP 連接,消除了因多個 TCP 連接而帶來的延時和內(nèi)存消耗钧栖。
單個連接上可以并行交錯的請求和響應(yīng)低零,之間互不干擾婆翔。 - 服務(wù)端推送
請求index.html時,會自動請求里面包含的js img等資源 - 首部壓縮
和之前的header相同則不需要重復(fù)發(fā)送
4.tcp滑動窗口
- 接收方根據(jù)自己接收緩存的大小掏婶,告訴發(fā)送方窗口的大小設(shè)置為多少它才來得及接受啃奴。
-
發(fā)送方窗口為min(擁塞窗口,接收方告訴的窗口)
5.tcp三次握手
客戶端發(fā)送的一個請求由于在中間節(jié)點延時雄妥,以致于等到連接釋放后再重新到達服務(wù)端最蕾。那么如果采用兩次握手,只需要server端發(fā)送確認(rèn)就認(rèn)為建立了連接老厌。這樣建立連接后客戶端不理睬服務(wù)端的確認(rèn)瘟则,導(dǎo)致server一直重發(fā),進而浪費服務(wù)端資源枝秤,而采用三次握手就可以解決醋拧。
6.tcp四次揮手
7.tcp最后一次要多等一段時間
最后一次報文可能丟失,如果server端沒有收到最后一次報文宿百,會不斷重發(fā)第三次的報文趁仙,因此客戶端不能立刻關(guān)閉。從最后一次報文發(fā)送到server重新發(fā)第三次的報文總共是2MSL(兩個報文最長存活時間垦页,因此要等2MSL)
8.tcp的擁塞控制
對網(wǎng)絡(luò)帶寬需求的總和 > 可用資源
方式一:
方式二:收到三個冗余ack執(zhí)行快重傳和快恢復(fù)
9.tcp和udp
- tcp面向連接雀费,保證可靠傳輸,udp無連接痊焊,不可靠
- tcp慢盏袄,udp快
10.OSI七層
1.應(yīng)用層
- DNS(53) HTTP(80) SMTP(25)
- 定義應(yīng)用進程之間通信的規(guī)則
2.運輸層
- 提供端到端的服務(wù)(進程到進程)
3.網(wǎng)絡(luò)層
- 分組傳輸 路由
4.數(shù)據(jù)鏈路層
- 比特流封裝 點到點 物理尋址
5.物理層
- 物理設(shè)備的標(biāo)準(zhǔn) 電氣特性(高電平代表什么含義)
11.輸入url的過程
12.DNS過程
總共13個根域名服務(wù)器
緩存:
瀏覽器緩存 系統(tǒng)緩存 路由器緩存 ISP服務(wù)器緩存 根域名服務(wù)器緩存 頂級域名服務(wù)器緩存 二級域名服務(wù)器緩存
13.點到點和端到端
- 端到端強調(diào)發(fā)送方和接收方建立一條邏輯鏈路,不知道中間點的存在薄啥。點到點槍強調(diào)把數(shù)據(jù)傳給直接相連的設(shè)備辕羽,再傳到另一臺。
- 端到端需要發(fā)送方始終參與垄惧,點對點不需要
- 端對端建立連接后刁愿,發(fā)送端知道接收端一定能收到,而點對點的發(fā)送端不知道接收端能不能收到到逊。
14.tcp如何保證可靠傳輸
- 確認(rèn)
- 超時重傳
- 校驗和
- 流量控制
- 擁塞控制
- 序列號
15.tcp序列號的作用
接收端通過序列號確認(rèn)前面的字節(jié)都收到了铣口。使用隨機的序列號的作用參考這里
16.https過程
client向server發(fā)送請求https://baidu.com,然后連接到server的443端口觉壶,發(fā)送的信息主要是隨機值和客戶端支持的加密算法脑题。
server接收到信息之后給予client響應(yīng)握手信息,包括隨機值2和匹配好的協(xié)商加密算法铜靶,這個加密算法一定是client發(fā)送給server加密算法的子集叔遂。
隨即server給client發(fā)送第二個響應(yīng)報文是數(shù)字證書。證書包含了服務(wù)端的公鑰和CA的簽名(對證書的其他內(nèi)容先摘要,再用CA私鑰加密)和域名已艰,公司等信息痊末。
客戶端解析證書,一方面通過瀏覽器內(nèi)置的CA公鑰將簽名解密哩掺,另一方面舌胶,對證書的內(nèi)容使用同樣的摘要算法求哈希值,對比如果相等疮丛,則 生成一個隨即值(預(yù)主秘鑰)。
客戶端使用服務(wù)端公鑰加密隨機值傳給服務(wù)端
客戶端和服務(wù)端根據(jù)三個共享的隨機數(shù)生成會話密鑰
客戶端通過會話秘鑰加密客戶端發(fā)一個「Change Cipher Spec」辆它,告訴服務(wù)端開始使用加密方式發(fā)送消息誊薄。再發(fā)一個「Encrypted Handshake Message(Finishd)」消息,把之前所有發(fā)送的數(shù)據(jù)做個摘要锰茉,再用會話密鑰(master secret)加密一下呢蔫,讓服務(wù)器做個驗證,驗證加密通信是否可用和之前握手信息是否有被中途篡改過飒筑。
同樣服務(wù)端和第7步一樣
17.tcp粘包問題
為了傳輸更快片吊,將多個數(shù)據(jù)包封裝成一個大的數(shù)據(jù)包,導(dǎo)致接收方難以分辨出完整的數(shù)據(jù)包协屡。
圖示:
解決:
- 發(fā)送方和接收方都以固定長度發(fā)送和接收
- 發(fā)送數(shù)據(jù)包的尾部添加標(biāo)記序列
- 定義一個包頭俏脊,包頭里面說明下次要接收多少字節(jié)的數(shù)據(jù)