get與post請求的區別?請求方式不同 一個是拼接 一個是放在請求體中 ?post安全
http的連接流程:通過3次握手進行連接,傳遞數據,再通過4次揮手斷開連接
http的特點:1無連接 ?2無狀態
charles抓包原理?中間人攻擊 ?服務器和客戶端之間添加一個中間人,就可以獲取修改數據。
http與https的區別?https是添加了ssl/tsl的安全協議 ?http屬于應用層,ssl等于是插在應用層之下傳輸層之上的一個安全協議
tcp/ip并不屬于協議,而是一些協議的統稱
tcp為啥要進行三次握手? 因為如果進行兩次握手的話,當第二次服務器返回給客戶端信息后,此時連接已經建立,但是此時如果客戶端連接超時,會重新給服務器發送連接請求,就會造成2次連接,所以需要在客戶端收到服務器發送的信息后,在給服務器端回復一次。
tcp四次揮手? ? ? 因為tcp的鏈接是全雙工的,每一條通道上面的鏈接都必須手動切斷,當客戶端接受完數據后,會給服務器發送切斷請求,來終止這個鏈接,服務器會回復一條確認消息,之后進去半關閉狀態,此時服務器扔可以給客戶端發送信息,但是客戶端不能給服務器發送消息,之后服務器再去請求關閉連接
tcp特點?1.按序到達 ?2.無差錯 ?3.不丟失 ?4.不重復 ?(客戶端每給服務器發送一條消息,服務器都會給客戶端回復一條確認消息,當消息被篡改或者丟失的情況下,客戶端可以啟動重發丟失的信息)
tcp面向字節流:不管發送方一次發送多大的數據,tcp會自動把數據分成若干個字節進行發送
tcp慢開始擁塞避免方法:開始發送報文的時候第一次發送1個報文,后面呈指數遞增發送報文,當達到一個門限值的時候,改成加法增長,當達到擁塞的時候重新開始,重新設置一個門限值。
http屬于應用層的協議,tcp udp屬于傳輸層的協議
網絡連接依靠的是socket
http超文本傳輸協議 連接屬于短連接,平時經常用到的是get請求和post請求,http1.0的時候是短連接,1.1的時候支持了長連接,主要是解決了1.0的時候每次請求都需要發送一堆數據包,影響性能的問題,1.1的時候可以可以發送多個請求
http并不能連接,他的連接依靠的是傳輸層,他只是規定了傳輸內容的協議。
socket則是對TCP/IP協議的封裝和應用(程序員層面上)。也可以說,TPC/IP協議是傳輸層協議,主要解決數據 如何在網絡中傳輸,而HTTP是應用層協議,主要解決如何包裝數據。
a)SOCKET連接與TCP/IP連接?
創建Socket連接時,可以指定使用的傳輸層協議,Socket可以支持不同的傳輸層協議(TCP或UDP),當使用TCP協議進行連接時,該Socket連接就是一個TCP連接。
socket則是對TCP/IP協議的封裝和應用(程序員層面上)。也可以說,TPC/IP協議是傳輸層協議,主要解決數據 如何在網絡中傳輸,而HTTP是應用層協議,主要解決如何包裝數據。關于TCP/IP和HTTP協議的關系,網絡有一段比較容易理解的介紹:
“我們在傳輸數據時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如 果沒有應用層,便無法識別數據內容,如果想要使傳輸的數據有意義,則必須使用到應用層協議,應用層協議有很多,比如HTTP、FTP、TELNET等,也 可以自己定義應用層協議。WEB使用HTTP協議作應用層協議,以封裝HTTP文本信息,然后使用TCP/IP做傳輸層協議將它發到網絡上。”
我們平時說的最多的socket是什么呢,實際上socket是對TCP/IP協議的封裝,Socket本身并不是協議,而是一個調用接口(API),通過Socket,我們才能使用TCP/IP協議。 實際上,Socket跟TCP/IP協議沒有必然的聯系。Socket編程接口在設計的時候,就希望也能適應其他的網絡協議。所以說,Socket的出現 只是使得程序員更方便地使用TCP/IP協議棧而已,是對TCP/IP協議的抽象,從而形成了我們知道的一些最基本的函數接口,比如create、 listen、connect、accept、send、read和write等等。網絡有一段關于socket和TCP/IP協議關系的說法比較容易理解:
“TCP/IP只是一個協議棧,就像操作系統的運行機制一樣,必須要具體實現,同時還要提供對外的操作接口。這個就像操作系統會提供標準的編程接口,比如win32編程接口一樣,TCP/IP也要提供可供程序員做網絡開發所用的接口,這就是Socket編程接口。”
實際上,傳輸層的TCP是基于網絡層的IP協議的,而應用層的HTTP協議又是基于傳輸層的TCP協議的,而Socket本身不算是協議,就像上面所說,它只是提供了一個針對TCP或者UDP編程的接口。socket是對端口通信開發的工具,它要更底層一些.
b)Socket連接與HTTP連接
由于通常情況下Socket連接就是TCP連接,因此Socket連接一旦建立,通信雙方即可開始相互發送數據內容,直到雙方連接斷開。但在實際網絡應用中,客戶端到服務器之間的通信往往需要穿越多個中間節點,例如路由器、網關、防火墻等,大部分防火墻默認會關閉長時間處于非活躍狀態的連接而導致Socket 連接斷連,因此需要通過輪詢告訴網絡,該連接處于活躍狀態。
而HTTP連接使用的是“請求—響應”的方式,不僅在請求時需要先建立連接,而且需要客戶端向服務器發出請求后,服務器端才能回復數據。
很多情況下,需要服務器端主動向客戶端推送數據,保持客戶端與服務器數據的實時與同步。此時若雙方建立的是Socket連接,服務器就可以直接將數據傳送給客戶端;若雙方建立的是HTTP連接,則服務器需要等到客戶端發送一次請求后才能將數據傳回給客戶端,因此,客戶端定時向服務器端發送連接請求,不僅可以保持在線,同時也是在“詢問”服務器是否有新的數據,如果有就將數據傳給客戶端。
http協議是應用層的協義
有個比較形象的描述:HTTP是轎車,提供了封裝或者顯示數據的具體形式;Socket是發動機,提供了網絡通信的能力。
兩個計算機之間的交流無非是兩個端口之間的數據通信,具體的數據會以什么樣的形式展現`是以不同的應用層協議來定義的`如HTTP`FTP`...
DNS:把我們輸入的網絡域名解碼成ip地址(我們會在網頁里鍵入www.baidu.com,但是電腦不會理解這串字符的含義。于是就把這串字符發送給DNS(域名解析系統),系統將地址解析119.75.217.109)
國內通用的DNS114.114.114.114 / 114.114.115.115?Google的DNS 8.8.8.8和8.8.4.4
DNS劫持:當訪問一個域名的時候,需要向DNS服務器發送一條請求IP的請求,如果此請求被釣魚劫持,那么就會返回1個假的IP,進而訪問到假的網站。
cookie/session