面向連線的,可靠的傳輸協議
面向連線:在傳輸資料之前,必須要先在兩個程式之間建立連線
在資料傳輸的時候,必須要保證對方收到了資料
資料傳輸結束之後,要斷開連線
tcp負責資料傳輸ip負責定址
tcp是如何保證傳輸的可靠性的?
1.通過三次握手建立連線
為了準確無誤地將資料送給對方,tcp協議採用三次握手(three-way handshaking)策略。用tcp協議把資料報傳送出去後,tcp不會對傳輸後的情況置之不理,它一定會向對方確認是否成功送達。握手過程中採用tcp的標誌(flag)—-syn(synchronize)和ack(acknowledgement)
第一次握手:建立連線時,客戶端a向服務端b傳送請求報文段,這時首部中的同步位syn =1,同時選擇乙個初始序號seq= x.tcp規定syn=1報文段不能攜帶資料,但是要消耗乙個序號。這時,tcp客戶程序進入syn-sent(同步已傳送)狀態,等待伺服器確認。
第二次握手:伺服器收到請求報文後,如同意連線,則向a傳送確認,同時自己也傳送乙個確認報文段,確認報文段中syn和ack都置1,確認號ack = x+1,同時自己也為自己選擇乙個初始序號seq =y。注意,這個報文段也不能攜帶資料,但同樣要消耗掉乙個序號。這時tcp伺服器程序進入syn-rcvd(同步收到)狀態。
第三次握手:客戶端a收到b的確認後,還要向b給出確認報文段。確認報文段的ack=1,確認號ack =y+1,而自己的序號seq=x+1.此包傳送完畢,客戶端和伺服器進入established(tcp連線成功)狀態,完成三次握手。
完成三次握手,客戶端與伺服器開始傳送資料。
2.資料傳輸過程
資料順序:給每個資料報乙個編號
丟包重傳:對方收到資料報之後必須要給乙個響應資料,如果沒有收到響應資料,就重新傳輸該資料報
重複資料:每個資料報有乙個校驗碼
3.通過四次揮手斷開連線
1)客戶端程序發出連線釋放報文,並且停止傳送資料。釋放資料報文首部,fin=1,其序列號為seq=u(等於前面已經傳送過來的資料的最後乙個位元組的序號加1),此時,客戶端進入fin-wait-1(終止等待1)狀態。 tcp規定,fin報文段即使不攜帶資料,也要消耗乙個序號。
2)伺服器收到連線釋放報文,發出確認報文,ack=1,ack=u+1,並且帶上自己的序列號seq=v,此時,服務端就進入了close-wait(關閉等待)狀態。tcp伺服器通知高層的應用程序,客戶端向伺服器的方向就釋放了,這時候處於半關閉狀態,即客戶端已經沒有資料要傳送了,但是伺服器若傳送資料,客戶端依然要接受。這個狀態還要持續一段時間,也就是整個close-wait狀態持續的時間。
3)客戶端收到伺服器的確認請求後,此時,客戶端就進入fin-wait-2(終止等待2)狀態,等待伺服器傳送連線釋放報文(在這之前還需要接受伺服器傳送的最後的資料)。
4)伺服器將最後的資料傳送完畢後,就向客戶端傳送連線釋放報文,fin=1,ack=u+1,由於在半關閉狀態,伺服器很可能又傳送了一些資料,假定此時的序列號為seq=w,此時,伺服器就進入了last-ack(最後確認)狀態,等待客戶端的確認。
5)客戶端收到伺服器的連線釋放報文後,必須發出確認,ack=1,ack=w+1,而自己的序列號是seq=u+1,此時,客戶端就進入了time-wait(時間等待)狀態。注意此時tcp連線還沒有釋放,必須經過2∗∗msl(最長報文段壽命)的時間後,當客戶端撤銷相應的tcb後,才進入closed狀態。
6)伺服器只要收到了客戶端發出的確認,立即進入closed狀態。同樣,撤銷tcb後,就結束了這次的tcp連線。可以看到,伺服器結束tcp連線的時間要比客戶端早一些。
TCP IP協議如何保證可靠性傳輸
確保傳輸可靠性的方式 tcp協議保證資料傳輸可靠性的方式主要有 校驗和序列號 確認應答 超時重傳 連線管理 流量控制 擁塞控制 應用資料被分割成 tcp 認為最適合傳送的資料塊。tcp 給傳送的每乙個包進行編號,接收方對資料報進行排序,把有序資料傳送給應用層。校驗和 計算方式 在資料傳輸的過程中,將...
TCP 協議如何保證可靠性
tcp 協議保證資料傳輸可靠性的方式主要有 傳送的資料報的二進位制相加然後取反,目的是檢測資料再傳輸過程中的任何變化。如果收到段的檢驗和有差錯,tcp 將丟棄這個報文段和不確認收到此報文段。tcp 給傳送的每乙個包進行編號,這就是序列號。在 tcp 傳輸的過程中,每次接收方收到資料後,都會對傳輸方進...
TCP協議 如何保證傳輸可靠性
tcp協議保證資料傳輸可靠性的方式主要有 校驗和 序列號 確認應答 超時重傳 連線管理 流量控制 擁塞控制 計算方式 在資料傳輸的過程中,將傳送的資料段都當做乙個16位的整數。將這些整數加起來。並且前面的進製不能丟棄,補在後面,最後取反,得到校驗和。傳送方 在傳送資料之前計算檢驗和,並進行校驗和的填...