計算機網(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參考模型(事實標準)
ISO/OSI參考模型 | TCP/IP參考模型 | |
---|---|---|
網(wǎng)絡層 | 無連接+面向連接 | 無連接 |
傳輸層 | 面向連接 | 無連接+面向連接 |
面向連接 分為三個階段胜宇,第一是建立連接乏沸,在此階段,發(fā)出一個建立連接的請求摧冀。只有在連接成功建立之后,才能開始數(shù)據(jù)傳輸系宫,這是第二階段索昂。接著,當數(shù)據(jù)傳輸完畢笙瑟,必須釋放連接楼镐。
面向無連接 沒有這么多階段,直接進行數(shù)據(jù)傳輸往枷。
5層參考模型
綜合OSI和TCP/IP的優(yōu)點
傳輸層
傳輸層的功能:
- 傳輸層提供 進程和進程 之間的邏輯通信。網(wǎng)絡層提供 主機之間 的邏輯通信凄杯;
- 復用和分用错洁;
- 復用:應用層所有的應用進程都可以通過傳輸層再傳輸?shù)骄W(wǎng)絡層;
- 分用:傳輸層從網(wǎng)絡層收到數(shù)據(jù)后交付指明的應用進程戒突;
- 傳輸層對收到對報文進行差錯檢測屯碴;
傳輸層的兩個協(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無擁塞控制部翘,適合很多實時應用;
- UDP首部開銷小响委,8B新思,TCP是20B;
TCP
TCP報文段首部格式
- 序號:在一個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連接建立(三次握手)
TCP連接的建立采用客戶服務器方式,主動發(fā)起連接建立的應用進程叫做客戶空盼,而被動等待連接建立的應用進程叫服務器书幕。
- 客戶端發(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連接釋放(四次揮手)
- 客戶端發(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ù)過來的俭令。
前兩次揮手,只是對分手這件事做確認部宿,但并不會立即行分手之時抄腔。
第三次揮手前,服務器會把自己想說的話說完理张,然后再通知一次客戶端妓柜。這時,雙方才真正都為分開做好了準備涯穷。
第四次揮手,客戶端接收到了來自服務端的分手請求藏雏,響應“接受”的信號拷况,才最后給這一段關系畫上了句號。