1. 程式人生 > >網路程式設計相關知識點

網路程式設計相關知識點

TCP/IP參考模型:7層協議,從下到上依次是物理層、資料鏈路層、網路層、傳輸層、會話層、表示層和應用層。在傳送端,資料需要從上到下進行封裝,每經過一層,都會在資料包的標頭檔案增加一些資訊,而在接收端,資料需要從下到上進行解包裝,依次取出包頭資訊。

IP地址(InetAddress):網路中裝置的標識,本地迴環地址127.0.0.1,主機名localhost。

埠號:用於標識程序的邏輯地址,不同程序的標識(相當於每個軟體有一個程序,不同的程序有不同的埠號)。有效埠:0~65535,其中0~1024系統使用或者保留埠。

傳輸協議:TCP和UDP

  • TCP(傳輸控制協議Transmission Controll Protocol):無連線不通訊。生活中的例子有打電話,下載資料。

    特點是在傳輸過程中需要建立連線,形成傳輸資料的通道後再進行資料傳輸,可以進行大資料傳輸。建立連線過程中需要進行三次握手,是可靠協議,即傳輸過程中不會出現丟包現象,但是效率也會因此降低。

    客戶端與服務端之間的資料通過流進行傳輸,稱為socket流。想要輸入或者輸出,需要找socket獲取。TCP傳輸過程中必須先開服務端,再開客戶端。

  • UDP(使用者資料報文User Date Protocol):不需要進行連線就可以進行資料傳輸。生活中的例子有快遞、對講機、qq聊天和線上視訊。

    特點是將資料及源和目的地址封裝在資料包中,不要建立連線。且每個資料包的大小是限制在64k內的,無需進行連線,是不可靠協議,傳輸過程中會出現丟包現象,但是因為不需要連線,所以傳輸速度快。UDP雖然每個資料包的大小有限制,但是也可以傳輸大資料,可以將大資料分包傳送。而TCP則可以整包傳送。

HTTP(超文字傳輸協議Hyper Text Transmission Protocol):訪問其他主機,必須使用http協議,所有WWW檔案都必須遵守這個標準。被用於在瀏覽器和網站伺服器之間傳遞資訊,HTTP協議以明文方式傳送內容,不提供任何方式的資料加密,如果攻擊者截取了Web瀏覽器和網站伺服器之間的傳輸報文,就可以直接讀懂其中的資訊,因此,HTTP協議不適合傳輸一些敏感資訊。

HTTPS(安全套接字層超文字傳輸協議 Hyper Text Transfer Protocol over Secure Socket Layer):為了資料傳輸的安全,HTTPS在HTTP的基礎上加入了SSL協議,SSL依靠整數來驗證伺服器身份,併為瀏覽器和伺服器之間的通訊加密。

  • https與http的區別:

    1、https協議需要到ca申請證書。

    2、http是超文字傳輸協議,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協議。

    3、http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443.

    4、http連線很簡單,是無狀態的;https協議是由ssl和http協議構建的可進行加密傳輸、身份認證的網路協議。

http的優點:

速度快,效率高:如果使用加密,必然密集使用CPU那麼就會拖慢處理速度。

http的缺點:

1、通訊使用明文(未加密的報文),內容可能會被竊聽。

2、不驗證通訊方的身份就可能遭遇偽裝。

3、無法證明報文的完整性,可能已經被篡改。

http + 加密 + 認證+完整性保護 = https。

為什麼不一直使用https呢?

因為加密通訊會消耗更多的CPU和記憶體資源,加密證書購買需要成本。

現在大多非敏感資訊使用http通訊,包含個人資訊的敏感資料,才會使用https加密通訊。

http協議中請求的兩種方式:GET與POST的區別:

GET:從指定的資源請求資料。

POST:向指定資源提交要被處理的資料。

GET使用URL傳引數,而POST將資料都放在BODY中。

基於伺服器安全性和穩定性考慮,會對URL長度進行限制,GET請求因為URL長度的限制,所以對URL的大小進行了限制,而POST請求,資料都在BODY中,可以隨意選擇資料的大小。

POST比GET更安全,GET的URL帶有引數,並且會被放在瀏覽器歷史和伺服器日誌中,只要被偷窺了資訊就會被他人獲取,而POST日誌沒有記錄,只要資料庫伺服器不被入侵,基本還是安全的。

對於GET,同一個URL我們多次請求的資料是一樣的,也方便轉發和書籤,而POST多用於敏感資料表單的提交,重新整理後就需要重新輸入。

DNS(域名解析系統Domain Name System):域名解析首先通過本地的C:\Window\System32\drivers\etc目錄下的hosts檔案進行解析,如果無法解析到域名,則會在網路中的域名解析伺服器中解析。

Socket(套接字):為網路服務提供的一種機制,通訊的兩端都有Socket,通訊其實就是Socket間的通訊,資料在兩個Socket之間通過IO傳輸。