早知如此絆人心,何如當(dāng)初莫相識(shí)
前言
手機(jī)和手機(jī)之間的通信其實(shí)是手機(jī)之間的進(jìn)程和進(jìn)程之間的通信,所以這一章主要是研究進(jìn)程之間通信的問(wèn)題,在計(jì)算機(jī)網(wǎng)絡(luò)中有一個(gè)重要的問(wèn)題,在進(jìn)行數(shù)據(jù)通信和資源共享的時(shí)候如何來(lái)保證數(shù)據(jù)是準(zhǔn)確的,或者說(shuō)如何在一個(gè)可能會(huì)數(shù)據(jù)丟失的數(shù)據(jù)媒體上可靠的來(lái)傳輸我們的數(shù)據(jù),這個(gè)就是TCP協(xié)議發(fā)揮作用的地方,UDP協(xié)議與TCP協(xié)議相比較就是一個(gè)不太可靠的協(xié)議,那么可能在傳輸對(duì)數(shù)據(jù)準(zhǔn)確性要求不那么高,在傳輸延遲方面要求比較高,通常會(huì)使用UDP協(xié)議,
傳輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時(shí)也是用戶(hù)功能中的最低層,為運(yùn)行在不同主機(jī)上的進(jìn)程之間提供了邏輯通信
輸層提供應(yīng)用進(jìn)程之間的邏輯通信( 即端到端的通信)
傳輸層的功能:
復(fù)用:發(fā)送方不同的應(yīng)用進(jìn)程都可使用同一個(gè)傳輸層協(xié)議傳送數(shù)據(jù)
分用:接收方的傳輸層在剝?nèi)?bào)文的首部后能夠把這些數(shù)據(jù)正確交付到目的應(yīng)用進(jìn)程
傳輸層還要對(duì)收到的報(bào)文進(jìn)行差錯(cuò)檢測(cè)(首部和數(shù)據(jù)部分)
提供兩種不同的傳輸協(xié)議,即面向連接的TCP和無(wú)連接的UDP
向高層用戶(hù)屏蔽低層網(wǎng)絡(luò)核心的細(xì)節(jié)(如網(wǎng)絡(luò)拓?fù)洹⒙酚蓞f(xié)議等,使應(yīng)用進(jìn)程好像在兩個(gè)傳輸層實(shí)體之間有一條端到端的邏輯通信信道
復(fù)用是指發(fā)送方不同的用戶(hù)進(jìn)程它們都可以使用傳輸層的協(xié)議來(lái)傳送數(shù)據(jù),而這個(gè)分用是指接收方傳輸層在剝?nèi)?bào)文的首部之后能夠送給正確的進(jìn)程,傳輸層的轉(zhuǎn)送單元報(bào)文段。我們之前學(xué)過(guò)的網(wǎng)絡(luò)層有一個(gè)首部校驗(yàn)和但是只是校驗(yàn)頭部,但是沒(méi)有校驗(yàn)數(shù)據(jù)部分,因此需要這個(gè)傳輸層來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)的檢錯(cuò),因?yàn)榫W(wǎng)絡(luò)層的數(shù)據(jù)部分就是傳輸層的報(bào)文段,如果傳輸層對(duì)這個(gè)報(bào)文段進(jìn)行了差錯(cuò)檢測(cè)那么網(wǎng)絡(luò)層就不需再進(jìn)行差錯(cuò)檢測(cè)了,就是需要檢測(cè)IP數(shù)據(jù)報(bào)的頭部而不需要檢測(cè)數(shù)據(jù)部分,那么可以看出傳輸層和網(wǎng)絡(luò)層一起就可以實(shí)現(xiàn)一個(gè)可靠傳輸?shù)倪^(guò)程,當(dāng)然這個(gè)傳輸層不一定會(huì)實(shí)現(xiàn)一個(gè)可靠傳輸?shù)?,這是因?yàn)閭鬏攲佑袃蓚€(gè)協(xié)議,一個(gè)叫做TCP一個(gè)叫做UDP,.
傳輸層的尋址與端口:
端口號(hào)的作用:端口可以標(biāo)識(shí)主機(jī)中的應(yīng)用進(jìn)程,讓?xiě)?yīng)用層的各種應(yīng)用進(jìn)程將其數(shù)據(jù)通過(guò)端口向下交付給傳輸層,以及讓傳輸層知道應(yīng)當(dāng)將其報(bào)文段中的數(shù)據(jù)向上通過(guò)端口交付給應(yīng)用層相應(yīng)的進(jìn)程,端口號(hào)只有本地作用,在因特網(wǎng)中不同計(jì)算機(jī)的相同端口是沒(méi)有聯(lián)系的。
軟件端口和硬件端口:軟件端口: 協(xié)議棧層間的抽象的協(xié)議端口,是應(yīng)用層的各種協(xié)議進(jìn)程與傳輸 實(shí)體進(jìn)行層間交互的一種地址,硬件端口: 不同硬件沒(méi)備進(jìn)行交互的接口,傳輸層使用的是軟件端口。
端口號(hào)分為服務(wù)端使用的端口號(hào),客戶(hù)端使用的端口號(hào),
之前我們說(shuō)過(guò)傳輸層有一個(gè)功能就是復(fù)用和分用,
根據(jù)IP地址找到他所在的網(wǎng)絡(luò),進(jìn)入他所在的網(wǎng)絡(luò)之后,就要靠他的MAC地址再定位到具體哪一個(gè)主機(jī),找到了主機(jī)這個(gè)通信還不算結(jié)束,應(yīng)該要找到這個(gè)主機(jī)中接收這個(gè)數(shù)據(jù)的進(jìn)程,因此就涉及到傳輸層的問(wèn)題,用一個(gè)端口指明一個(gè)具體的應(yīng)用進(jìn)程,
客戶(hù)端使用的端口號(hào)只有再使用的時(shí)候才會(huì)給它分配一個(gè),而且是主機(jī)中的操作系統(tǒng)給它隨機(jī)分的,這個(gè)進(jìn)程只要一結(jié)束,這個(gè)端口號(hào)就可以分給一個(gè)新的進(jìn)程,所以這個(gè)端口號(hào)是可以循環(huán)利用,是可以動(dòng)態(tài)選擇的,又稱(chēng)短暫端口號(hào)(也稱(chēng)臨時(shí)端口): 這類(lèi)端口號(hào)僅在客戶(hù)進(jìn)程運(yùn)行時(shí)才動(dòng)態(tài)地選擇
通信結(jié)束后,剛用過(guò)的客戶(hù)端口號(hào)就 不復(fù)存在,從而這個(gè)口號(hào)就可供其他客戶(hù)進(jìn)程使用。
套接字:IP地址來(lái)標(biāo)識(shí)和區(qū)別不同的主機(jī),端口號(hào)來(lái)標(biāo)識(shí)和區(qū)分一臺(tái)主機(jī)中的不同應(yīng)用進(jìn)程
在網(wǎng)絡(luò)中采用發(fā)送方和接收方的套接字組合來(lái)識(shí)別端點(diǎn)(主機(jī)號(hào)IP地址,端口號(hào)),唯一的識(shí)別網(wǎng)絡(luò)中的一臺(tái)主機(jī)和其上的一個(gè)進(jìn)程,實(shí)際上是一個(gè)通信端點(diǎn)。
面向連接和無(wú)連接服務(wù):
面向連接服務(wù):在通信雙方進(jìn)行通信之前,必須先建立連接,在通信過(guò)程中,整個(gè)連接的情況一直被實(shí)時(shí)地監(jiān)控和管理,通信結(jié)束后,應(yīng)該釋放這個(gè)連接
無(wú)連接服務(wù):兩個(gè)實(shí)休之間的通信不需要先建立好連接,需要通信時(shí),直接將信息發(fā)送到“網(wǎng)絡(luò)”中,讓該信息的傳送在網(wǎng)上盡力而為地往目的地傳送,
TCP/IP協(xié)議族的傳輸協(xié)議
面向連接的傳輸控制協(xié)議(TCP ), 采用TCP時(shí),傳輸層向上提供的是一條全雙工的可靠邏輯信道
無(wú)連接的用戶(hù)數(shù)據(jù)報(bào)協(xié)議(UDP): 采用UDP時(shí),傳輸層向上提供的是一不可靠的邏輯信道
TCP/IP協(xié)議
TCP提供面向連接的可靠傳輸服務(wù),增加了許多開(kāi)銷(xiāo),如確認(rèn)、流量控制、計(jì)時(shí)器及連接管理等
TCP主要適用于可靠性更重要的場(chǎng)合,如文件傳輸協(xié)議(FTP )超文本傳輸協(xié)議(HTTP )、遠(yuǎn)程登錄(TELNET)等
UDP協(xié)議
在IP之上僅提供兩個(gè)附加服務(wù):多路復(fù)用和對(duì)數(shù)據(jù)的錯(cuò)誤檢查,遠(yuǎn)程主機(jī)的傳輸層收到UDP報(bào)文后,不需要給出任何確認(rèn)
遠(yuǎn)程主機(jī)的傳輸層收到UDP報(bào)文后,不需要給出任何的確定。
UDP簡(jiǎn)單,執(zhí)行速度比較快、實(shí)時(shí)性好
UDP的應(yīng)用有: 小文件傳送協(xié)議(TFTP)。DNS.SNMP和實(shí)時(shí)傳輸協(xié)議( RTP)
網(wǎng)絡(luò)層若是采用虛電路方式,則無(wú)法提供無(wú)連接服務(wù),而傳輸層采用TCP不影響網(wǎng)絡(luò)層提供無(wú)連接服務(wù),
根據(jù)IP地址可以找到主機(jī),根據(jù)端口號(hào)可以找到主機(jī)具體的進(jìn)程。
UDP數(shù)據(jù)報(bào):
UDP實(shí)現(xiàn)了傳輸協(xié)議能夠做的最少工作,在IP的數(shù)據(jù)報(bào)服務(wù)之上增加了兩個(gè)最基本的服務(wù):復(fù)用和分用以及差錯(cuò)檢測(cè)。
UDP優(yōu)點(diǎn):UDP無(wú)須建立連接,不會(huì)有建立連接的時(shí)廷。無(wú)連接狀態(tài) UDP不維護(hù)連接狀態(tài),應(yīng)用服務(wù)器使用UDP時(shí)。一般都能支持更多的活動(dòng)客戶(hù)機(jī),分組首部開(kāi)銷(xiāo)小。
特點(diǎn)
UDP常用于一次性傳輸數(shù)少數(shù)據(jù)的
UDP提供最大努力的交付,即不保證可靠交付,所有維護(hù)傳輸可靠性的工作需要用戶(hù)在應(yīng)用層來(lái)完成,UDP是面向報(bào)文的,報(bào)文是UDP數(shù)據(jù)報(bào)處理的最小單位
UDP的首部格式
源端口 : 源端口號(hào)。在需要對(duì)方回信時(shí)選用,不需要時(shí)可用全0
目的端口 : 這在終點(diǎn)交付報(bào)文時(shí)必須使用到,
長(zhǎng)度: UDP數(shù)據(jù)報(bào)的長(zhǎng)度(包括首部和數(shù)據(jù) )其最小值是8(僅有首部)
校驗(yàn)和:檢測(cè)UDP數(shù)據(jù)報(bào)在傳輸中是否有錯(cuò)。有錯(cuò)就丟棄,是可選的,當(dāng)源主機(jī) 不想計(jì)算校驗(yàn)和時(shí),則直接令該字段為全0
收到數(shù)據(jù)報(bào):根據(jù)首部中的目的端口,把UDP數(shù)據(jù)報(bào)通過(guò)相應(yīng)的端口交給應(yīng)用進(jìn)程,如果接收方UDP發(fā)現(xiàn)收到的報(bào)文中的目的端口號(hào)不正確,丟棄該報(bào)文,并由ICMP發(fā)送“端口不可達(dá)”差錯(cuò)報(bào)文給發(fā)送方
UDP校驗(yàn):
UDP的校驗(yàn)和只檢查首部和數(shù)據(jù)部分
校驗(yàn)時(shí),若UDP數(shù)據(jù)報(bào)部分的長(zhǎng)度不是偶數(shù)個(gè)字節(jié),則需填入一個(gè)全0字節(jié)
如果UDP校驗(yàn)和校驗(yàn)出UDP數(shù)據(jù)報(bào)是錯(cuò)誤的,那么可以,丟棄,也可以交付給上層,但是需要附上錯(cuò)誤報(bào)告,通過(guò)偽首部,不僅可以檢查源端口號(hào)。目的端口號(hào)和UDP用戶(hù)數(shù)據(jù)報(bào)的數(shù)據(jù)部分,還可以檢查IP數(shù)據(jù)報(bào)的源IP地址和目的地址,檢錯(cuò)能力并不強(qiáng)
網(wǎng)絡(luò)層是不可靠交付,若是使用UDP也是不可靠的交付,那么就只有應(yīng)用層來(lái)保證可靠,以及順序的交付,
面向報(bào)文的意思就是,首先一個(gè)應(yīng)用層的程序會(huì)產(chǎn)生一個(gè)應(yīng)用層的報(bào)文,應(yīng)用層報(bào)文就作為應(yīng)用層的傳輸單元往下傳輸,根據(jù)不同的協(xié)議加上不同的首部,所謂面向報(bào)文就是對(duì)于這個(gè)報(bào)文的長(zhǎng)度大小是不做改變的,也就是應(yīng)用層給UDP多長(zhǎng)的報(bào)文,UDP就照舊發(fā)送,即一次發(fā)一個(gè)完整報(bào)文,
無(wú)擁塞控制有時(shí)也是很有用的,比如視頻通話(huà),盡管丟失一些畫(huà)面,也是無(wú)傷大雅,
注意這個(gè)數(shù)據(jù)字段是可以為零的,所以這個(gè)UDP的數(shù)據(jù)報(bào)最少是8B,源端口號(hào)是可有可無(wú)的,若是我發(fā)送的數(shù)據(jù)報(bào)我希望收到對(duì)方的回復(fù),那么這個(gè)源端口號(hào)我就希望填上,目的端口號(hào)是一定要存在的,UDP長(zhǎng)度是整個(gè)用戶(hù)數(shù)據(jù)報(bào)的長(zhǎng)度,檢驗(yàn)和也就是包括首部字段和數(shù)據(jù)字段是否是發(fā)送錯(cuò)誤了,若是發(fā)生錯(cuò)誤了也就會(huì)把這個(gè)UDP用戶(hù)數(shù)據(jù)報(bào)丟棄,那還有一種出錯(cuò)的情況就是我們?cè)诜钟玫臅r(shí)候,也就是網(wǎng)絡(luò)層交給用戶(hù)層的數(shù)據(jù)報(bào),這些數(shù)據(jù)報(bào)去找各自所對(duì)應(yīng)的用戶(hù)進(jìn)程,也就是根據(jù)端口號(hào)來(lái)找,若是找不到進(jìn)程,就會(huì)把整個(gè)數(shù)據(jù)報(bào)丟棄
發(fā)送端和接收端在校驗(yàn)這個(gè)數(shù)據(jù)和首部有沒(méi)有出錯(cuò)的時(shí)候,才會(huì)出現(xiàn)這個(gè)偽首部,在傳輸?shù)倪^(guò)程中這個(gè)偽首部自始至終都是不會(huì)出現(xiàn)的,
第三步中,若是每一個(gè)橫條都是可以滿(mǎn)足4B的話(huà),就不需要填充,
第四步也就是右邊的這種方式,
TCP協(xié)議的特點(diǎn):
TCP是在不可靠的IP層之上實(shí)現(xiàn)的可靠的數(shù)據(jù)傳輸協(xié)議,它主要解決傳輸?shù)目煽?、有序?無(wú)丟失和不重復(fù)問(wèn)題
特點(diǎn):
TCP是面向連接的傳輸層協(xié)議
每條TCP連接只能有兩個(gè)端點(diǎn),每條TCP連接只能是點(diǎn)對(duì)點(diǎn)的(一對(duì)一)
TCP提供可靠的交付服務(wù),保證傳送的數(shù)據(jù)無(wú)差錯(cuò)、不丟失、不重復(fù)且有序
TCP提供全雙工通信,允許通信雙方的應(yīng)用進(jìn)程在任何時(shí)候都能發(fā)送數(shù)據(jù),為此TCP連接的兩端都設(shè)有發(fā)送緩存和接收緩存,用來(lái)臨時(shí)存放雙向通信的數(shù)據(jù)
TCP是面向字節(jié)流的
TCP報(bào)文段:
TCP傳送的數(shù)據(jù)單元稱(chēng)為報(bào)文段
作用 運(yùn)載數(shù)據(jù),建立連接、釋放連接和應(yīng)答
所謂面向連接就是在傳輸數(shù)據(jù)之前要先建立好一個(gè)TCP連接,再傳送完數(shù)據(jù)之后在釋放這個(gè)已經(jīng)建立的連接,將這個(gè)數(shù)據(jù)報(bào)加上各個(gè)層次的首部之后,放在鏈路上傳輸,然后在接收端進(jìn)行一步又一步的解封裝,這個(gè)是一個(gè)完整的物理連接,但是TCP好像是建立了一種點(diǎn)對(duì)點(diǎn)的連接,因此我們說(shuō)是一種虛連接,TCP是沒(méi)有辦法應(yīng)用于廣播或者多播的方式,
面向字節(jié)流的含義就是雖然應(yīng)用進(jìn)程和TCP的交互每一次都是發(fā)送一個(gè)數(shù)據(jù)塊,這個(gè)數(shù)據(jù)塊的大小可以是不一樣的,但是TCP會(huì)把這個(gè)應(yīng)用程序交下來(lái)的數(shù)據(jù)看作是一連串的無(wú)結(jié)構(gòu)的字節(jié)流,
TCP是面向字節(jié)的。對(duì)每個(gè)字節(jié)進(jìn)行編號(hào),但并不是接收到每個(gè)字節(jié)都要發(fā)回確認(rèn),而是在發(fā)送一個(gè)報(bào)文段的字節(jié)后才發(fā)回一個(gè)確認(rèn),所以TCP采用的是對(duì)報(bào)文段的確認(rèn)機(jī)制。
取123字節(jié)組成一個(gè)TCP的報(bào)文段,然后這個(gè)報(bào)文段加上TCP的頭部,然后形成一個(gè)完整的報(bào)文段放在鏈路上進(jìn)行傳輸,當(dāng)然所攜帶的字節(jié)的個(gè)數(shù)是不定的,有很多的因素,
TCP報(bào)文段在首部除了有20B字節(jié)的固定首部之外,還有選項(xiàng),一個(gè)長(zhǎng)度可變的字段,TCP有強(qiáng)迫癥想要這個(gè)首部是4字節(jié)的整數(shù)倍,也就是4N字節(jié),所以需要一個(gè)填充字段來(lái)進(jìn)行補(bǔ)齊,
就像上上圖中序號(hào)是1,而下圖中就是11,
只有收到一個(gè)確認(rèn)之后才會(huì)發(fā)送一個(gè)新的報(bào)文段,確認(rèn)號(hào)字段上圖就應(yīng)該是4,
這個(gè)首部加了這個(gè)選項(xiàng)字段,這個(gè)數(shù)據(jù)部分就不知道從哪里開(kāi)始的,所以就需要一個(gè)數(shù)據(jù)偏移字段來(lái)規(guī)定首部有多長(zhǎng)
本來(lái)發(fā)送方發(fā)送的好好的,突然接受方說(shuō)不能接收文件了,說(shuō)你趕快停止,發(fā)送方收到這個(gè)一個(gè)信息之后,它就應(yīng)該叫停,發(fā)送方的叫停一定是要輸入一些命令,這些命令的體現(xiàn)就是新加入了一些數(shù)據(jù),這些數(shù)據(jù)就會(huì)進(jìn)入這個(gè)TCP緩存中,這個(gè)時(shí)候使得它的URG等于1,就說(shuō)明這是一個(gè)緊急的數(shù)據(jù),緊急的報(bào)文段,就應(yīng)該趕緊發(fā)送,而不應(yīng)該在緩存中排隊(duì),
PUSH主要是接受方進(jìn)行的一個(gè)緊急處理,也就是若是TCP緩存中若是某一個(gè)報(bào)文段push==1需要趕緊的交付給應(yīng)用層上面的進(jìn)程,
這個(gè)窗口字段也就是可以容納的最大的字節(jié)流,或者說(shuō)數(shù)據(jù)量是多少,根據(jù)接收方的窗口大小來(lái)設(shè)置發(fā)送方的發(fā)送緩存。
在UDP中協(xié)議字段是17而TCP中是6,
緊急指針就是告訴緊急數(shù)據(jù)的位置以及它總共占的字節(jié)數(shù),
總結(jié):
源端口和目的端口字段:各占2B,端口是運(yùn)輸層與應(yīng)用層的服務(wù)接口,運(yùn)輸層的復(fù)用和分用功能都要通過(guò)端口實(shí)現(xiàn)
序號(hào)字段:占4B,TCP是面向字節(jié)流的(即TCP傳送時(shí)是逐個(gè)字節(jié)傳送的),所以TCP 連接傳送的數(shù)據(jù)流中的每個(gè)字節(jié)都編上一個(gè)序號(hào),序號(hào)字段的值指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)
確認(rèn)號(hào)字段:占4B,是期望收到對(duì)方的下一個(gè)報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)
數(shù)據(jù)偏移(即首部長(zhǎng)度):占4位,它指出TCP報(bào)文段的數(shù)據(jù)起始處距離TCP報(bào)文段的起始處有多遠(yuǎn)
保留字段: 占6位,保留為今后使用
緊急位URG:URG= 1時(shí),表明緊急指針字段有效。它告訴系統(tǒng)報(bào)文段中有緊急數(shù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級(jí)的數(shù)據(jù))
確認(rèn)位ACK:ACK=1時(shí)確認(rèn)號(hào)字段才有效,ACK = 0時(shí),確認(rèn)號(hào)無(wú)效,tcp規(guī)定,在連接建立后所有傳送的報(bào)文都必須把a(bǔ)ck置1
推送位PSH( Push :接收TCP收到PSH=1的報(bào)文段,就盡快地交付給接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿(mǎn)后再向上交付
復(fù)位位RST(Reset)RST=1時(shí),表明TCP連接中出現(xiàn)嚴(yán)重差錯(cuò)( 如主機(jī)潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接
同步位SYN:SYN=1表示這是一個(gè)連接請(qǐng)求或連接接收?qǐng)?bào)文
終止位FIN ( Finish ):用來(lái)釋放一個(gè)連接。FIN= 1表明此報(bào)文段的發(fā)送方的數(shù)據(jù)已發(fā)送完畢,并要求釋放傳輸連接
窗口字段:占2B,表示允許對(duì)方發(fā)送的數(shù)據(jù)量,單位為字節(jié)
校驗(yàn)和:占2B,校驗(yàn)和字段檢險(xiǎn)的范圍包括首部和數(shù)據(jù)兩部分
緊急指針字段:占16位,指出在本報(bào)文段中緊急數(shù)據(jù)共有多少字節(jié)(緊急數(shù)據(jù)放在本報(bào)文段數(shù)據(jù)的最前面)
選項(xiàng)字段:長(zhǎng)度可變,TCP最初只規(guī)定了一種選項(xiàng),即最大報(bào)文段長(zhǎng)度
填充字段:使整個(gè)首部長(zhǎng)度是4B的整數(shù)倍
TCP連接的管理就是使運(yùn)輸連接的建立和釋放都能正微進(jìn)行
連接階段:連接建立,數(shù)據(jù)傳送,連接釋放
TCP連接建立時(shí)面對(duì)的問(wèn)題:要使每一方都能夠確知對(duì)方的存在,要允許雙方協(xié)商一些參數(shù)(如最大窗口值、是否使用窗口擴(kuò)大選項(xiàng)、時(shí)間戳選項(xiàng)及服務(wù)質(zhì)量等了),能夠?qū)\(yùn)輸實(shí)體資源(如存大小,連接表中的項(xiàng)目等)進(jìn)行分配
連接的建立(三次握手):1,客戶(hù)機(jī)的TCP首先向服務(wù)器的TCP發(fā)送一個(gè)連接請(qǐng)求報(bào)文段SYN=1,seg=X。2,服務(wù)器的TCP收到連接請(qǐng)求報(bào)文段后,如同意建立連接,就向客戶(hù)機(jī)發(fā)回確認(rèn),并為該TCP連接分配TCP緩存和變量SYN=1,ACK =1,ack= X+1,seq = y。3,當(dāng)客戶(hù)機(jī)收到確認(rèn)報(bào)文段后,還要向服務(wù)器給出確認(rèn),并且也要給該連接分配緩存和變量ACK=1,seq = X+1,ack = y+1
連接的釋放( 四次揮手 ):1,客戶(hù)機(jī)向其TCP發(fā)送一個(gè)連接釋放報(bào)文段,并停止發(fā)送數(shù)據(jù),主動(dòng)關(guān)閉TCP連接FIN = 1,seq = U。2,服務(wù)器收到連接釋放報(bào)文段后即發(fā)出確認(rèn)ACK =1,seq = V,ack=u+1,3,服務(wù)器通知客戶(hù)端TCP穿放連接,FIN = 1,ACK = 1,seg = w,ack = u+l。4,客戶(hù)機(jī)受到連接釋放報(bào)文后,發(fā)出確認(rèn)ACK =1,seq = u+1,ack = w+1
無(wú)應(yīng)用層數(shù)據(jù)意思就是無(wú)數(shù)據(jù)部分,只是一個(gè)連接請(qǐng)求的作用,
這個(gè)seq就是序號(hào)位占32bit,這個(gè)時(shí)候的確定位是沒(méi)有意義的,
兩者都是可以發(fā)送或接收的話(huà),那么每一方都是有兩個(gè)緩存,發(fā)送和接收的緩存,接下來(lái)這個(gè)服務(wù)器端就要為接下來(lái)的數(shù)據(jù)通信做好準(zhǔn)備,也就是分配好一個(gè)緩存以及相應(yīng)的變量,并且向客戶(hù)端發(fā)一個(gè)確認(rèn)的報(bào)文段,就是告訴它,已經(jīng)收到你的報(bào)文請(qǐng)求了,允許發(fā)送端發(fā)送數(shù)據(jù)了,注意確認(rèn)報(bào)文段依然是沒(méi)有數(shù)據(jù)部分的,注意有了大寫(xiě)的ACK就一定要有小寫(xiě)的ACK,
并且可以看到在第二步和第三步服務(wù)器端和客戶(hù)端分別為T(mén)CP過(guò)程分配了緩存和變量,并且第三次的序號(hào)位是為x+1因?yàn)榈谝徊降臅r(shí)候是發(fā)送了一個(gè)x,
SYN洪泛攻由發(fā)生在OSI第四層,這種方式利用TCP協(xié)議的特性,就是三次握手
攻擊者發(fā)送TCP SYN,SYN是TCP三次握手中的第一個(gè)數(shù)據(jù)包,而當(dāng)服務(wù)器返回ACK后,該攻擊者就不對(duì)其進(jìn)行再確認(rèn),那這個(gè)TCP連接就處于掛起狀態(tài),也就是所謂的半連接狀態(tài),服務(wù)收不到再確認(rèn)的話(huà),還會(huì)重復(fù)發(fā)送ACK給攻擊者
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-707392.html
連接釋放的報(bào)文段中有哪些比較特別的字段,因?yàn)檫@個(gè)時(shí)候是要請(qǐng)求釋放這個(gè)連接,F(xiàn)IN結(jié)束位這個(gè)FIN就應(yīng)該標(biāo)為1了,seq就是指這樣一個(gè)報(bào)文段的第一個(gè)字節(jié)的序號(hào),由于這樣一個(gè)報(bào)文段都是沒(méi)有數(shù)據(jù)的,所以這樣一個(gè)序號(hào)也能標(biāo)記這樣一個(gè)報(bào)文段,
所謂的半關(guān)閉就是指客戶(hù)停止了發(fā)送數(shù)據(jù),而服務(wù)器依然是可以發(fā)送數(shù)據(jù),
主機(jī)對(duì)第二步中的這個(gè)也不用給與回復(fù),只需要等待服務(wù)器告訴他也結(jié)束就可以了,
注意第二步和第三步的確認(rèn)號(hào)是一樣的,因?yàn)榭蛻?hù)并沒(méi)有發(fā)送數(shù)據(jù),
若是第三步的時(shí)候這個(gè)丟失了,客戶(hù)就一直收不到第三個(gè)報(bào)文段,就會(huì)一直重發(fā),B就沒(méi)有辦法進(jìn)入關(guān)閉狀態(tài),所以需要一個(gè)AMSL時(shí)間,
有大寫(xiě)的ACK一定有小寫(xiě)的ack,而建立和釋放的第一步都是沒(méi)有ACK的。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-707392.html
到了這里,關(guān)于計(jì)算機(jī)網(wǎng)絡(luò)第五章——傳輸層(上)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!