?? TCP連接的建立與釋放

計算機網(wǎng)絡分層結構:

  • 7層OSI參考模型(法定標準)
  • 4層TCP/IP參考模型(事實標準)

標準化工作

計算機網(wǎng)絡的標準化工作之標準的分類:

  • 法定標準:由權威機構制定的正式的秃殉、合法的標準:OSI
  • 事實標準:某些公司的產(chǎn)品在競爭中占據(jù)了主流顶捷,時間長了這些產(chǎn)品中的協(xié)議和技術就成了標準:TCP/IP

OSI參考模型(法定標準)

OSI七層模型弥喉,由ISO(國際標準化組織)指定制定的一個國際標準OSI(Open System Interconnect 開放式通信系統(tǒng)互聯(lián)參考模型)夺衍。常用來分析和設計網(wǎng)絡體系結構。

TCP/IP參考模型(事實標準)

OSI與TCP/IP.png
ISO/OSI參考模型 TCP/IP參考模型
網(wǎng)絡層 無連接+面向連接 無連接
傳輸層 面向連接 無連接+面向連接

面向連接 分為三個階段胜宇,第一是建立連接乏沸,在此階段,發(fā)出一個建立連接的請求摧冀。只有在連接成功建立之后,才能開始數(shù)據(jù)傳輸系宫,這是第二階段索昂。接著,當數(shù)據(jù)傳輸完畢笙瑟,必須釋放連接楼镐。
面向無連接 沒有這么多階段,直接進行數(shù)據(jù)傳輸往枷。

5層參考模型

綜合OSI和TCP/IP的優(yōu)點


5層參考模型.png

傳輸層

傳輸層的功能:

  1. 傳輸層提供 進程和進程 之間的邏輯通信。網(wǎng)絡層提供 主機之間 的邏輯通信凄杯;
  2. 復用和分用错洁;
  • 復用:應用層所有的應用進程都可以通過傳輸層再傳輸?shù)骄W(wǎng)絡層;
  • 分用:傳輸層從網(wǎng)絡層收到數(shù)據(jù)后交付指明的應用進程戒突;
  1. 傳輸層對收到對報文進行差錯檢測屯碴;

傳輸層的兩個協(xié)議

TCP

面向連接的傳輸控制協(xié)議TCP。傳送數(shù)據(jù)之前必須建立連接膊存,數(shù)據(jù)傳送結束后要釋放連接导而。不提供廣播或多播服務。
由于TCP要提供可靠的面向連接的傳輸服務隔崎,因此不可避免增加了許多開銷:確認今艺、流量控制、計時器及連接管理等爵卒。
特點:可靠虚缎,面向連接,時延大钓株,適應于大文件

  • TCP是面向連接的傳輸層協(xié)議实牡;
  • 每一條TCP連接只能有兩個端點,每一條TCP連接只能是點對點的轴合;
  • TCP提供可靠交付的服務创坞,無差錯、不丟失受葛、不重復题涨、按序到達(可靠有序偎谁,不丟不重);
  • TCP提供全雙工通信携栋,即發(fā)送方和接收方可以同時發(fā)送和接收搭盾;

發(fā)送緩存:準備發(fā)送的數(shù)據(jù)&已發(fā)送但尚未收到確認的數(shù)據(jù)
接收緩存:按序到達但尚未被接受應用程序讀取的數(shù)據(jù)&不按序達到的數(shù)據(jù)

  • TCP面向字節(jié)流,TCP把應用程序交下來的數(shù)據(jù)看成僅僅是一連串的無結構的字節(jié)流婉支;

UDP

無連接的用戶數(shù)據(jù)報協(xié)議UDP鸯隅。傳送數(shù)據(jù)之前不需要建立連接,收到UDP報文后也不需要給出任何確認向挖。
特點:不可靠蝌以,無連接,時延小何之,適用于小文件

  • UDP是無連接的跟畅,減少開銷和發(fā)送數(shù)據(jù)之前的時延;
  • UDP使用最大努力交付溶推,即不保證可靠交付徊件;
  • UDP是面向報文的,即應用層給UDP多長的報文蒜危,UDP就照樣發(fā)送虱痕,即一次發(fā)一個完整報文,適合一次性傳輸少量數(shù)據(jù)的網(wǎng)絡應用辐赞;
    UDP傳輸.png
  • UDP無擁塞控制部翘,適合很多實時應用;
  • UDP首部開銷小响委,8B新思,TCP是20B;

