大家好辛孵,我是IT修真院深圳分院第03期學(xué)員,一枚正直純潔善良的程序員。今天給大家分享一下硬毕,修真院官網(wǎng)JAVA(職業(yè))任務(wù)2的深度思考—— TCP三次握手
1.背景介紹
中國人和中國人說話锄弱,要遵循漢語的的語法結(jié)構(gòu)考蕾,使用漢語的發(fā)音。當(dāng)我們和外國人交流時(shí)会宪,就要適用外國的語言了肖卧,遵循外國的語法機(jī)構(gòu)和發(fā)音。其實(shí)這就是一種協(xié)議狈谊,只不過我們稱之為語言喜命。計(jì)算機(jī)再這方面體現(xiàn)的更為直觀,兩臺(tái)機(jī)器之間該如何通信呢河劝,就需要制定各種各樣的協(xié)議了壁榕。例如:文件傳輸適用TCP協(xié)議赎瞎。域名系統(tǒng)適用DNS協(xié)議。有了些協(xié)議的存在务甥,各種數(shù)據(jù)流按照規(guī)則傳輸,計(jì)算機(jī)之間得意通信敞临。
2.知識(shí)剖析
1态辛、什么是TCP/IP
TCP/IP協(xié)議是一個(gè)協(xié)議集合。大家叫的時(shí)候方便說挺尿,所以統(tǒng)稱為TCP/IP炊邦。TCP/IP協(xié)議族中有一個(gè)重要的概念是分層熟史,TCP/IP協(xié)議按照層次分為以下四層:應(yīng)用層馁害、傳輸層、網(wǎng)絡(luò)層蹂匹、數(shù)據(jù)鏈路層碘菜。
為什么要分層限寞?分層使得一個(gè)層只負(fù)責(zé)一個(gè)層次的問題,如果出問題了履植,和其他的層次無關(guān),只要維護(hù)這個(gè)層次也就好了静尼。其實(shí)編程語言里也能體現(xiàn)這個(gè)分層理論,大家都懂的鸭巴。
3.常見問題
?? ?1、DNS是什么鹃祖?
?? ?2普舆、IP協(xié)議是什么?
?? ?3沼侣、TCP協(xié)議是什么?TCP三次握手的過程养铸?
?? ?4、為什么需要三次握手钞螟,而不是兩次或四次握手谎碍?
4.解決問題
?? ?1、DNS是什么蟆淀?
DNS(Domain names System) 和HTTP協(xié)議一樣是處于應(yīng)用層的服務(wù)闽晦,提供域名到IP地址之間的解析服務(wù)提岔∷癯ǎ互聯(lián)網(wǎng)之間是通過IP地址通信的,但是IP地址并不符合認(rèn)得記憶習(xí)慣夯巷,人喜歡記憶有意義的字詞。所以DNS服務(wù)就為了解決這個(gè)問題而誕生的喷兼。
?? ?比如任務(wù)中我們修改host解析域名的時(shí)候后雷,會(huì)這樣寫:
120.94.2.45www.xiaoxixi.com
當(dāng)我們訪問www.xiaoxixi.com的時(shí)候季惯,電腦不會(huì)去外網(wǎng)服務(wù)器上查詢臀突,直接訪問120.94.2.45
????2、IP協(xié)議是什么藕筋?
IP協(xié)議的作用在于把各種數(shù)據(jù)包準(zhǔn)確無誤的傳遞給對方梳码,其中兩個(gè)重要的條件是IP地址,和MAC地址掰茶。由于IP地址是稀有資源,不可能每個(gè)人都擁有一個(gè)IP地址叨咖,所以我們通常的IP地址是路由器給我們生成的IP地址,路由器里面會(huì)記錄我們的MAC地址甸各。而MAC地址是全球唯一的焰坪,除去人為因素外不可能重復(fù)。舉一個(gè)現(xiàn)實(shí)生活中的例子某饰,IP地址就如同是我們居住小區(qū)的地址善绎,而MAC地址就是我們住的那棟樓那個(gè)房間那個(gè)人诫尽。
?? ?3、TCP協(xié)議是什么剂跟?TCP三次握手的過程酣藻?
?? ?如果說IP協(xié)議是找到對方的詳細(xì)地址。那么TCP協(xié)議就是把安全的把東西帶給對方辽剧。各有分工,互不沖突怕轿。按層次分,TCP屬于傳輸層环凿,提供可靠的字節(jié)流服務(wù)放吩。 所謂的字節(jié)流服務(wù)(Byte Stream Service)是指,為了方便傳輸渡紫,將大塊數(shù)據(jù)分割成以報(bào)文段為單位的數(shù)據(jù)包進(jìn)行管理。而可靠的傳輸服務(wù)是指莉测,能夠把數(shù)據(jù)準(zhǔn)確可靠地傳給對方。一言以蔽之捣卤,TCP 協(xié)議為了更容易傳送大數(shù)據(jù)才把數(shù)據(jù)分割八孝,而且 TCP 協(xié)議能夠確認(rèn)數(shù)據(jù)最終是否送達(dá)到對方。
?? ?前面的概念可能有一點(diǎn)難理解干跛,用人話來解釋是這樣的:
比如你是一個(gè)賣自行車的,你要去送貨哥捕。安裝好的自行車,太過龐大遥赚,又不穩(wěn)定,容易損傷凫佛。不如直接把自行車拆開來,每個(gè)零件上都貼上收貨人的姓名。最后送到后按照把屬于同一個(gè)人的自行車再組裝起來诊赊,這個(gè)拆解、運(yùn)輸碘箍、拼裝的過程其實(shí)就是TCP字節(jié)流的過程鲸郊。
TCP三次握手的過程
?? ?為了確保信息能夠確保準(zhǔn)確無誤的到達(dá),TCP采用了著名的三次握手策略:
SYN是同步請求秆撮;ACK表示對請求的響應(yīng)。
?? ?seq是數(shù)據(jù)包(三次握手就是三條信息的發(fā)送過程盗蟆,每一條信息都是一個(gè)數(shù)據(jù)包)本身的序列號舒裤;ack是期望對方繼續(xù)發(fā)送的那個(gè)數(shù)據(jù)包的序列號。
?? ?4腾供、為什么需要三次握手,而不是兩次或四次握手节值?
?? ?三次握手是在安全可靠的基礎(chǔ)上榜聂,握手次數(shù)最少的方案察署。兩次握手并不能保證可靠性峻汉;四次握手又浪費(fèi)了效率脐往。
5.代碼實(shí)戰(zhàn)
6.擴(kuò)展思考
略
7.參考文獻(xiàn)
?? ?http://www.cnblogs.com/roverliang/p/5176456.html
8.更多討論
略
今天的分享就到這里啦业簿,歡迎大家點(diǎn)贊阳懂、轉(zhuǎn)發(fā)、留言岩调、拍磚~
技能樹.IT修真院
“我們相信人人都可以成為一個(gè)工程師,現(xiàn)在開始缰揪,找個(gè)師兄,帶你入門钝腺,掌控自己學(xué)習(xí)的節(jié)奏赞厕,學(xué)習(xí)的路上不再迷茫”皿桑。
這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學(xué)習(xí)路線蒜茴,學(xué)習(xí)透明化浆西,成長可見化粉私,師兄1對1免費(fèi)指導(dǎo)近零。快來與我一起學(xué)習(xí)吧窖杀。