網絡編程相關知識點

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傳輸。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章