面試很多時候被問到的問題,感覺都沒答好,統一整理一下get和post的區別?更新 8/23
get和post方法沒有實質上區別,只是報文格式不同。get和post是http協議中的兩種請求方法。而 http 協議是基於 tcp/ip 的應用層協議,無論 get 還是 post,用的都是同乙個傳輸層協議,所以在傳輸上,沒有區別。
(1)get請求的引數是放在url裡的,post請求引數是放在請求body裡的。因此:
post方法比get方法安全,因為資料在位址列不可見。
get方法有長度限制,post方法沒有。http協議沒有body和url的長度限制,對url限制大多數瀏覽器和伺服器的原因。(大多數瀏覽器限制url長度在2k個位元組,伺服器最多處理64k位元組的url)
get請求的引數只能是ascii碼,所以中文需要url編碼,post支援多種編碼方法。
(2)get方法是冪等方法,對資源做查詢多次,此實現的結果都是一樣的。post是非冪等方法,因為一次請求新增乙份新資源,二次請求則新增了兩份新資源,多次請求會產生不同的結果,因此post不是冪等操作。
put和post方法的區別?
冪等性不同。put請求是冪等性方法,將a修改為b,它第一次請求值變為了b,再進行多次此操作,最終的結果還是b,與一次執行的結果是一樣的,所以put是冪等操作。
http1.1和http1.0區別?
http 1.0預設支援短連線。瀏覽器的每次請求都需要與伺服器建立乙個tcp連線,伺服器完成請求處理後立即斷開tcp連線,伺服器不跟蹤每個客戶也不記錄過去的請求。tcp擁塞控制方法?
慢開始、擁塞避免、快重傳、快恢復。
tcp和udp區別?
(1)tcp面向連線,udp面向無連線。
(2)tcp提供可靠的服務,通過tcp連線傳送的資料,無差錯,不丟失,不重複,且按序到達。udp不保證可靠交付。
(3)tcp對系統資源要求較多,udp對系統資源要求較少。
(4)每一條tcp連線只能是點到點的;udp支援一對一,一對多,多對一和多對多的互動通訊。
(5)udp具有較好的實時性,工作效率比tcp高,適用於對高速傳輸和實時性有較高的通訊或廣播通訊。
(6)tcp首部開銷較大,20個位元組;udp首部開銷較小,8個位元組。
tcp和udp程式設計步驟
tcp:
tcp程式設計的伺服器端一般步驟是:
1、建立乙個socket,用函式socket();
2、設定socket屬性,用函式setsockopt(); * 可選
3、繫結ip位址、埠等資訊到socket上,用函式bind();
4、開啟監聽,用函式listen();
5、接收客戶端上來的連線,用函式accept();
6、收發資料,用函式send()和recv(),或者read()和write();
7、關閉網路連線;
8、關閉監聽;
tcp程式設計的客戶端一般步驟是:
1、建立乙個socket,用函式socket();
2、設定socket屬性,用函式setsockopt();* 可選
3、繫結ip位址、埠等資訊到socket上,用函式bind();* 可選
4、設定要連線的對方的ip位址和埠等屬性;
5、連線伺服器,用函式connect();
6、收發資料,用函式send()和recv(),或者read()和write();
7、關閉網路連線;
udp:
與之對應的udp程式設計步驟要簡單許多,分別如下:
udp程式設計的伺服器端一般步驟是:
1、建立乙個socket,用函式socket();
2、設定socket屬性,用函式setsockopt();* 可選
3、繫結ip位址、埠等資訊到socket上,用函式bind();
4、迴圈接收資料,用函式recvfrom();
5、關閉網路連線;
udp程式設計的客戶端一般步驟是:
1、建立乙個socket,用函式socket();
2、設定socket屬性,用函式setsockopt();* 可選
3、繫結ip位址、埠等資訊到socket上,用函式bind();* 可選
4、設定對方的ip位址和埠等屬性;
5、傳送資料,用函式sendto();
6、關閉網路連線;
udp應用場景
(1)面向資料報方式。
(2)資料多為短訊息。
(3)擁有大量client。
(4)對安全性無特殊要求。
(5)網路負擔重,對響應速度要求高。
負載均衡
將伺服器部署多台,然後通過負載均衡將使用者的請求傳送到不同的伺服器來提高服務的效能以及可靠性。
負載均衡演算法:
(1)隨機演算法
按權重設定隨機概率。在乙個截面上碰撞的概率高,但呼叫量越大分布越均勻,而且按概率使用權重後也比較均勻,有利於動態調整提供者權重。
(2)輪詢以及加權輪詢
輪詢(round robbin)當伺服器群中各伺服器的處理能力相同時,且每筆業務處理量差異不大時,最適合使用這種演算法。 輪循,按公約後的權重設定輪循比率。存在慢的提供者累積請求問題,比如:第二台機器很慢,但沒掛,當請求調到第二台時就卡在那,久而久之,所有請求都卡在調到第二台上。
加權輪詢(weighted round robbin)為輪詢中的每台伺服器附加一定權重的演算法。比如伺服器1權重1,伺服器2權重2,伺服器3權重3,則順序為1-2-2-3-3-3-1-2-2-3-3-3- …
(3)最小連線以及加權最小連線
最少連線(least connections)在多個伺服器中,與處理連線數(會話數)最少的伺服器進行通訊的演算法。即使在每台伺服器處理能力各不相同,每筆業務處理量也不相同的情況下,也能夠在一定程度上降低伺服器的負載。
加權最少連線(weighted least connection)為最少連線演算法中的每台伺服器附加權重的演算法,該演算法事先為每台伺服器分配處理連線的數量,並將客戶端請求轉至連線數最少的伺服器上。
(4)雜湊演算法
普通雜湊
一致性雜湊一致性hash,相同引數的請求總是發到同一提供者。當某一台提供者掛時,原本發往該提供者的請求,基於虛擬節點,平攤到其它提供者,不會引起劇烈變動。
(5)ip位址雜湊
通過管理傳送方ip和目的地ip位址的雜湊,將來自同一傳送方的分組(或傳送至同一目的地的分組)統一**到相同伺服器的演算法。當客戶端有一系列業務需要處理而必須和乙個伺服器反覆通訊時,該演算法能夠以流(會話)為單位,保證來自相同客戶端的通訊能夠一直在同一伺服器中進行處理。
(6)url雜湊
通過管理客戶端請求url資訊的雜湊,將傳送至相同url的請求**至同一伺服器的演算法。
tcp/ip用到了那些協議,在哪一層
資料鏈路層:arp,rarp
網路層: ip,icmp,igmp
傳輸層:tcp ,udp,ugp
應用層:telnet,ftp,smtp,snmp.
計算機網路面試題整理
tcp和udp的區別及使用場景 tcp的流量控制和擁塞控制 tcp的三握四揮 tcp的視窗協議 幀同步和狀態同步 tcp的流模式和udp的資料報模式 osi七層協議 各個層一些詳細的部分建議參考百科,比較詳細 為什麼要封裝成幀 資料鏈路層 什麼是物理定址 arp協議 簡單來說,就是已知ip位址尋找m...
計算機網路面試題
tcp udp區別以及tcp如何保證傳輸可靠性 tcp是基於連線的協議,udp是面向非連線的協議 tcp傳輸可靠,udp傳輸不可靠 tcp的可靠性是通過順序編號和確認 ack 來實現的。tcp在開始傳送乙個段時,首先將該段插入到傳送佇列之中,同時啟動時鐘。其後,如果收到了接受端對該段的ack資訊,就...
計算機網路面試題
常見題 1 osi開放式網際網路參考模型有哪些組成?2 客戶端傳給伺服器時經過tcp ip的四層模型?3 從輸入 到獲得頁面的過程?4 cookie作用是啥?和session區別是啥?tcp ip 1 什麼是tcp協議?什麼是udp協議?2 tcp udp區別?3 tcp報文頭有哪些組成?4 udp...