Python知識總結(jié)
1. 什么是TCP,什么是UDP,他們兩者有什么區(qū)別?
TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。在簡化的計算機網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能。
UDP(User Data Protocol,用戶數(shù)據(jù)報協(xié)議)是與TCP相對應(yīng)的協(xié)議。它是面向非連接的協(xié)議。UDP是OSI參考模型中一種無連接的傳輸層協(xié)議,它主要用于不要求分組順序到達的傳輸中,分組傳輸順序的檢查與排序由應(yīng)用層完成,提供面向事務(wù)的簡單不可靠信息傳送服務(wù)。UDP 協(xié)議基本上是IP協(xié)議與上層協(xié)議的接口。
區(qū)別:
1、TCP是面向連接的,兩者通信需要建立連接,端對端的傳輸。UDP是面向無連接的,發(fā)送數(shù)據(jù)之前不需要建立連接。
2、TCP提供可靠的服務(wù),通過TCP連接傳送的數(shù)據(jù),無差錯,不丟失,不重復,且按序到達;UDP不保證可靠交付。
3、UDP具有較好的實時性,工作效率比TCP高,適用于對高速傳輸和實時性有較高的通信或廣播通信。
4、每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
5、TCP對系統(tǒng)資源要求較多,UDP對系統(tǒng)資源要求較少。
2. TCP的三次握手和四次揮手?
seq是序列號,這是為了連接以后傳送數(shù)據(jù)用的,ack是對收到的數(shù)據(jù)包的確認,值是等待接收的數(shù)據(jù)包的序列號。SYN:同步序列編號(Synchronize Sequence Numbers)。
第一次握手:建立連接時,客戶端發(fā)送syn包(syn=1)到服務(wù)器,并進入SYN_SENT狀態(tài),等待服務(wù)器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。
第二次
第二次握手:服務(wù)器收到syn包,必須確認客戶的SYN(ack=x+1),同時自己也發(fā)送一個SYN包(syn=1),即SYN+ACK包,此時服務(wù)器進入SYN_RECV狀態(tài);
第三次
第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認包ACK(ack=y+1),此包發(fā)送完畢,客戶端和服務(wù)器進入ESTABLISHED(TCP連接成功)狀態(tài),完成三次握手。
1、客戶端進程發(fā)出連接釋放報文,并且停止發(fā)送數(shù)據(jù)。釋放數(shù)據(jù)報文首部,F(xiàn)IN=1,其序列號為seq=u(等于前面已經(jīng)傳送過來的數(shù)據(jù)的最后一個字節(jié)的序號加1),此時,客戶端進入FIN-WAIT-1(終止等待1)狀態(tài)。 TCP規(guī)定,F(xiàn)IN報文段即使不攜帶數(shù)據(jù),也要消耗一個序號。
2、服務(wù)器收到連接釋放報文,發(fā)出確認報文,ACK=1,ack=u+1,并且?guī)献约旱男蛄刑杝eq=v,此時,服務(wù)端就進入了CLOSE-WAIT(關(guān)閉等待)狀態(tài)。TCP服務(wù)器通知高層的應(yīng)用進程,客戶端向服務(wù)器的方向就釋放了,這時候處于半關(guān)閉狀態(tài),即客戶端已經(jīng)沒有數(shù)據(jù)要發(fā)送了,但是服務(wù)器若發(fā)送數(shù)據(jù),客戶端依然要接受。這個狀態(tài)還要持續(xù)一段時間,也就是整個CLOSE-WAIT狀態(tài)持續(xù)的時間。
3、客戶端收到服務(wù)器的確認請求后,此時,客戶端就進入FIN-WAIT-2(終止等待2)狀態(tài),等待服務(wù)器發(fā)送連接釋放報文(在這之前還需要接受服務(wù)器發(fā)送的最后的數(shù)據(jù))。
4、服務(wù)器將最后的數(shù)據(jù)發(fā)送完畢后,就向客戶端發(fā)送連接釋放報文,F(xiàn)IN=1,ack=u+1,由于在半關(guān)閉狀態(tài),服務(wù)器很可能又發(fā)送了一些數(shù)據(jù),假定此時的序列號為seq=w,此時,服務(wù)器就進入了LAST-ACK(最后確認)狀態(tài),等待客戶端的確認。
5、客戶端收到服務(wù)器的連接釋放報文后,必須發(fā)出確認,ACK=1,ack=w+1,而自己的序列號是seq=u+1,此時,客戶端就進入了TIME-WAIT(時間等待)狀態(tài)。注意此時TCP連接還沒有釋放,必須經(jīng)過2*MSL(最長報文段壽命)的時間后,當客戶端撤銷相應(yīng)的TCB后,才進入CLOSED狀態(tài)。
6、服務(wù)器只要收到了客戶端發(fā)出的確認,立即進入CLOSED狀態(tài)。同樣,撤銷TCB后,就結(jié)束了這次的TCP連接??梢钥吹?,服務(wù)器結(jié)束TCP連接的時間要比客戶端早一些。
3. HTTP和HTTPS協(xié)議的不同之處?
l HTTP:是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議,是一個客戶端和服務(wù)器端請求和應(yīng)答的標準(TCP),用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議,它可以使瀏覽器更加高效,使網(wǎng)絡(luò)傳輸減少。
l HTTPS:是以安全為目標的HTTP通道,簡單講是HTTP的安全版,即HTTP下加入SSL層,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細內(nèi)容就需要SSL。
l HTTPS協(xié)議的主要作用可以分為兩種:一種是建立一個信息安全通道,來保證數(shù)據(jù)傳輸?shù)陌踩涣硪环N就是確認網(wǎng)站的真實性。
兩者區(qū)別:
HTTP協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的,也就是明文的,因此使用HTTP協(xié)議傳輸隱私信息非常不安全,為了保證這些隱私數(shù)據(jù)能加密傳輸,于是網(wǎng)景公司設(shè)計了SSL(Secure Sockets Layer)協(xié)議用于對HTTP協(xié)議傳輸?shù)臄?shù)據(jù)進行加密,從而就誕生了HTTPS。
1、http是超文本傳輸協(xié)議,信息是明文傳輸,https則是具有安全性的ssl加密傳輸協(xié)議。
2、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
3、http的連接很簡單,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進行加密傳輸、身份認證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。
4. HTTP八種請求方式
| 方法 | 描述 |
|---|---|
| get | 請求指定的頁面信息。(向服務(wù)器請求指定的資源) |
| head | 類似于get請求,只不過返回的響應(yīng)中沒有具體的內(nèi)容,用于獲取報頭 |
| post | 向指定資源提交數(shù)據(jù)進行處理請求,例如提交表單或者上傳文件。數(shù)據(jù)被包含在請求體中。post請求可能會導致新的資源的建立或已有資源的修改。 |
| put | 向服務(wù)器上傳指定的內(nèi)容 |
| delete | 請求服務(wù)器刪除Request-URL所標識的資源。 |
| connect | HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。 |
| options | 返回服務(wù)器對指定資源數(shù)據(jù)支持的HTTP請求方法,一般用于測試服務(wù)器功能的可用性。 |
| trace | 回顯服務(wù)器收到的請求,主要用于測試或診斷 |
get和post的區(qū)別?
GET提交的數(shù)據(jù)會放在URL之后,以?分隔URL和傳輸數(shù)據(jù),參數(shù)之間以&相連,如https://www.baidu.com/s?ie=UTF-8&wd=wsgi
提交參數(shù)的大小不同。GET產(chǎn)生一個TCP數(shù)據(jù)包;POST產(chǎn)生兩個TCP數(shù)據(jù)包。
安全問題
GET方式提交數(shù)據(jù),會帶來安全問題,因為參數(shù)是裸露在地址欄上,所以不安全。
POST方式參數(shù)在body中,所以安全性較高。(注意:在http協(xié)議下,不管哪種提交方式,都是明碼提交,只要有抓包工具,都能抓取數(shù)據(jù)。)
- 是否瀏覽器可以收藏
GET請求因為參數(shù)在地址欄上,因此可以收藏。而POST請求不行,不能被瀏覽器收藏,因為參數(shù)無法被瀏覽器保存。
5. URI與URL?
URI:(Uniform Resource Identifier),統(tǒng)一資源標識符。HTTP使用URI來傳輸數(shù)據(jù)和建立連接。
URL:(Uniform Resource Location),統(tǒng)一資源定位符。是一種特殊類型的URI,包含了用于查找某個資源的足夠的信息。