详解TCP协议的服务特点以及连接建立与终止的过程(俗称三次握手四次挥手)
轉(zhuǎn)載請(qǐng)附本文的鏈接地址:http://blog.csdn.net/sahadev_/article/details/50780825?,謝謝。
tcp/ip技術(shù)常常會(huì)在我們面試的時(shí)候出現(xiàn),很多公司也要求需要掌握tcp/ip,socket等,所以掌握這項(xiàng)技術(shù)會(huì)為我們面試的時(shí)候加分。
好,今天我就簡單的介紹一下tcp技術(shù):
首先說一下tcp位于運(yùn)輸層,現(xiàn)在網(wǎng)絡(luò)被分為了5層,由上往下說:
應(yīng)用層,運(yùn)輸層,網(wǎng)絡(luò)層,鏈路層,物理層。
應(yīng)用層:就是我們使用的http技術(shù)或者ftp協(xié)議包裝了我們要傳輸?shù)臄?shù)據(jù)。
運(yùn)輸層:它會(huì)將應(yīng)用層的數(shù)據(jù)包裝發(fā)送給網(wǎng)絡(luò)層,它為應(yīng)用層提供了各種各樣的傳輸方式。例如tcp提供了可靠的傳輸?shù)膫鬏敿夹g(shù),就是由運(yùn)輸層來實(shí)現(xiàn)的。
網(wǎng)絡(luò)層:對(duì)運(yùn)輸層的數(shù)據(jù)進(jìn)一步的包裝,并將上層數(shù)據(jù)包發(fā)往目的端。例如我們通常所熟悉的ip協(xié)議就位于這一層。
鏈路層:這一層為IP發(fā)送和接收數(shù)據(jù)報(bào),通常包括操作系統(tǒng)中的設(shè)備驅(qū)動(dòng)程序和計(jì)算機(jī)中對(duì)應(yīng)的網(wǎng)絡(luò)接口卡,他們一起處理與電纜的物理接口細(xì)節(jié)。
物理層:就是我們的電話線,光纜,wifi之類的。
簡單介紹了下網(wǎng)絡(luò)協(xié)議的分層,回來說說tcp協(xié)議的特點(diǎn):
·應(yīng)用數(shù)據(jù)被分割成TCP認(rèn)為最適合發(fā)送的數(shù)據(jù)塊,由TCP傳遞給IP的信息單位成為報(bào)文段或段。
·當(dāng)TCP發(fā)出一個(gè)段后,它啟動(dòng)一個(gè)定時(shí)器,等待目的端確認(rèn)收到這個(gè)報(bào)文段。如果不能及時(shí)收到一個(gè)確認(rèn),將重發(fā)這個(gè)報(bào)文段。
·當(dāng)TCP收到法子TCP鏈接另一端的數(shù)據(jù),它將發(fā)送一個(gè)確認(rèn),這個(gè)確認(rèn)不是立即發(fā)送,通常將推遲幾分之一秒。
·TCP將保持它首部和數(shù)據(jù)的檢驗(yàn)和,這是一個(gè)端到端的檢驗(yàn)和,目的是檢測數(shù)據(jù)在傳送過程中的任何變化。如果收到段的檢驗(yàn)和有差錯(cuò),TCP將丟棄這個(gè)報(bào)文段和不確認(rèn)收到此報(bào)文段(希望發(fā)送端超時(shí)重發(fā))。
·既然TCP報(bào)文段作為IP數(shù)據(jù)報(bào)來傳輸,而IP數(shù)據(jù)報(bào)的到達(dá)可能會(huì)失序,因此TCP報(bào)文段的到達(dá)也可能會(huì)失序。如果必要,TCP將對(duì)收到的數(shù)據(jù)進(jìn)行重新排列,將收到的數(shù)據(jù)以正確的順序交給應(yīng)用層。
·既然IP數(shù)據(jù)報(bào)會(huì)重復(fù)發(fā)送,TCP的接收端必須丟棄重復(fù)的數(shù)據(jù)(因?yàn)闀?huì)超時(shí)重發(fā))
·TCP還能提供流量控制。TCP鏈接的每一方都有固定大小的緩沖控件。TCP的接收端允許另一端發(fā)送接受端緩沖區(qū)所能接納的數(shù)據(jù)。這將防止較快主機(jī)致使較慢主機(jī)的緩沖區(qū)溢出。
通過以上特點(diǎn),TCP會(huì)保證發(fā)送端應(yīng)用層的數(shù)據(jù)正確,準(zhǔn)確,按次序到達(dá)目的端應(yīng)用層。
說完了TCP協(xié)議的特點(diǎn),我們接下來描述一下三次握手與四次揮手,網(wǎng)上的很多文章對(duì)這塊講的不詳細(xì),不是按照專業(yè)詞語來描述的,使我們?nèi)狈?duì)原理的理解。
三次握手過程:
1.客戶端發(fā)送一個(gè)SYN段(SYNchronous,TCP首部中同步序號(hào)標(biāo)志)指明將要鏈接的服務(wù)器接口,段中包含初始序號(hào)ISN(Initial Sequence Number 初始序號(hào))。
2.服務(wù)端發(fā)回SYN段作為應(yīng)答,其中包含服務(wù)端的初始序號(hào)以及將確認(rèn)序號(hào),確認(rèn)序號(hào)設(shè)置為客戶的ISN值加1,以對(duì)客戶的SYN報(bào)文段進(jìn)行確認(rèn)。
3.客戶端必須將確認(rèn)序號(hào)設(shè)置為服務(wù)器的ISN值加1并發(fā)送給服務(wù)端,以對(duì)服務(wù)端的SYN報(bào)文段進(jìn)行確認(rèn)。
四次揮手過程:
為什么要有4次揮手呢,因?yàn)門CP連接是全雙工的,即數(shù)據(jù)在兩個(gè)方向上能同時(shí)傳遞,所以關(guān)閉的時(shí)候需要先將一邊關(guān)閉,再將另一邊關(guān)閉。
1.當(dāng)一段完成數(shù)據(jù)發(fā)送任務(wù)之后,可以發(fā)送一個(gè)FIN(也就是finish,TCP首部中的結(jié)束標(biāo)志),來終止這個(gè)方向連接。
2.當(dāng)另一端收到FIN之后,它必須通知應(yīng)用層另一端已經(jīng)終止了那個(gè)方向的數(shù)據(jù)傳送。并且它需要發(fā)回一個(gè)ACK(ACKnowledgment TCP首部中的確認(rèn)標(biāo)志)進(jìn)行確認(rèn),確認(rèn)序號(hào)為收到的序號(hào)加1,和SYN一樣,FIN也同樣會(huì)包含一個(gè)序號(hào)。同時(shí)TCP的這一端還向應(yīng)用層傳送一個(gè)文件結(jié)束符。
3.接著這一端,也就是剛開始接收到FIN碼的這一端會(huì)發(fā)送一個(gè)FIN來請(qǐng)求關(guān)閉另一邊的通路。
4.客戶端收到之后必須發(fā)揮一個(gè)確認(rèn),并將確認(rèn)序號(hào)設(shè)置為收到序號(hào)加1。
好了,以上就是關(guān)于TCP的特點(diǎn)以及三次握手與四次揮手的過程,希望大家可以讀懂吸收成為自己的知識(shí),有不明白的歡迎留言討論。
總結(jié)
以上是生活随笔為你收集整理的详解TCP协议的服务特点以及连接建立与终止的过程(俗称三次握手四次挥手)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【JavaWeb】JavaScript基
- 下一篇: 关于answer selection(结