GET和POST的區別?
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連接,服務器不跟蹤每個客戶也不記錄過去的請求。
這也造成了一些性能上的缺陷,例如,一個包含有許多圖像的網頁文件中并沒有包含真正的圖像數據內容,而只是指明了這些圖像的URL地址,當WEB瀏覽器訪問這個網頁文件時,瀏覽器首先要發出針對該網頁文件的請求,當瀏覽器解析WEB服務器返回的該網頁文檔中的HTML內容時,發現其中的img圖像標簽后,瀏覽器將根據img標簽中的src屬性所指定的URL地址再次向服務器發出下載圖像數據的請求。
**HTTP 1.1支持持久連接,在一個TCP連接上可以傳送多個HTTP請求和響應,減少了建立和關閉連接的消耗和延遲。**一個包含有許多圖像的網頁文件的多個請求和應答可以在一個連接中傳輸,但每個單獨的網頁文件的請求和應答仍然需要使用各自的連接。
HTTP 1.1還允許客戶端不用等待上一次請求結果返回,就可以發出下一次請求,但服務器端必須按照接收到客戶端請求的先后順序依次回送響應結果,以保證客戶端能夠區分出每次請求的響應內容,這樣也顯著地減少了整個下載過程所需要的時間。
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)網絡負擔重,對響應速度要求高。
UDP實現可靠傳輸
UDP是面向無連接的協議,擁有資源消耗少,處理數據快的優點。所以音頻、視頻和普通數據在傳送時,使用UDP較多。
傳輸層無法保證數據的可靠傳輸,可以在應用層模仿TCP的可靠性傳輸。
(1)添加seq/ack機制。
(2)添加發送和接受緩沖區,主要為用戶超時重傳。
(3)添加超時重傳機制。
實現了udp可靠傳輸的開源程序:
(1)RUDP
RUDP 提供一組數據服務質量增強機制,如擁塞控制的改進、重發機制及淡化服務器算法等,從而在包丟失和網絡擁塞的情況下, RTP 客戶機(實時位置)面前呈現的就是一個高質量的 RTP 流。在不干擾協議的實時特性的同時,可靠 UDP 的擁塞控制機制允許 TCP 方式下的流控制行為。
(2)RTP
RTP為數據提供了具有實時特征的端對端傳送服務,如在組播或單播網絡服務下的交互式視頻音頻或模擬數據。
應用程序通常在 UDP 上運行 RTP 以便使用其多路結點和校驗服務;這兩種協議都提供了傳輸層協議的功能。但是 RTP 可以與其它適合的底層網絡或傳輸協議一起使用。如果底層網絡提供組播方式,那么 RTP 可以使用該組播表傳輸數據到多個目的地。
RTP 本身并沒有提供按時發送機制或其它服務質量(QoS)保證,它依賴于底層服務去實現這一過程。 RTP 并不保證傳送或防止無序傳送,也不確定底層網絡的可靠性。 RTP 實行有序傳送, RTP 中的序列號允許接收方重組發送方的包序列,同時序列號也能用于決定適當的包位置,例如:在視頻解碼中,就不需要順序解碼。
(3)UDT
基于UDP的數據傳輸協議(UDP-basedData Transfer Protocol,簡稱UDT)是一種互聯網數據傳輸協議。UDT的主要目的是支持高速廣域網上的海量數據傳輸,而互聯網上的標準數據傳輸協議TCP在高帶寬長距離網絡上性能很差。
顧名思義,UDT建于UDP之上,并引入新的擁塞控制和數據可靠性控制機制。UDT是面向連接的雙向的應用層協議。它同時支持可靠的數據流傳輸和部分可靠的數據報傳輸。由于UDT完全在UDP上實現,它也可以應用在除了高速數據傳輸之外的其它應用領域,例如點到點技術(P2P),防火墻穿透,多媒體數據傳輸等等。
負載均衡
將服務器部署多臺,然后通過負載均衡將用戶的請求發送到不同的服務器來提高服務的性能以及可靠性。
負載均衡算法:
(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的請求轉發至同一服務器的算法。
OSI七層模型的每一層都有哪些協議
物理層:EIA/TIA-232, EIA/TIA-499, V.35, V.24, RJ45, Ethernet, 802.3, 802.5, FDDI, NRZI, NRZ, B8ZS
數據鏈路層:Frame Relay, HDLC, PPP, IEEE 802.3/802.2, FDDI, ATM, IEEE 802.5/802.2
網絡層:IP,IPX,AppleTalk DDP
傳輸層:TCP,UDP,SPX
會話層:RPC,SQL,NFS,NetBIOS,names,AppleTalk,ASP,DECnet,SCP
表示層:TIFF,GIF,JPEG,PICT,ASCII,EBCDIC,encryption,MPEG,MIDI,HTML
應用層:FTP,WWW,Telnet,NFS,SMTP,Gateway,SNMP
TCP/IP用到了那些協議,在哪一層
數據鏈路層:ARP,RARP
網絡層: IP,ICMP,IGMP
傳輸層:TCP ,UDP,UGP
應用層:Telnet,FTP,SMTP,SNMP.