400-650-7353
您所在的位置:首頁(yè) > IT干貨資料 > python > 【Python基礎知識】TCP/IP協(xié)議詳解

【Python基礎知識】TCP/IP協(xié)議詳解

  • 來(lái)源:
  • 2021-08-30 16:36:31
  • 閱讀()
  • 分享
  • 手機端入口

如今,互聯(lián)網(wǎng)一詞已被人們所熟知,它廣泛應用于人類(lèi)生活的各個(gè)方面。但是究其歷史,互聯(lián)網(wǎng)是由1971年的ARPANET發(fā)展而來(lái)的。ARPANET是一個(gè)計算機網(wǎng)絡(luò ),它的出現比互聯(lián)網(wǎng)要早得多。

網(wǎng)絡(luò )中的計算機為了彼此之間進(jìn)行通信形成一個(gè)通信網(wǎng)絡(luò ),就必須首先制定網(wǎng)絡(luò )協(xié)議。早期的計算機網(wǎng)絡(luò ),根據廠(chǎng)商的不同有著(zhù)自己規定的一套協(xié)議,Microsoft、IBM和Apple等公司都有各自的互不兼容的一套網(wǎng)絡(luò )協(xié)議。這就像一群人有的說(shuō)中文,有的說(shuō)英語(yǔ),有的說(shuō)德語(yǔ),說(shuō)同一種語(yǔ)言的人之間可以交流,而說(shuō)不同語(yǔ)言的人之間就難以交流了。

網(wǎng)絡(luò )協(xié)議的不兼容阻礙了互聯(lián)網(wǎng)的發(fā)展。而隨著(zhù)網(wǎng)絡(luò )的發(fā)展,規模和覆蓋面越來(lái)越大,從而形成了統一的標準OSI(開(kāi)放系統互連)。OSI模型從上到下具有7層結構,分別是應用層、表示層、會(huì )話(huà)層、運輸層、網(wǎng)絡(luò )層、數據鏈路層和物理層。其中,應用層定義了應用程序之間通信的協(xié)議,運輸層主要用來(lái)確保端到端的數據通信正常,網(wǎng)絡(luò )層負責在各個(gè)主機之間傳輸數據。

在互聯(lián)網(wǎng)所使用的各種網(wǎng)絡(luò )協(xié)議中,最重要的是TCP和IP協(xié)議。如今人們常說(shuō)的TCP/IP協(xié)議并不一定單指TCP和IP這兩個(gè)具體的協(xié)議,而通常是表示互聯(lián)網(wǎng)所使用的整個(gè)TCP/IP協(xié)議族。

下面介紹一下TCP/IP協(xié)議。

計算機進(jìn)行通信時(shí),類(lèi)似于現實(shí)中的郵政通信,計算機通信的雙方必須知道對方的地址才行。在TCP/IP協(xié)議中,IP地址是互聯(lián)網(wǎng)上每臺計算機的唯一標識。目前,最廣泛采用的是IPv4版本的IP地址,如192.168.100.179。IP地址是采用點(diǎn)分十進(jìn)制的一組數組成的。一般情況下,網(wǎng)絡(luò )上一臺設備只有一個(gè)IP地址,但路由器需要同時(shí)接入到兩個(gè)及以上的網(wǎng)絡(luò ),因此,路由器就會(huì )有兩個(gè)或多個(gè)IP地址。通常計算機中負責IP數據包發(fā)送/接收的硬件設備是網(wǎng)卡,一個(gè)IP地址對應一張網(wǎng)卡,網(wǎng)卡就是計算機的網(wǎng)絡(luò )接口。

一臺計算機通過(guò)計算機網(wǎng)絡(luò )將數據發(fā)送到另一臺計算機,數據是逐層封裝的。在IP層,IP協(xié)議負責將數據從一個(gè)IP地址發(fā)送到另一個(gè)IP地址。首先數據需要按照IP協(xié)議分割成多個(gè)小數據塊,塊長(cháng)度一般為1024字節,這個(gè)小數據塊稱(chēng)為IP數據報。發(fā)送出去的IP包,由于整個(gè)互聯(lián)網(wǎng)的架構非常復雜,兩臺計算機之間經(jīng)常有多條線(xiàn)路,因此,中間的路由器就負責轉發(fā)一個(gè)IP包。IP包的特點(diǎn)是按塊發(fā)送,途經(jīng)多個(gè)路由,但由于路由器的承載能力有限,當大批IP包同時(shí)到達時(shí),就會(huì )因路由器處理不過(guò)來(lái)而丟包。另外,IP包經(jīng)過(guò)多個(gè)路由器的轉發(fā),在路由器中的排隊時(shí)間也不同,因此,到達接收端的順序也不會(huì )完全按照發(fā)送時(shí)的順序。一個(gè)IP包除了包含要傳輸的數據外,還包含源IP地址和目標IP地址。

