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