TCP

TCP報文段首部格式

TCP報文段首部格式.png
  • 序號:在一個TCP連接中傳送的字節(jié)流中的每一個字節(jié)都按順序編號赘风,本字段表示本報文段所發(fā)送數(shù)據(jù)的 第一個字節(jié)的序號 夹囚。
  • 確認號:期望收到對方下一個報文段的第一個數(shù)據(jù)字節(jié)的序號。若確認號為N贝次,則證明到序號N-1為止的所有數(shù)據(jù)都已正確收到崔兴。
  • 數(shù)據(jù)偏移(首部長度):TCP報文段的數(shù)據(jù)起始處距離TCP報文段的起始處有多遠,以4B位單位蛔翅,即1個數(shù)值是4B敲茄。
    6個控制位:
  • 緊急位URG:URG=1時,標明此報文段中有緊急數(shù)據(jù)山析,是高優(yōu)先級的數(shù)據(jù)堰燎,應盡快傳送,不用在緩存里排隊笋轨,配合緊急指針字段使用秆剪。
  • 確認位ACK:ACK=1時確認號有效赊淑,在連接建立后所有傳送的報文段都必須把ACK置為1;
  • 推送位PSH:PSH=1時仅讽,接收方盡快交付應用程序陶缺,不再等到緩存填滿再向上交付;
  • 復位RST:RST=1時洁灵,表明TCP連接中出現(xiàn)嚴重差錯饱岸,必須釋放連接,然后再重新建立傳輸鏈接徽千;
  • 同步位SYN:SYN=1時苫费,表明是一個連接請求/連接接受報文;
  • 終止位FIN:FIN=1時双抽,表明此報文段發(fā)送方數(shù)據(jù)已發(fā)完百框,要求釋放連接。
  • 窗口:指發(fā)送本報文段的一方的接收窗口牍汹,即現(xiàn)在允許對方發(fā)送的數(shù)據(jù)量铐维;
  • 檢驗和:檢驗首部+數(shù)據(jù),檢驗時要加上12B偽首部慎菲,第四個字段為6方椎;
  • 緊急指針:URG=1時才有意義,指出本報文段中緊急數(shù)據(jù)的字節(jié)數(shù)钧嘶;
  • 選項:最大報文段長度MSS、窗口擴大琳疏、時間戳有决、選擇確認...

TCP連接建立(三次握手)

三次握手.png

TCP連接的建立采用客戶服務器方式,主動發(fā)起連接建立的應用進程叫做客戶空盼,而被動等待連接建立的應用進程叫服務器书幕。
TCP連接建立.png

  • 客戶端發(fā)送 連接請求報文段,無應用層數(shù)據(jù) SYN=1(連接請求報文)揽趾,序號位seq=x(隨機)
  • 服務端為該TCP連接 分配緩存和變量台汇,并向客戶端返回 確認報文段,允許連接篱瞎,無應用層數(shù)據(jù) SYN=1(連接接收報文)苟呐,ACK=1,seq=y(隨機),確認號ack=x+1
  • 客戶端為該TCP連接 分配緩存和變量俐筋,并向服務器返回確認的確認牵素,可以攜帶數(shù)據(jù) SYN=0,ACK=1澄者,seq=x+1笆呆,ack=y+1

SYN洪泛攻擊

SYN洪泛攻擊發(fā)生在OSI第四層请琳,這種方式利用TCP協(xié)議的特性,就是三次握手赠幕。攻擊者發(fā)送TCP SYN俄精,SYN是TCP三次握手中的第一個數(shù)據(jù)包,而當服務器返回ACK后榕堰,該攻擊者就不對其進行再確認竖慧,那這個TCP連接就處于掛起狀態(tài),就是所謂的半連接狀態(tài)局冰,服務器收不到再確認的話测蘑,還會重復發(fā)送ACK給攻擊者。這樣更加會浪費服務器資源康二。
攻擊者就對服務器發(fā)送非常大量的這種TCP連接碳胳,由于每一個都沒法完成三次握手,所以在服務器上沫勿,這些TCP連接會因為掛起狀態(tài)而消耗CPU和內存挨约,最后服務器可能死機,就無法為正常用戶提供服務了产雹。
解決方案:設置SYN cookie

為什么TCP一定要握手三次诫惭?

