關於計算機網路的常見面試問題
TCP和UDP的區別?
TCP:面向連線,傳輸可靠(保證資料正確性,保證資料順序),一對一,用於傳輸大量資料(流模式),速度慢,建立連線需要開銷較多(時間,系統資源)。
UDP:面向無連線,傳輸不可靠,可以支援一對一、多對多、一對多的通訊,用於傳輸少量資料(資料包模式),速度快。
三次握手中的Syn攻擊?
在三次握手過程中,伺服器傳送SYN-ACK之後,收到客戶端的ACK之前的TCP連線稱為半連線(half-open connect).此時伺服器處於Syn_RECV狀態。當收到ACK後,伺服器轉入ESTABLISHED狀態。
Syn攻擊就是攻擊客戶端 在短時間內偽造大量不存在的IP地址,向伺服器不斷地傳送syn包,伺服器回覆確認包,並等待客戶的確認,由於源地址是不存在的,伺服器需要不斷的重發直 至超時,這些偽造的SYN包將長時間佔用未連線佇列,正常的SYN請求被丟棄,目標系統執行緩慢,嚴重者引起網路堵塞甚至系統癱瘓。
Syn攻擊是一個典型的DDOS攻擊。檢測SYN攻擊非常的方便,當你在伺服器上看到大量的半連線狀態時,特別是源IP地址是隨機的,基本上可以斷定這是一次SYN攻擊。在Linux下可以如下命令檢測是否被Syn攻擊netstat -n -p TCP | grep SYN_RECV。
一般較新的TCP/IP協議棧都對這一過程進行修正來防範Syn攻擊,修改tcp協議實現。主要方法有SynAttackProtect保護機制、SYN cookies技術、增加最大半連線和縮短超時時間等,但是不能完全防範syn攻擊。
TCP、IP、Http、Socket的區別?
傳輸層的TCP協議是基於網路層的IP協議的,而應用層的HTTP協議又是基於傳輸層的TCP協議的,而Socket本身不算是協議,它只是提供了一個針對TCP或者UDP程式設計的介面
HTTP和HTTPS的區別?
HTTP是普通超文字協議,而HTTPS就是安全超文字傳輸協議,需要CA(certificate authority)證書和提供安全連線。
HTTP資訊是明文傳送,HTTPS是嵌套了SSL加密的HTTP連線,其內容會由SSL先加密,然後再傳送。
HTTP是使用埠80,而HTTPS使用443。
get和post區別?
從語義上來講:
GET:
是請求獲取指定的資源。GET方法是安全、冪等、可快取的(除非有 Cache-ControlHeader的約束),GET方法的報文主體沒有任何語義。
POST:
是根據請求負荷(報文主體)對指定的資源做出處理,具體的處理方式視資源型別而不同。POST不安全,不冪等
從實現上來講:
1.GET使用URL或Cookie傳參。而POST將資料放在BODY中。
2.GET的URL會有長度上的限制,則POST的BODY則可以非常大。
3.POST比GET安全,因為資料在位址列上不可見。