- 面試總會問到網(wǎng)絡(luò)問題
- 平時開發(fā)中也總是模棱兩可繁疤,不夠深入
- 所以就對相關(guān)知識點做一個梳理和總結(jié)署穗,其一可以加深記憶,其二方便回顧嵌洼,其三可以跟大家做一下交流
OSI模型
OSI模型案疲,即開放式通信系統(tǒng)互聯(lián)參考模型(Open System Interconnection,OSI/RM,Open Systems Interconnection Reference Model),是國際標準化組織(ISO)提出的一個試圖使各種計算機在世界范圍內(nèi)互連為網(wǎng)絡(luò)的標準框架麻养,簡稱OSI褐啡。
TCP/IP參考模型
TCP/IP參考模型(TCP/IP reference model),是一組用于實現(xiàn)網(wǎng)絡(luò)互連的通信協(xié)議,基于TCP/IP的參考模型將協(xié)議分成四個層次鳖昌,它們分別是:網(wǎng)絡(luò)訪問層备畦、網(wǎng)際互聯(lián)層、傳輸層(主機到主機)许昨、和應用層懂盐。
TCP
TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接的、可靠的糕档、基于字節(jié)流的傳輸層通信協(xié)議莉恼,由IETF的RFC 793定義。
TCP通過檢驗和速那、序列號俐银、確認應答、重發(fā)控制端仰、連接管理以及窗口控制等機制實現(xiàn)可靠性傳輸捶惜。
TCP 首部
Sequence Number是發(fā)送數(shù)據(jù)包中的第一個字節(jié)的序列號,32位荔烧。
Acknowledgment Number是確認序列號吱七,32位。
ACK表示Acknowledgment Number字段有意義
PSH表示Push功能鹤竭,RST表示復位TCP連接
SYN表示SYN報文(在建立TCP連接的時候使用)
FIN表示沒有數(shù)據(jù)需要發(fā)送了(在關(guān)閉TCP連接的時候使用)
Checksum是校驗和踊餐,16位
TCP需要三次握手才能建立,而斷開連接則需要四次握手
- TCP建立連接
首先Client端發(fā)送連接請求報文诺擅,Server段接受連接后回復ACK報文市袖,并為這次連接分配資源。Client端接收到ACK報文后也向Server段發(fā)生ACK報文,并分配資源苍碟,這樣TCP連接就建立了酒觅。
-
TCP關(guān)閉連接
假設(shè)Client端發(fā)起中斷連接請求,也就是發(fā)送FIN報文微峰。Server端接到FIN報文后舷丹,意思是說"我Client端沒有數(shù)據(jù)要發(fā)給你了",但是如果你還有數(shù)據(jù)沒有發(fā)送完成蜓肆,則不必急著關(guān)閉Socket颜凯,可以繼續(xù)發(fā)送數(shù)據(jù)。所以你先發(fā)送ACK仗扬,"告訴Client端症概,你的請求我收到了,但是我還沒準備好早芭,請繼續(xù)你等我的消息"彼城。這個時候Client端就進入FIN_WAIT狀態(tài),繼續(xù)等待Server端的FIN報文退个。當Server端確定數(shù)據(jù)已發(fā)送完成募壕,則向Client端發(fā)送FIN報文,"告訴Client端语盈,好了舱馅,我這邊數(shù)據(jù)發(fā)完了,準備好關(guān)閉連接了"刀荒。Client端收到FIN報文后代嗤,"就知道可以關(guān)閉連接了,但是他還是不相信網(wǎng)絡(luò)照棋,怕Server端不知道要關(guān)閉资溃,所以發(fā)送ACK后進入TIME_WAIT狀態(tài)武翎,如果Server端沒有收到ACK則可以重傳烈炭。“宝恶,Server端收到ACK后符隙,"就知道可以斷開連接了"。Client端等待了2MSL后依然沒有收到回復垫毙,則證明Server端已正常關(guān)閉霹疫,那好,我Client端也可以關(guān)閉連接了综芥。Ok丽蝎,TCP連接就這樣關(guān)閉了!
關(guān)閉TCP連接.png
UDP
UDP 是User Datagram Protocol的簡稱, 中文名是用戶數(shù)據(jù)報協(xié)議屠阻,是OSI(Open System Interconnection红省,開放式系統(tǒng)互聯(lián)) 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù)国觉,IETF RFC 768是UDP的正式規(guī)范吧恃。UDP在IP報文的協(xié)議號是17。
它主要用于不要求分組順序到達的傳輸中麻诀,分組傳輸順序的檢查與排序由應用層完成痕寓,提供面向事務(wù)的簡單不可靠信息傳送服務(wù)。UDP 協(xié)議基本上是IP協(xié)議與上層協(xié)議的接口蝇闭。UDP協(xié)議適用端口分別運行在同一臺設(shè)備上的多個應用程序呻率。
TCP與UDP區(qū)別總結(jié):
1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的呻引,即發(fā)送數(shù)據(jù)之前不需要建立連接
2筷凤、TCP提供可靠的服務(wù)苞七。也就是說藐守,通過TCP連接傳送的數(shù)據(jù),無差錯蹂风,不丟失卢厂,不重復,且按序到達;UDP盡最大努力交付惠啄,即不保 證可靠交付
3慎恒、TCP面向字節(jié)流,實際上是TCP把數(shù)據(jù)看成一連串無結(jié)構(gòu)的字節(jié)流;UDP是面向報文的
UDP沒有擁塞控制撵渡,因此網(wǎng)絡(luò)出現(xiàn)擁塞不會使源主機的發(fā)送速率降低(對實時應用很有用融柬,如IP電話,實時視頻會議等)
4趋距、每一條TCP連接只能是點到點的;UDP支持一對一粒氧,一對多,多對一和多對多的交互通信
5节腐、TCP首部開銷20字節(jié);UDP的首部開銷小外盯,只有8個字節(jié)
6、TCP的邏輯通信信道是全雙工的可靠信道翼雀,UDP則是不可靠信道