通過三次握手,客戶端經(jīng)歷了一次請求和一次響應蔓挖,服務端也經(jīng)歷了一次請求和一次響應夕土,這時一方面確認了當前網(wǎng)絡狀態(tài)不錯,另一方面又確認了自己這個溝通對象既能請求又能響應瘟判、確實沒毛病怨绣。只有在這樣安全、穩(wěn)定的前提下拷获,兩臺計算機之間才可以建立起 TCP 連接篮撑。三次握手的目的是為讓雙方驗證各自的接收能力和發(fā)送能力,確保雙方能夠確實建立起穩(wěn)定的傳輸通道匆瓜。

TCP連接釋放(四次揮手)

四次揮手.png
TCP連接釋放.png
  • 客戶端發(fā)送 連接釋放報文段赢笨,停止發(fā)送數(shù)據(jù),主動關閉TCP連接 FIN=1驮吱,seq=u
  • 服務器端回送一個確認報文段茧妒,客戶到服務器這個方向的連接就釋放了--半關閉狀態(tài) ACK=1,seq=v糠馆,ack=u+1
  • 服務端發(fā)完數(shù)據(jù)嘶伟,就發(fā)出連接釋放報文段,主動關閉TCP連接 FIN=1又碌,ACK=1九昧,seq=w绊袋,ack=u+1
  • 客戶端回送一個確認報文段,再等到時間等待計時器設置的2MS(最長報文段壽命)后铸鹰,連接徹底關閉 ACK=1癌别,seq=u+1,ack=w+1

為什么TCP分手一定要揮手四次蹋笼?

TCP連接是全雙工協(xié)議展姐,就是說雙方都可以同時向對方發(fā)送或接收數(shù)據(jù)。
當客戶端在想要斷開連接時剖毯,只能確認自己沒有數(shù)據(jù)要傳輸給服務器了圾笨,但并不能確認服務器是否還有數(shù)據(jù)要發(fā)送。
分手嘛逊谋,是兩個人的事情擂达。客戶端不會因為自己沒話說了就直接終止關系胶滋,而是會等服務器把話說完再走板鬓。因此,即便客戶端拋出了分手請求究恤,這時服務器還是可以傳輸數(shù)據(jù)過來的俭令。
前兩次揮手,只是對分手這件事做確認部宿,但并不會立即行分手之時抄腔。
第三次揮手前,服務器會把自己想說的話說完理张,然后再通知一次客戶端妓柜。這時,雙方才真正都為分開做好了準備涯穷。
第四次揮手,客戶端接收到了來自服務端的分手請求藏雏,響應“接受”的信號拷况,才最后給這一段關系畫上了句號。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末掘殴,一起剝皮案震驚了整個濱河市赚瘦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌奏寨,老刑警劉巖起意,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異病瞳,居然都是意外死亡揽咕,警方通過查閱死者的電腦和手機悲酷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來亲善,“玉大人设易,你說我怎么就攤上這事∮纪罚” “怎么了顿肺?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長渣蜗。 經(jīng)常有香客問我屠尊,道長,這世上最難降的妖魔是什么耕拷? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任讼昆,我火速辦了婚禮,結果婚禮上斑胜,老公的妹妹穿的比我還像新娘控淡。我一直安慰自己,他們只是感情好止潘,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布掺炭。 她就那樣靜靜地躺著,像睡著了一般凭戴。 火紅的嫁衣襯著肌膚如雪涧狮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天么夫,我揣著相機與錄音者冤,去河邊找鬼。 笑死档痪,一個胖子當著我的面吹牛涉枫,可吹牛的內容都是我干的。 我是一名探鬼主播腐螟,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼愿汰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了乐纸?” 一聲冷哼從身側響起衬廷,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎汽绢,沒想到半個月后吗跋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年跌宛,在試婚紗的時候發(fā)現(xiàn)自己被綠了酗宋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡秩冈,死狀恐怖本缠,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情入问,我是刑警寧澤丹锹,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站芬失,受9級特大地震影響楣黍,放射性物質發(fā)生泄漏。R本人自食惡果不足惜棱烂,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一租漂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧颊糜,春花似錦哩治、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鸟赫,卻和暖如春蒜胖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背抛蚤。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工台谢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人岁经。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓朋沮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親缀壤。 傳聞我的和親對象是個殘疾皇子朽们,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345