成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

被搞得暈頭轉向的HTTP和TCP

網絡 通信技術
CP協議對應傳輸層,HTTP協議對應應用層,二者在本質上其實沒有可比性,但實際應用中出現問題很容易混淆,并且不容易定位問題,在此按自身理解分享給大家。

?哈嘍,大家好,我是指北君。話不多說,先來個小能量。

有些路看起來很近走去卻很遠,缺少耐心永遠走不到頭?!驈奈?/p>

接下來就開始指北君的分享~

前言

對于從事互聯網開發的同學來說,永遠都無法繞過網絡連接,各種原理、各種協議...輕輕松松就被搞得暈頭轉向,不知所措,從而影響解決問題的效率,同時需要投入大量時間去查閱資料,搞不好還會搞丟自己的績效...想想后果就不禁一顫,那不如提前儲備,以備不時之需。

本篇內容主要圍繞常見的HTTP內容,同時對比TCP進行梳理,接下來就和小編一起去探索網絡連接那些事!

網絡小知識?

分析網絡連接前,需要給大家簡介下網絡知識,了解的同學可以直接跳過

  • 網絡模型通常分為四層或七層,小編以七層為例,網絡自下而上分層為:物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層。每一層都依賴于其底層的協議,比如沒有網絡層,就不會有傳輸層。
  • HTTP協議對應網絡的應用層,TCP協議對應網絡的傳輸層。(多提一句,IP協議對應網絡層,socket是基于TCP/IP協議封裝的應用接口,便于開發人員使用)
  • TCP協議主要作用是如何穩定快速的傳輸數據,而HTTP協議負責定義數據,以便網絡兩端的計算機理解數據。

HTTP協議

  • HTTP協議全名超文本傳送協議(Hypertext Transfer Protocol),是web聯網的基礎,也是移動端常用協議之一。
  • HTTP協議屬于應用層,主要作用于兩臺連接的計算機,并且在不同計算機中充當著客戶端和服務器的角色??蛻舳税l起請求,服務器負責給予請求對應的響應,完成數據交互。
  • HTTP屬于無狀態協議,每一次請求都是互相獨立的、沒有任何關聯的。在1.0版本中,客戶端每次請求都是建立一次單獨的連接,請求完成后自動釋放,1.1版本中單連接允許處理多個請求,并且多個請求可以并發執行。(后續會單獨詳細介紹HTTP,敬請期待)
  • 由于HTTP每次請求結束后會釋放連接,所以被稱為‘短鏈接’。為了保持客戶端的在線狀態,需要不斷向服務器發起連接請求,根據服務器的響應結果判斷連接是否斷開。

TCP協議?

  • TCP全名傳輸控制協議(Transmission Control Protocol),是一種面向連接的、可靠的、基于字節流的傳輸層通信協議,是移動端建立無線網絡連接的基礎,實現移動聯網
  • TCP相對于HTTP發起請求、接收響應、釋放連接來說,是更加復雜的。最常見且最重要的就是‘三次握手’:
  • 第一次握手:client發送SYN包(syn=j)到server,并進入SYN_SEND狀態開始等待;
  • 第二次握手:server接收并確認client的SYN包(ack=j+1),同時也額外發送SYN包(syn=k),即SYN包+ACK包,此時server進入SYN_RECV狀態;
  • 第三次握手:client收到server的SYN+ACK包后,向server發送ACK包(ack=k+1),成功后client和server分別進入ESTABLISHED狀態,完成三次握手。
  • TCP還有另外一層容易被忽略的就是斷開連接(四次揮手)
  • 第一次揮手:client端接收完數據,會向server端發起釋放請求(fin=m);
  • 第二次揮手:server端接收并確認client的釋放請求(ack=m+1),通知應用層要釋放TCP連接,并進入CLOSE_WAIT狀態;
  • 第三次揮手:server端如果還有沒有發送完的數據,會繼續發送,直到發送完畢后會向client端發送連接釋放請求(fin=n),然后進入到LAST_ACK狀態;(此處可以將第二次和第三次合并,延遲ACK包的發送,用來解決傳輸時間限制等問題)
  • 第四次揮手:client端接受并確認server的釋放請求(ack=n+1)后,進入TIME_WAIT狀態,并持續2MSL時間,若該時間內未收到server端的重發請求,就會進入CLOSE狀態,并向server發送fin+ack包,server端確認接收后,也進入CLOSE狀態。

