(1)管道:半雙工(即資料只能在乙個方向上流動),具有固定的讀端和寫端。
(2)訊息佇列:是系統或應用之間的一種通訊方式,是儲存訊息的容器,保證資訊可靠傳遞。
(3)訊號量:乙個計數器。訊號量用於實現程序間的互斥與同步,而不是用於儲存程序間通訊資料。
(4)共享記憶體:兩個或多個程序共享乙個給定的儲存區。
tcp:基於連線的協議,也就是說,在正式收發資料前,必須和對方建立可靠的連線。面向位元組流,提供可靠的服務。也就是說,通過tcp連線傳送的資料,無差錯,不丟失,不重複,僅支援1對1。
tcp保證資料傳輸可靠性的方式:
1.校驗和:如果接收方比對校驗和與傳送方不一致,那麼資料一定傳輸有誤。但是如果接收方比對校驗和與傳送方一致,資料不一定傳輸成功。
2.確認應答和序列號:tcp傳輸的過程中,每次接收方收到資料後,都會對傳輸方進行確認應答。也就是傳送ack報文。這個ack報文當中帶有對應的確認序列號,告訴傳送方,接收到了哪些資料,下一次的資料從**發。
3.超時重傳:傳送方在傳送完資料後等待乙個時間,時間到達沒有接收到ack報文,那麼對剛才傳送的資料進行重新傳送。如果是剛才第乙個原因(前一次資料全體丟包,接收端未接收到),接收方收到二次重發的資料後,便進行ack應答。如果是第二個原因,接收方發現接收的資料已存在(判斷存在的根據就是序列號,所以上面說序列號還有去除重複資料的作用),那麼直接丟棄,仍舊傳送ack應答。
4.擁塞控制與流量控制,
udp:在正式通訊前不必與對方先建立連線,不管對方狀態就直接傳送。面向資料報,盡最大努力交付,即不保證可靠交付,支援1對1,一對多,多對多。
三次握手:1.客戶端將標誌位syn置為1,隨機產生乙個值seq=j,服務端通過第一次握手確認客戶端傳送能力正常,服務端接收能力正常。
2.服務端收到資料報後由標誌位syn=1知道客戶端請求建立連線,服務端將標誌位syn和ack都置為1,ack=j+1,隨機產生乙個值seq=k,客戶端確認客戶端傳送和接收能力正常,服務端接收與傳送能力正常。
3.客戶端收到確認後,檢查ack是否為j+1,ack是否為1,如果正確則將標誌位ack置為1,ack=k+1,並將該資料報傳送給服務端,服務端檢查ack是否為k+1,ack是否為1,服務端確認客戶端接受能力正常,服務端傳送能力正常。
四次揮手:1.客戶端傳送關閉連線請求,並關閉客戶端向服務端傳送資料的介面。
2.服務端接收請求返回確認資訊,關閉服務端接收客戶端資料的介面。
3.服務端傳送關閉連線請求,關閉服務端向客戶端傳送資料的介面。
4.客戶端確認請求返回資訊,關閉客戶端接收服務端資料的介面。
1xx:指定客戶端應相應的某些動作,代表請求已被接受,需要繼續處理。由於 http/1.0 協議中沒有定義任何 1xx 狀態碼,所以除非在某些試驗條件下,伺服器禁止向此類客戶端傳送 1xx 響應。
2xx:代表請求已成功被伺服器接收、理解、並接受。這系列中最常見的有200、201狀態碼。
200狀態碼:表示請求已成功,請求所希望的響應頭或資料體將隨此響應返回
201狀態碼:表示請求成功並且伺服器建立了新的資源,且其 uri 已經隨location 頭資訊返回。假如需要的資源無法及時建立的話,應當返回 『202 accepted』
202狀態碼:伺服器已接受請求,但尚未處理
3xx:代表需要客戶端採取進一步的操作才能完成請求,這些狀態碼用來重定向,後續的請求位址(重定向目標)在本次響應的 location 域中指明。這系列中最常見的有301、302狀態碼。
301狀態碼:被請求的資源已永久移動到新位置。伺服器返回此響應(對 get 或 head 請求的響應)時,會自動將請求者轉到新位置。
302狀態碼:請求的資源臨時從不同的uri響應請求,但請求者應繼續使用原有位置來進行以後的請求
304自從上次請求後,請求的網頁未修改過。伺服器返回此響應時,不會返回網頁內容。 如果網頁自請求者上次請求後再也沒有更改過,您應將伺服器配置為返回此響應(稱為 if-modified-since http 標頭)。
4xx:表示請求錯誤。代表了客戶端看起來可能發生了錯誤,妨礙了伺服器的處理。常見有:401、404狀態碼。
401狀態碼:請求要求身份驗證。 對於需要登入的網頁,伺服器可能返回此響應。
403狀態碼:伺服器已經理解請求,但是拒絕執行它。與401響應不同的是,身份驗證並不能提供任何幫助,而且這個請求也不應該被重複提交。
404狀態碼:請求失敗,請求所希望得到的資源未被在伺服器上發現。沒有資訊能夠告訴使用者這個狀況到底是暫時的還是永久的。假如伺服器知道情況的話,應當使用410狀態碼來告知舊資源因為某些內部的配置機制問題,已經永久的不可用,而且沒有任何可以跳轉的位址。404這個狀態碼被廣泛應用於當伺服器不想揭示到底為何請求被拒絕或者沒有其他適合的響應可用的情況下。
5xx:代表了伺服器在處理請求的過程中有錯誤或者異常狀態發生,也有可能是伺服器意識到以當前的軟硬體資源無法完成對請求的處理。常見有500、503狀態碼。
500狀態碼:伺服器遇到了乙個未曾預料的狀況,導致了它無法完成對請求的處理。一般來說,這個問題都會在伺服器的程式碼出錯時出現。
503狀態碼:由於臨時的伺服器維護或者過載,伺服器當前無法處理請求。通常,這個是暫時狀態,一段時間會恢復
http(超文字傳輸協議)是乙個基於請求與響應模式的、無狀態的、應用層的協議,常基於tcp的連線方式,http1.1版本中給出一種持續連線的機制,絕大多數的web開發,都是構建在http協議之上的web應用。
(1).請求行:第一行,申明請求型別(get/post等),要訪問的資源,http協議版本
(2).請求頭:主要說明請求目的地,一些請求中的資料格式。
(3).空白行:
(4).請求資料:
對稱加密和非對稱加密結合方式
瀏覽器使用https的url訪問伺服器,建立ssl鏈結。
伺服器收到ssl鏈結,傳送非對稱加密的公鑰a返回給瀏覽器
瀏覽器生成隨機數,作為對稱加密的金鑰b
瀏覽器使用公鑰a,對自己生成的金鑰b進行加密,得到金鑰c
瀏覽器將金鑰c,傳送給伺服器。
伺服器用私鑰d對接受的金鑰c進行解密,得到對稱加金鑰b。
瀏覽器和伺服器之間可以用金鑰b作為對稱加密金鑰進行通訊。
總結這樣瀏覽器和伺服器就共享乙個對稱加密金鑰b,重要的是不會被攔截到。只在傳輸金鑰b的時候進行了一次非對稱加密,之後就用對稱加密進行傳送資料。
面試 三 網路
tcp udp 區別 tcp面向連線,需要 3次握手 4次揮手,udp無連線 tcp有序,udp無序。tcp只支援1對 1,udp支援多播。tcp3 次握手 client 向server 傳送syn1 包,client 進入syn send server 向client 傳送ack syn1 1 包...
linux網路 (三) 網路測試
1.ping 測試主機之間的網路連通性 ping命令是基於internet控制訊息協議 icmp協議 來工作的,icmp報文通過ip協議來傳送。ping傳送的是icmp回顯請求,回答的是回顯應答報文。常用選項引數 1.1.用 c 選項指定傳送的測試報文數目 傳送指定的資料報數預設值是3。ping c...
linux 7 網路相關
檢視網絡卡情況 ifconfig ip addr 檢視網絡卡流量 ip s link show 檢視本地路由 route n ip route 檢視目標路徑 traceroute tracepath 檢視本地埠 netstat anpt ss tln 使用linux 6版本格式的網絡卡命名模式 2 ...