網絡編程


1. 模型及TCP/IP模型

在這裏插入圖片描述
在這裏插入圖片描述


2. IP協議

  網絡層協議
  將消息從一個主機發送到另一個主機,消息在傳送的過程中被分割成一個個的小包。不能解決數據分組在傳輸過程中出現的問題,由此出現了TCP


3. TCP協議

  傳輸層協議
  TCP協議是一種可靠的網絡協議,它在通信實例的兩端各建立一個Socket,從而在通信的兩端之間形成網絡虛擬鏈路。一旦建立了虛擬的網絡鏈路,兩端的程序就可以通過虛擬鏈路進行通信。

總結一句話:是一種面向連接的,可靠的,基於字節流的傳輸層通信協議

3.1 作用

  讓通信的連個主機之間建立一個連接:用於發送額接收數據的虛擬鏈路

3.2 適用情況

3.2 爲什麼說TCP可靠

    採用了重發機制,當一個通信實體發送一個消息給另一個通信實體後,需要接收到另一個通信實體的確認消息,如果沒有收到另一個通信實體的確認消息,則會再次重發剛纔發送的消息

3.3 優點

  1. 可靠

3.4 缺點

  1. 相比UDP,效率低,對系統資源要求較多

4. UDP

  UDP是傳輸層協議
  UDP協議是一種不可靠的網絡協議,它在通信實例的兩端各建立一個Socket,但這兩個Socket之間並沒有虛擬鏈路,這兩個socket只是發送,接收數據報的對象。

總結一句話:是一種面向無連接的,不可靠的信息傳送服務


5. 作用

  完成網絡數據流和數據報之間的轉換——在信息的發送端,UDP協議將網絡數據封裝成數據報,然後將數據報發送出去;在信息的接收端,UDP協議將數據報轉換成實際數據內容

5.1 適用情況

  一次只傳送少量數據、對可靠性要求不高

5.2 爲什麼說UDP協議不可靠

  UDP是一種面向非連接的協議,即在正式通信前不必與對方建立連接,不管對方狀態就直接發送。至於對象是否可以接收到這些數據內容,UDP協議是無法控制的,所以不可靠

5.3 優點

  1. 通信是無需建立連接,所以通信效率比較高
  2. 具有較好的實時性

5.4 缺點

  1. 不可靠,不能保證數據一定到達接收方

6. HTTP協議

  應用層協議
  HTTP是超文本傳輸協議,是客戶端瀏覽器或其他程序與Web服務器之間的應用層通信協議。在Internet上的Web服務器上存放的都是超文本信息, 客戶機需要通過HTTP協議傳輸所要訪問的超文本信息。HTTP包含命令和傳輸信息,不僅可用於Web訪問,也可以用於其他因特網/內聯網應用系統之間的通信,從而實現各類應用資源超媒體訪問的集成

  HTTP協議是建立在請求/響應模型上的。首先由客戶建立一條與服務器的TCP鏈接,併發送一個請求到服務器,請求中包含請求方法、URL、協議版本以及
相關的MIME樣式的消息。服務器響應一個狀態行,包含消息的協議版本、一個成功和失敗碼以及相關的MIME式樣的消息。

  雖然HTTP本身是一個協議,但其最終還是基於TCP的
8種請求:https://blog.csdn.net/jinianh/article/details/82844310

6.1 http的8種請求方式

  1. opions 返回服務器針對特定資源所支持的HTML請求方法 或web服務器發送*測試服務器功能(允許客戶端查看服務器性能)
  2. Get 向特定資源發出請求(請求指定頁面信息,並返回實體主體)
  3. Post 向指定資源提交數據進行處理請求(提交表單、上傳文件),又可能導致新的資源的建立或原有資源的修改
  4. Put 向指定資源位置上上傳其最新內容(從客戶端向服務器傳送的數據取代指定文檔的內容)
  5. Head 與服務器索與get請求一致的相應,響應體不會返回,獲取包含在小消息頭中的原信息(與get請求類似,返回的響應中沒有具體內容,用於獲取報頭)
  6. Delete 請求服務器刪除request-URL所標示的資源*(請求服務器刪除頁面)
  7. Trace 回顯服務器收到的請求,用於測試和診斷
  8. Connect HTTP/1.1協議中能夠將連接改爲管道方式的代理服務器

6.2 常見錯誤碼

常見有5類狀態碼詳細列出:

  1. 客戶方錯誤
    100  繼續
    101  交換協議

  2. 成功

    200  OK
    201  已創建
    202  接收
    203  非認證信息
    204  無內容
    205  重置內容
    206  部分內容

  3. 重定向

    300  多路選擇
    301  永久轉移
    302  暫時轉移
    303  參見其它
    304  未修改(Not Modified)
    305  使用代理

  4. 客戶方錯誤

    400  錯誤請求(Bad Request)
    401  未認證
    402  需要付費
    403  禁止(Forbidden)
    404  未找到(Not Found)
    405  方法不允許
    406  不接受
    407  需要代理認證
    408  請求超時
    409  衝突
    410  失敗
    411  需要長度
    412  條件失敗
    413  請求實體太大
    414  請求URI太長
    415  不支持媒體類型

  5. 服務器錯誤

    500  服務器內部錯誤
    501  未實現(Not Implemented)
    502  網關失敗
    504  網關超時
    505  HTTP版本不支持


7. IP、TCP/UDP、HTTP關係

  TCP和UDP使用IP協議從一個網絡傳送數據包到另一個網絡。把IP想像成一種高速公路,它允許其它協議在上面行駛並找到到其它電腦的出口。TCP和UDP是高速公路上的“卡車”,它們攜帶的貨物就是像HTTP,文件傳輸協議FTP這樣的協議等

  IP協議來連接網絡;TCP是一種允許我們安全傳輸數據的機制,使用TCP協議來傳輸數據的HTTP是Web服務器和客戶端使用的特殊協議。HTTP基於TCP協議,但是卻可以使用socket去建立一個TCP連接

總之:TCP依賴IP,HTTP又基於TCP


8. 三次握手/四次揮手

  博文推薦:https://blog.csdn.net/ZWE7616175/article/details/80432486


9. 長連接/短連接

  長連接是指的TCP連接,而不是HTTP連接
  博文推薦:https://www.jianshu.com/p/3fc3646fad80


10.網絡編程的通信模式

  博文推薦:http://www.tianshouzhi.com/api/tutorials/netty/221,
  select,poll,epoll講解:https://blog.csdn.net/qq_35976351/article/details/85228002

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