串口服務(wù)器四問(wèn)四答
問(wèn):什么是ACK?
答:ACK的全稱(chēng)為Acknowledge character,即確認字符,表示接收到的字符無(wú)錯誤。
接收站對所收到的報文進(jìn)行檢查,若未發(fā)現錯誤,便向發(fā)送站發(fā)出確認回答ACK,表明信息已被正確接收,并準備好接收下一份報文。該控制字符可由中心結點(diǎn)發(fā)送,也可由遠地結點(diǎn)發(fā)送。如果發(fā)送方?jīng)]有收到信號,那么發(fā)送方可能會(huì )重發(fā)當前的數據包,也可能停止傳送數據,具體情況取決于所采用的網(wǎng)絡(luò )協(xié)議。
TCP報文格式中的控制位由6個(gè)標志位構成,其中一個(gè)就是ACK,ACK為1表示確認號有效,為0表示報文中不包含確認信息,忽略確認號字段。
問(wèn):什么是三次握手?
答:第一次握手:建立連接時(shí),客戶(hù)端發(fā)送syn包(seq=j)到服務(wù)器,并進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器確認;SYN:同步序列編號(Synchronize Sequence Numbers)。
第二次握手:服務(wù)器收到syn包,必須確認客戶(hù)的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(seq=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)。
第三次握手:客戶(hù)端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認包ACK(ack=k+1),此包發(fā)送完畢,客戶(hù)端和服務(wù)器進(jìn)入ESTABLISHED(TCP連接成功)狀態(tài),完成三次握手。
完成三次握手,客戶(hù)端與服務(wù)器開(kāi)始傳送數據。
問(wèn):為什么需要三次握手?
答:1、為了防止舊的重復連接從而引起連接混亂的問(wèn)題。
在網(wǎng)絡(luò )狀況比較復雜或者網(wǎng)絡(luò )狀況比較差的情況下,發(fā)送方可能會(huì )連續發(fā)送多次建立連接的請求。如果 TCP 握手的次數只有兩次,那么接收方只能選擇接受請求或者拒絕接受請求,但它并不清楚這次的請求是正常的請求,還是由于網(wǎng)絡(luò )環(huán)境問(wèn)題而導致的過(guò)期請求,如果是過(guò)期請求的話(huà)就會(huì )造成錯誤的連接。
2、同步初始化序列化。
TCP 為了保證在不穩定的網(wǎng)絡(luò )環(huán)境中構建一個(gè)穩定的數據連接,它就需要一個(gè)“序列號”字段來(lái)保證自己的穩定性,而這個(gè)序列號的作用就是防止數據包重復發(fā)送,以及有效的解決數據包接收時(shí)順序顛倒的問(wèn)題。
問(wèn):什么是TCP通信?
答:傳輸控制協(xié)議(TCP,Transmission Control Protocol)是為了在不可靠的互聯(lián)網(wǎng)絡(luò )上提供可靠的端到端字節流而專(zhuān)門(mén)設計的一個(gè)傳輸協(xié)議。
因為互聯(lián)網(wǎng)絡(luò )的不同部分可能有截然不同的拓撲結構、帶寬、延遲、數據包大小和其他參數。TCP的設計目標是能夠動(dòng)態(tài)地適應互聯(lián)網(wǎng)絡(luò )的這些特性,而且具備面對各種故障時(shí)的健壯性。
應用層向TCP層發(fā)送用于網(wǎng)間傳輸的、用8位字節表示的數據流,然后TCP把數據流分區成適當長(cháng)度的報文段(通常受該計算機連接的網(wǎng)絡(luò )的數據鏈路層的最大傳輸單元(MTU)的限制)。之后TCP把結果包傳給IP層,由它來(lái)通過(guò)網(wǎng)絡(luò )將包傳送給接收端實(shí)體的TCP層。TCP為了保證不發(fā)生丟包,就給每個(gè)包一個(gè)序號,同時(shí)序號也保證了傳送到接收端實(shí)體的包的按序接收。然后接收端實(shí)體對已成功收到的包發(fā)回一個(gè)相應的確認(ACK);如果發(fā)送端實(shí)體在合理的往返時(shí)延(RTT)內未收到確認,那么對應的數據包就被假設為已丟失將會(huì )被進(jìn)行重傳。TCP用一個(gè)校驗和函數來(lái)檢驗數據是否有錯誤;在發(fā)送和接收時(shí)都要計算校驗和。
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。