計算機(jī)基礎(chǔ)知識掌握TCP和HTTP相關(guān)知識即可。
這是一份詳細(xì) & 清晰的計算機(jī)網(wǎng)絡(luò)基礎(chǔ) 學(xué)習(xí)指南
計算機(jī)網(wǎng)絡(luò):這是一份全面 & 詳細(xì) 的TCP協(xié)議攻略
計算機(jī)網(wǎng)絡(luò):這是一份全面& 詳細(xì) HTTP知識講解
一、HTTP
- HTTP請求報文結(jié)構(gòu)、響應(yīng)報文,狀態(tài)碼
- Http和Https有什么不同,HTTPS的握手過程,瀏覽器如何驗證CA證書
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
http://www.cnblogs.com/ttltry-air/archive/2012/08/20/2647898.html
https://juejin.im/post/59e4c02151882578d02f4aca
https://juejin.im/post/5a2ff29c6fb9a045132aac5a - Http緩存機(jī)制
https://juejin.im/post/5c93ba526fb9a070ca103898 - cookie充易、session、token區(qū)別
https://www.cnblogs.com/andy-zhou/p/5360107.html - Http1.0 ,Http1.1荸型,Http2.0
1盹靴、Http1.1相對Http1.0主要改進(jìn)的地方:
(1)在HTTP/1.0中,默認(rèn)使用的是短連接瑞妇。也就是說稿静,瀏覽器和服務(wù)器每進(jìn)行一次HTTP操作,就建立一次連接辕狰,但任務(wù)結(jié)束就中斷連接改备。如果客戶端瀏覽器訪問的某個HTML或其他類型的 Web頁中包含有其他的Web資源,如JavaScript文件蔓倍、圖像文件悬钳、CSS文件等;當(dāng)瀏覽器每遇到這樣一個Web資源偶翅,就會建立一個HTTP會話默勾。
但從 HTTP/1.1起,默認(rèn)使用長連接聚谁,用以保持連接特性母剥。使用長連接的HTTP協(xié)議,會在響應(yīng)頭有加入這行代碼:Connection:keep-alive
(2)緩存處理,在HTTP1.0中主要使用header里的If-Modified-Since,Expires來做為緩存判斷的標(biāo)準(zhǔn)环疼,HTTP1.1則引入了更多的緩存控制策略例如Entity tag习霹,If-Unmodified-Since, If-Match, If-None-Match等更多可供選擇的緩存頭來控制緩存策略。
2炫隶、Http1.x存在的問題:
(1)線頭阻塞:TCP連接上只能發(fā)送一個請求序愚,前面的請求未完成前,后續(xù)的請求都在排隊等待等限。
(2)頭部冗余,采用文本格式
HTTP/1.X版本是采用文本格式芬膝,首部未壓縮望门,而且每一個請求都會帶上cookie、user-agent等完全相同的首部锰霜。
3筹误、Http2.0改進(jìn)的地方:
(1)HTTP2建立一個TCP連接,一個連接上面可以有任意多個流(stream)癣缅,消息分割成一個或多個幀在流里面?zhèn)鬏敵簟瑐鬏斶^去以后,再進(jìn)行重組友存,形成一個完整的請求或響應(yīng)祷膳。這使得所有的請求或響應(yīng)都無法阻塞。
(2)HTTP 1.x每一次通信(請求/響應(yīng))都會攜帶頭部信息用于描述資源屬性屡立。HTTP 2.0在客戶端和服務(wù)端之間維護(hù)一份字典(map)存儲頭部信息直晨。
第一次通信后,把頭部信息存進(jìn)字典中膨俐,之后每次傳輸只需要帶上索引進(jìn)行勇皇。
https://www.cnblogs.com/wjlog/p/5827168.html
https://blog.csdn.net/zhuyiquan/article/details/69257126?locationNum=4&fps=1
https://juejin.im/post/5c0ce870f265da61171c8c66
二、TCP相關(guān)
- TCP 和 UDP 的異同
UDP將應(yīng)用程序發(fā)送過來的數(shù)據(jù)包在收到的那一刻焚刺,立即按照原樣發(fā)送到上的一種機(jī)制敛摘,不保證數(shù)據(jù)的傳輸結(jié)果。
TCP是面向連接的可靠傳輸服務(wù)乳愉。數(shù)據(jù)發(fā)送前需要三次握手建立連接兄淫,數(shù)據(jù)發(fā)送時通過一系列的機(jī)制,如校驗和蔓姚、序列號拖叙、確認(rèn)號、超時重傳赂乐、滑動窗口薯鳍、快速重傳、擁塞避免、流量控制保證數(shù)據(jù)不損壞挖滤、不丟失崩溪、不重復(fù)、不亂序斩松,最后數(shù)據(jù)傳輸完成后需要通過四次揮手?jǐn)嚅_連接伶唯。 - TCP如何保證可靠傳輸
TCP數(shù)據(jù)傳輸過程可能會出現(xiàn)數(shù)據(jù)損壞、丟失惧盹、重復(fù)乳幸、亂序的情況,通過校驗和钧椰、序列號粹断、確認(rèn)號、超時重傳嫡霞、滑動窗口瓶埋、快速重傳、擁塞避免诊沪、流量控制保證可靠傳輸养筒。
(1)數(shù)據(jù)損壞
數(shù)據(jù)接收方接受到數(shù)據(jù)時對TCP報文做相應(yīng)的運算,得出結(jié)果并與校驗和比對端姚,相同則說明數(shù)據(jù)沒被損壞晕粪。(類似于Hash算法校驗數(shù)據(jù)是否被篡改)
TCP檢驗和的過程
(2)亂序
序列號對每個數(shù)據(jù)進(jìn)行編號,維持一個滑動窗口緩存亂序的數(shù)據(jù)渐裸,同時快速重傳亂序數(shù)據(jù)的ACK兵多,當(dāng)發(fā)送方接收到三個重復(fù)的ACK時,就會重傳該數(shù)據(jù)橄仆,比超時重傳效率高剩膘。
(3)丟失
每次發(fā)送數(shù)據(jù)時都會啟動一個定時器,時間設(shè)為一個RTT盆顾,即數(shù)據(jù)在客戶端和服務(wù)端之間的往返時間怠褐,當(dāng)時間到達(dá)時還沒收到ACK,則重新發(fā)送這個數(shù)據(jù)您宪。
(4)重復(fù)
每個數(shù)據(jù)均有序列號奈懒,重復(fù)時丟棄即可。
https://blog.csdn.net/cmm0401/article/details/77878998
為什么收到三個重復(fù)的ACK意味著發(fā)生擁塞? - TCP建立連接三次握手的過程及原因
- TCP斷開連接四次揮手的過程及原因
- 滑動窗口宪巨、快速重傳
- 擁塞避免磷杏、流量控制
https://blog.csdn.net/qzcsu/article/details/72861891
TCP擁塞控制機(jī)制
其他:
1一次網(wǎng)絡(luò)請求的過程是怎樣的?
2 DNS解析
3捏卓、socket編程
https://www.cnblogs.com/zhujiabin/p/5675716.html
https://blog.csdn.net/carson_ho/article/details/53366856