python面試基礎知識 四 網路部分

2021-09-29 20:41:56 字數 3489 閱讀 3904

tcp和udp是osi模型中的運輸層中的協議。

回答這個問題主要從一下幾點來說:

1、是否面向連線

tcp面向連線,udp面向非連線即傳送資料前不需要建立鏈結

2、可靠性

tcp提供可靠的服務(資料傳輸),udp無法保證

3、有序性

tcp有序,udp無序

4、速度

tcp資料傳輸慢,udp資料傳輸快

5、量級

2xx 正常

3xx 重定向

4xx 客戶端出現錯誤

403 許可權被拒絕

404 請求資源不存在

5xx 伺服器異常

503 伺服器暫時處於超負載或正在進行停機維護,無法處理請求

1、三次握手示意圖

第一次握手:客戶端傳送syn包(seq=x)到伺服器,並進入syn_send狀態,等待伺服器確認

第二次握手:伺服器受到syn包,必須確認客戶的syn(ack=x+1),同時自己也傳送乙個syn包(seq=y),即syn+ack包。此時伺服器進入syn_recv狀態

第三次握手:客戶端受到syn+ack包,向伺服器傳送確認包ack(ack=y+1),此包傳送完畢,客戶端和伺服器端進入established狀態,完成三次握手

2、四次揮手示意圖

第一次揮手:client傳送乙個fin,用來關閉client到server的資料傳送,client進入fin_wait_1狀態

第二次揮手:server收到fin後,傳送乙個ack給client,確認序號為收到序號+1,server進入close_wait狀態

第三次揮手:server傳送乙個fin,用來關閉server到client的資料傳送,server進入last_ack狀態

第四次揮手:client收到fin後,client進入time_wait狀態,接著傳送乙個ack給server,確認序號為收到序號+1,server進入closed狀態,完成四次揮手

為了初始化sequence number的初始值

因為伺服器與客戶端是全雙工,即傳送方和接收方都需要fin報文和ack報文

1、確保有足夠的時間讓對方收到ack包

2、避免新舊連線混淆

校驗和

序列號確認應答

超時重傳

連線管理

流量控制

擁塞控制

1.get請求的資料會附在url之後,以?分割url和傳輸資料,引數之間以&相連,post把提交的資料則放置在是http包的包體中。

2.get的長度受限於url的長度,而url的長度限制是特定的瀏覽器和伺服器設定的,理論上get的長度可以無限長。

3.post是沒有大小限制的,http協議規範也沒有進行大小限制,起限制作用的是伺服器的處理程式的處理能力

4.在asp中,服務端獲取get請求引數用request.querystring,獲取post請求引數用request.form。

5.post的安全性要比get的安全性高

http的中文叫做超文字傳輸協議,它負責完成客戶端到服務端的一系列操作,是專門用來傳輸注入html的超**文件等web內容的協議,

它是基於傳輸層的tcp協議的應用層協議

https:https是基於安全套接字的http協議,也可以理解為是http+ssl/tls(數字證書)的組合

http和https的區別:

1、http 的 url 以 http:// 開頭,而 https 的 url 以 https:// 開頭

2、http 是不安全的,而 https 是安全的

3、http 標準埠是 80 ,而 https 的標準埠是 443

4、在 osi 網路模型中,https的加密是在傳輸層完成的,因為ssl是位於傳輸層的,tls的前身是ssl,所以同理

5、http無需認證證書,而https需要認證證書

https是http和ssl組合而成的,在傳輸層使用了ssl進行加密,保證了只有擁有私鑰的才能看到資訊
2.瀏覽器查詢快取

瀏覽器會查詢瀏覽器快取,系統快取,路由快取,如果沒有的話 繼續下一步,如果有的話,直接顯示

是否有這個**的快取

這個**的快取是否過期,具體看cache-control 中快取的有效時間

跟伺服器進行協商是否使用快取,如果上次快取的時候有last-modified 和 etag 字段,本次請求就會加上if-modified-since(上次請求資源的時間)和if-none-match(上次資源的修改時間)

3.通過dns獲取url對應的ip位址

現在本機的host檔案中查詢是否有這個url對應的ip,如果沒有的話,就請求dns進行ip位址的獲取

4.建立tcp鏈結

http在工作之前,需要客戶端和服務端建立鏈結,這個鏈結的建立是通過tcp(三次握手)來完成的,因為http是比tcp更高層的協議,在網路協議的建立中,不談底層談高層都是在耍流氓,所以想要讓http進行工作,需要tcp首先建立鏈結

5.瀏覽器向web伺服器傳送請求

一旦鏈結已經建立,瀏覽器就可以給web伺服器傳送請求命令,比如 : get/deom/hello.jsp http/1.1

6.瀏覽器給web伺服器傳送請求頭資訊

瀏覽器在傳送了請求後,還要給web伺服器請求頭資訊,比如accept-charset(瀏覽器端指定的字符集),最後傳送乙個空的請求頭代表請求傳送完畢,注意:如果是post提交,則會繼續提交請求體

7.web伺服器進行應答

應答的第一部分是http版本號,第二部分是協議的狀態碼,比如:http/1.1 200 ok

8.web伺服器傳送應答頭訊息

web伺服器給瀏覽器傳送應答頭訊息,也就是關於web伺服器自己的資訊,最後傳送乙個空白行代表應答結束

9.web伺服器傳送資料

以應答頭裡面的content-type所描述的格式傳送資料

10.web伺服器關閉鏈結

web伺服器向瀏覽器傳送了應答資料之後,就要關閉tcp鏈結(tcp四次握手關閉鏈結),如果新增了connection:keep-alive,那麼就還會保持鏈結狀態

python面試基礎知識(三) django部分

Linux網路程式設計基礎 01 網路基礎知識

internet 冷戰 的產物 1957年10月和11月,前蘇聯先後有兩顆 sputnik 衛星上天 1958年美國 艾森豪威爾向美國國會提出建立darpa defense advanced research project agency 即國防部高階研究計畫署,簡稱arpa 1968年6月darp...

網路基礎知識入門1 網路分層

按照我們較為常用的五層協議,網路由下向上分為物理層 資料鏈路層 網路層 運輸層和應用層。物理層 物理層主要定義了物理介質的機械 電氣 光電特性。簡單來說,物理層的實質就是規定 介質和訊號 介質就是比如網線 電纜 接線器的尺寸 形狀等物理定義,訊號即定義電纜的電壓範圍和電平表示何意的定義。只有物理層的...

RJSJS Ch5 網路基礎知識

5.網路基礎知識 5.1.網路概述 5.1.1.計算機網路的概念 1 計算機網路的發展 四個階段 具有通訊功能的單機系統 具有通訊功能的多機系統 以共享資源為目的的計算機網路 以區域網及網際網路為支撐環境的分布式計算機系統 2 計算機網路的功能 計算機網路的功能 資料通訊 資源共享 負載均衡 高可靠...