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

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

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

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

網(wǎng)絡(luò)中的計(jì)算機(jī)為了彼此之間進(jìn)行通信形成一個(gè)通信網(wǎng)絡(luò),就必須首先制定網(wǎng)絡(luò)協(xié)議。早期的計(jì)算機(jī)網(wǎng)絡(luò),根據(jù)廠商的不同有著自己規(guī)定的一套協(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ā)展。而隨著網(wǎng)絡(luò)的發(fā)展,規(guī)模和覆蓋面越來(lái)越大,從而形成了統(tǒng)一的標(biāo)準(zhǔn)OSI(開(kāi)放系統(tǒng)互連)。OSI模型從上到下具有7層結(jié)構(gòu),分別是應(yīng)用層、表示層、會(huì)話層、運(yùn)輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層。其中,應(yīng)用層定義了應(yīng)用程序之間通信的協(xié)議,運(yùn)輸層主要用來(lái)確保端到端的數(shù)據(jù)通信正常,網(wǎng)絡(luò)層負(fù)責(zé)在各個(gè)主機(jī)之間傳輸數(shù)據(jù)。

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

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

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

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

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

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

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

①客戶(hù)端發(fā)送連接請(qǐng)求報(bào)文。

②服務(wù)器端接收連接請(qǐng)求后,回復(fù)ACK報(bào)文。

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

這樣TCP連接就建立了。

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

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

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

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

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

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

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

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

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

更多內(nèi)容

>>本文地址:http://liujunjsxg.cn/zhuanye/2021/69824.html

THE END  

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

1 您的年齡

2 您的學(xué)歷

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

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

快速通道fast track

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