實際應用

小編最近遇到的一個十分緊急的問題,就是外網的頁面資源加載延遲高,特別是圖片、js等靜態資源。由此為出發點,優先解決靜態資源加載,想到了HTTP緩存這一特性。

  • HTTP緩存:當瀏覽器訪問服務端時,會將請求資源緩存到本地,當下次再發起相同請求,則直接加載本地緩存資源,不再請求服務端,節省網絡資源。
  • HTTP緩存是由請求頭字段(Cache-Control)控制。具體根據資源更新頻率設置緩存時長。
  • 參考微信使用HTTP緩存(僅供參考):

html:public, max-age=500 (public為公共緩存,max-age為緩存時間500秒)

JS文件:max-age=31536000(1年),文件命名帶版本號或指紋信息,方便及時更新。

CSS文件:max-age=31536000,文件命名帶版本號或指紋信息,方便及時更新。

圖片:max-age=31536000,文件命名帶版本號或指紋信息,方便及時更新。

XHR請求:no-cache,must-revalidate

最終小編利用HTTP緩存解決了頁面加載問題,主要是參考微信的請求參數設置,后續涉及其它web資源優化本文不再作詳細介紹,如果有其它問題可以私信一起探討。

總結

TCP協議對應傳輸層,HTTP協議對應應用層,二者在本質上其實沒有可比性,但實際應用中出現問題很容易混淆,并且不容易定位問題,在此按自身理解分享給大家。

HTTP協議是基于TCP協議的,HTTP在發起請求時通過TCP建立起連接服務器的通道,當請求結束后,會立即斷開TCP連接。

最后借用比較形象的比喻:HTTP是轎車,是封裝或顯示數據的具體形式;將TCP封裝的API(即Socket編程接口),是發動機,提供了網絡通信能力。

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2018-09-13 11:00:15

2018-06-21 10:25:16

2025-04-24 08:35:00

子網掩碼網絡IP地址

2015-11-05 09:26:34

Fedora發行版Linux

2011-12-21 10:46:17

Java

2013-08-29 11:05:49

Web字符集

2010-01-08 13:42:21

JSON VS XML

2018-08-07 15:26:42

Linux版本系統

2023-09-07 10:28:24

2015-01-27 09:30:15

開源容器技術Docker云應用

2009-10-16 10:58:48

2015-10-22 10:11:48

IPTCPDNS

2021-08-30 20:12:11

MySQL事務隔離

2015-04-09 10:40:29

HTTP協議TCPHTTP事務延遲

2011-05-03 16:22:15

一體機

2010-08-11 10:39:13

2022-07-14 08:54:50

HTTP/3TCPQUIC

2011-11-08 11:10:34

操作系統Windows 9

2020-12-01 06:20:49

流氓軟件

2023-03-07 12:05:29

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩视频在线观看 | 精品九九九 | 日韩av大片免费看 | 久久精品视频网站 | 免费观看毛片 | 亚洲精品国产第一综合99久久 | 欧美一区二区免费在线 | 中文字幕人成乱码在线观看 | 欧美精品在线播放 | 国产www.| 在线成人免费视频 | 99在线视频观看 | 国产高清在线精品 | av在线免费观看网站 | 精品亚洲一区二区 | 亚洲图片一区二区三区 | 中文字幕在线观看视频一区 | 久久久久久久久久久蜜桃 | 国产在线观看av | 中文字幕在线观看av | 久久久久精 | 欧美片网站免费 | 无吗视频 | 一区二区三区四区不卡视频 | 成人特级毛片 | 91视频91| 99福利 | 亚洲免费精品 | 亚洲欧美中文日韩在线 | 日韩视频1 | 91亚洲国产成人久久精品网站 | 女人夜夜春 | 亚洲欧美日韩精品久久亚洲区 | 久久福利电影 | 二区国产 | 国产精品国产精品国产专区不卡 | 欧美成人精品一区二区男人看 | 日韩精品在线免费观看 | 天天视频一区二区三区 | 欧美日韩在线成人 | 伦理午夜电影免费观看 |