tcp/ip
(transmission control protocol/internet protocol)即傳輸控制協議/網間協議,定義了主機如何連入網際網路及資料如何再它們之間傳輸的標準
應用層:tftp,http,snmp,ftp,smtp,dns,telnet 等等
傳輸層:tcp,udp
網路層:ip,icmp,ospf,eigrp,igmp
資料鏈路層:slip,cslip,ppp,mtu
[iso分成七層:應用、表示、會話、傳輸、網路、資料鏈路、介面]
建立tcp需要三次握手,斷開連線的話需要四次揮手。
tcp協議三次握手:
《計算機網路》第四版中講「三次握手」的目的是「
為了防止已失效的連線請求報文段突然又傳送到了服務端,因而產生錯誤
」1.客戶端——(syn=1,seq=client_isn)——服務端;
2.服務端——(syn=1,seq=service_isn,ack=client_isn+1)——客戶端
3.客戶端——(syn=0,seq=client_isn+1,ack=service_isn+1)——服務端
斷開連線四次揮手:
1.客戶端向伺服器傳送fin報文:fin=1,序號seq=上乙個最後傳輸的位元組序號+1=u,傳送後,客戶端進入fin-wait-1狀態。
2.伺服器接收到該報文後,傳送乙個確認報文:令ack=1,確認序號ack = u+1,自己的報文序號seq=v,傳送後,伺服器進入 close-wait狀態。
3.此時tcp連線進入連線半關閉狀態,伺服器可能還會向客戶端傳送一些資料。
4.客戶端收到來自伺服器的確認之後,進入fin-wait-2狀態。等待伺服器傳送連線釋放報文。
5.如果伺服器已經沒有要傳送的資料,則釋放tcp連線,向客戶端傳送報文:令fin=1,ack=1,確認號ack =u+1,自己的序號 seq = w(w可能等於v也可能大於v),伺服器進入last-ack狀態。
6.客戶端收到伺服器的連線釋放報文後,對該報文發出確認,令ack=1,確認號ack=w+1,自己的序號seq=u+1,傳送此報文 後,等待2個msl時間後,進入closed狀態。
7.伺服器收到客戶端的確認後,也進入closed狀態並撤銷傳輸控制塊。
客戶端狀態變化:未連線----->syn-send----->established----->fin-wait-1----->fin-wait-2----->time-wait----->closed
伺服器狀態變化:未連線----->syn-rcvd----->established----->close-wait----->last-ack----->closed
socket
socket是在應用層和傳輸層之間的乙個抽象層(是"開啟—讀/寫—關閉"模式的實現),它把tcp/ip層複雜的操作抽象為幾個簡單的介面**用層呼叫已實現程序在網路中通訊。
TCP IP協議 連線建立和終止
tcp是乙個面向連線的協議,所以在連線雙方傳送資料之前,都需要首先建立一條連線。client連線server 當client端呼叫socket函式呼叫時,相當於client端產生了乙個處於closed狀態的套接字。1 第一次握手 client端又呼叫connect函式呼叫,系統為client隨機分配...
TCP IP協議詳解 二 建立和關閉連線
看了酷殼 上的 tcp 的那些事兒 系列文章,有一點很受啟發 鍛鍊一下自己是否使用較少的篇幅將tcp協議講解清楚。一般的同學寫博文,可能像攤大餅一樣,篇幅較多並且羅嗦。我以前寫文章時也是這個習慣,所以希望在以後的博文寫作過程中,盡量使用比較短的篇幅來講完想要講的內容。為了節約你的時間,本片文章主要講...
TCP IP連線建立與斷開
tcp狀態轉移要點 tcp協議規定,對於已經建立的連線,網路雙方要進行四次握手才能成功斷開連線,如果缺少其中某個步驟,將會使連線處於假死狀態,連線本身占用的資源不會被釋放,網路伺服器程式要同時管理大量連線,所以很有必要保證無用連線完全斷開,否則大量僵死的連線會浪費許多伺服器資源,在眾多tcp狀態中,...