協議筆記

1.QQ及時通信軟件既使用UDP也使用TCP

  • 登錄過程,客戶端采用TCP協議向服務器發送消息,HTTP協議下載信息。登錄之后,會有一個TCP連接來保持在線狀態。
  • 和好友發消息,客戶端采用UDP協議,但是需要通過服務器轉發。騰訊為了確保傳輸消息的可靠性,采用上層協議來保證可靠傳輸:如果客戶端收到UDP發送的消息,需要使用UDP發送一個應答包,以此保證消息可以無遺漏傳輸。
  • 在內網中兩個客戶端傳文件,QQ采用P2P技術,不需要服務器中轉。

2.TCP長連接為什么要發送心跳包

因為當電腦連接上網絡時,運營商分配給電腦的IP只是一個內網的IP,手機要連上Internet必須要通過運營商的網關進行IP轉化,這個網關稱為NAT,電腦連接Internet是將運營商的內網ip和端口與外網相互映射來完成的。
但是運營商為了減少網關NAT映射表的負荷,當一個鏈路有一段時間沒有通信時,就會刪除對應表,造成鏈路中斷,這個時間一般為五分鐘,所以長連接后臺需要定時發送心跳包來維持長連接。
同時,長連接的心跳周期不能設置的太長,否則長連接會被釋放掉,造成客戶端的重連和登錄,同時也不能設置太短,太短會加重服務器的負擔。

3.GET和POST在TCP階段的不同

  • 對于GET請求,瀏覽器會把http頭部和數據部分一起發送出去,服務端響應200(返回數據)
  • 對于POST請求,瀏覽器會先發送http頭部,服務器響應100 continue,瀏覽器再發送數據部分,服務端響應200(ok)
  • 并不是所有的瀏覽器都會在POST中發送兩次包,Firefox只發送一次
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 個人認為,Goodboy1881先生的TCP /IP 協議詳解學習博客系列博客是一部非常精彩的學習筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,092評論 0 8
  • 1.這篇文章不是本人原創的,只是個人為了對這部分知識做一個整理和系統的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,134評論 6 174
  • 定義 網絡協議為計算機網絡中進行數據交換而建立的規則、標準或約定的集合。網絡協議主要由三個要素組成:語義、語法及時...
    FlyAndroid閱讀 1,013評論 0 10
  • 參考:http://www.2cto.com/net/201611/569006.html TCP HTTP UD...
    F麥子閱讀 2,976評論 0 14
  • 在過去的幾天時間里面,我主要集中精力實現Contest 的的Rank以及Status功能 Rank實現代碼####...
    LJCgeorge閱讀 619評論 0 0