IP協(xié)議之上的是TCP協(xié)議,TCP稱(chēng)為傳輸控制協(xié)議。TCP協(xié)議在兩臺計算機之間建立的是可靠的連接,因此,TCP報文是按順序處理的。形象地說(shuō),TCP協(xié)議是通過(guò)握手建立連接的,再確保按順序收到下層的每個(gè)IP包,如果IP包丟失了,就向發(fā)送端請求重發(fā)。

應用層上許多常用的應用都是建立在TCP協(xié)議上的,例如,萬(wàn)維網(wǎng)瀏覽器上使用的HTTP協(xié)議,發(fā)送電子郵件的SMTP協(xié)議等。

TCP協(xié)議中設定了端口號,用來(lái)區分主機上的不同通信進(jìn)程。例如,根據IP地址找到目的主機后,IP包需要上傳到TCP層進(jìn)行處理,TCP可以根據端口號來(lái)區分出當前通信的是網(wǎng)頁(yè)瀏覽器還是QQ應用程序,這樣就實(shí)現了進(jìn)程間通信。

對于TCP協(xié)議,要了解它的三次握手和四次揮手。

三次握手過(guò)程如下:

①客戶(hù)端發(fā)送連接請求報文。

②服務(wù)器端接收連接請求后,回復ACK報文。

③客戶(hù)端接收到ACK報文后,也向服務(wù)器端發(fā)送ACK報文。

這樣TCP連接就建立了。

TCP連接的拆除需要發(fā)送四個(gè)包,故稱(chēng)為四次揮手。

四次揮手過(guò)程如下:

①客戶(hù)端發(fā)送一個(gè)FIN,用來(lái)關(guān)閉客戶(hù)端到服務(wù)器端的數據傳送。

②服務(wù)器端收到這個(gè)FIN,它發(fā)回一個(gè)ACK,確認序號為收到的序號加1。與SYN一樣,一個(gè)FIN將占用一個(gè)序號。

③服務(wù)器端關(guān)閉與客戶(hù)端的連接,發(fā)送一個(gè)FIN給客戶(hù)端。

④客戶(hù)端發(fā)回ACK報文確認,并將確認序號設置為收到序號加1。

運輸層協(xié)議除了TCP外,還有UDP。UDP適用于對效率要求相對較高而對準確性要求相對較低的場(chǎng)合,例如,視頻在線(xiàn)點(diǎn)播、網(wǎng)絡(luò )語(yǔ)音通話(huà)等。

了解了TCP/IP協(xié)議的基本概念后,就可以開(kāi)始進(jìn)行網(wǎng)絡(luò )編程了。

文章“【Python基礎知識】TCP/IP協(xié)議詳解”已幫助

更多內容

>>本文地址:http://www.lakeplacidphc.com/zhuanye/2021/69824.html

THE END  

聲明:本站稿件版權均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉載。

1 您的年齡

2 您的學(xué)歷

3 您更想做哪個(gè)方向的工作?

獲取測試結果
  • 大前端大前端
  • 大數據大數據
  • 互聯(lián)網(wǎng)營(yíng)銷(xiāo)互聯(lián)網(wǎng)營(yíng)銷(xiāo)
  • JavaJava
  • Linux云計算Linux
  • Python+人工智能Python
  • 嵌入式物聯(lián)網(wǎng)嵌入式
  • 全域電商運營(yíng)全域電商運營(yíng)
  • 軟件測試軟件測試
  • 室內設計室內設計
  • 平面設計平面設計
  • 電商設計電商設計
  • 網(wǎng)頁(yè)設計網(wǎng)頁(yè)設計
  • 全鏈路UI/UE設計UI設計
  • VR/AR游戲開(kāi)發(fā)VR/AR
  • 網(wǎng)絡(luò )安全網(wǎng)絡(luò )安全
  • 新媒體與短視頻運營(yíng)新媒體
  • 直播帶貨直播帶貨
  • 智能機器人軟件開(kāi)發(fā)智能機器人
 

快速通道fast track

近期開(kāi)班時(shí)間TIME