看到這句話,有沒有感到很熟悉呀?相信很多人在投遞簡(jiǎn)歷的時(shí)候都看到過這條要求,很多人會(huì)覺得我們?cè)趯?shí)際開發(fā)中一般用不到這些知識(shí),所以對(duì)這些東西不屑一顧. 但是筆者認(rèn)為想要做出更好的 APP,那么對(duì)這些基礎(chǔ)知識(shí)必須要有一定的了解,這樣你才能考慮得更加全面和完善,下面就讓我們一起來了解一下,什么是 TCP/IP. 1.什么是 TCP/IP?TCP/IP 是一類協(xié)議系統(tǒng),它是用于網(wǎng)絡(luò)通信的一套協(xié)議集合. 傳統(tǒng)上來說 TCP/IP 被認(rèn)為是一個(gè)雙層協(xié)議 1) 網(wǎng)絡(luò)接口層:主要是指物理層次的一些接口,比如電纜等. 2) 網(wǎng)絡(luò)層:提供獨(dú)立于硬件的邏輯尋址,實(shí)現(xiàn)物理地址與邏輯地址的轉(zhuǎn)換. 在 TCP / IP 協(xié)議族中,網(wǎng)絡(luò)層協(xié)議包括 IP 協(xié)議(網(wǎng)際協(xié)議),ICMP 協(xié)議( Internet 互聯(lián)網(wǎng)控制報(bào)文協(xié)議),以及 IGMP 協(xié)議( Internet 組管理協(xié)議). 3) 傳輸層:為網(wǎng)絡(luò)提供了流量控制,錯(cuò)誤控制和確認(rèn)服務(wù). 在 TCP / IP 協(xié)議族中有兩個(gè)互不相同的傳輸協(xié)議: TCP(傳輸控制協(xié)議)和 UDP(用戶數(shù)據(jù)報(bào)協(xié)議). 4) 應(yīng)用層:為網(wǎng)絡(luò)排錯(cuò),文件傳輸,遠(yuǎn)程控制和 Internet 操作提供具體的應(yīng)用程序 2.數(shù)據(jù)包在 TCP / IP 協(xié)議中數(shù)據(jù)先由上往下將數(shù)據(jù)裝包,然后由下往上拆包 在裝包的時(shí)候,每一層都會(huì)增加一些信息用于傳輸,這部分信息就叫報(bào)頭,當(dāng)上層的數(shù)據(jù)到達(dá)本層的時(shí)候,會(huì)將數(shù)據(jù)加上本層的報(bào)頭打包在一起,繼續(xù)往下傳遞. 在拆包的時(shí)候,每一層將本層需要的報(bào)頭讀取后,就將剩下的數(shù)據(jù)往上傳. 這個(gè)過程有點(diǎn)像俄羅斯套娃,所以有時(shí)候人們也會(huì)用俄羅斯套娃來形容這個(gè)過程. 分享一個(gè)在騰訊課堂上tcp/ip的訓(xùn)練營(yíng)的課程。詳情講解了工作中 TCP、IP遇到的7大問題:1. 滑動(dòng)窗口如何實(shí)現(xiàn)?2. sk_buff是什么?3. TCP_NODELAY設(shè)置,抓包后是N個(gè)包?4. Epoll 檢測(cè)網(wǎng)絡(luò)IO,水平觸發(fā)與邊沿觸發(fā)如何判斷?5. 出現(xiàn)大量的close_wait如何解決?6. DDOS?7. UDP廣播?需要了解的朋友可以后臺(tái)私信【tcp/ip】獲取鏈接3.網(wǎng)絡(luò)接口層這一塊主要主要涉及到一些物理傳輸,比如以太網(wǎng),無線局域網(wǎng).這里就不做詳細(xì)的介紹了 4.網(wǎng)絡(luò)層前面有提到,網(wǎng)絡(luò)層主要就是做物理地址與邏輯地址之間的轉(zhuǎn)換. 目前市場(chǎng)上應(yīng)用的最多的是 32 位二進(jìn)制的 IPv4 ,因?yàn)?IPv4 的地址已經(jīng)不夠用了,所以 128 位二進(jìn)制的 IPv6 應(yīng)用越來越廣泛了(但是下面的介紹都是基于 IPv4 進(jìn)行的) 1) IP:TCP/IP 協(xié)議網(wǎng)絡(luò)上的每一個(gè)網(wǎng)絡(luò)適配器都有一個(gè)唯一的 IP 地址. IP 地址是一個(gè) 32 位的地址,這個(gè)地址通常分成 4 端,每 8 個(gè)二進(jìn)制為一段,但是為了方便閱讀,通常會(huì)將每段都轉(zhuǎn)換為十進(jìn)制來顯示,比如大家非常熟悉的 192.168.0.1 IP 地址分為兩個(gè)部分:
但是具體哪部分屬于網(wǎng)絡(luò) ID,哪些屬于主機(jī) ID 并沒有規(guī)定. 因?yàn)橛行┚W(wǎng)絡(luò)是需要很多主機(jī)的,這樣的話代表主機(jī) ID 的部分就要更多,但是有些網(wǎng)絡(luò)需要的主機(jī)很少,這樣主機(jī) ID 的部分就應(yīng)該少一些. 絕大部分 IP 地址屬于以下幾類
這里能夠很明顯的看出 A 類地址能夠提供出的網(wǎng)絡(luò) ID 較少,但是每個(gè)網(wǎng)絡(luò)可以擁有非常多的主機(jī) 但是我們?cè)趺床拍芸闯鲆粋€(gè) IP 地址到底是哪類地址呢?
那么轉(zhuǎn)化為十進(jìn)制(四段)的話,我們就能以第一段中的十進(jìn)制數(shù)來區(qū)分 IP 地址到底是哪類地址了。 注意:
全是 0 的主機(jī) ID 代表網(wǎng)絡(luò)本身,比如說 IP 地址為 130.100.0.0 指的是網(wǎng)絡(luò) ID 為130.100 的 B 類地址。 全是 1 的主機(jī) ID 代表廣播,是用于向該網(wǎng)絡(luò)中的全部主機(jī)方法消息的。 IP 地址為 130.100.255.255 就是網(wǎng)絡(luò) ID 為 130.100 網(wǎng)絡(luò)的廣播地址(二進(jìn)制 IP 地址中全是 1 ,轉(zhuǎn)換為十進(jìn)制就是 255 ) 以十進(jìn)制 127 開頭的地址都是換回地址。目的地址是環(huán)回地址的消息,其實(shí)是由本地發(fā)送和接收的。主要是用于測(cè)試 TCP/IP 軟件是否正常工作。我們用 ping 功能的時(shí)候,一般用的環(huán)回地址是 127.0.0.1 2)地址解析協(xié)議 ARP簡(jiǎn)單的來說 ARP 的作用就是把 IP 地址映射為物理地址,而與之相反的 RARP(逆向 ARP)就是將物理地址映射為 IP 地址。 3)子網(wǎng)前面提到了 IP 地址的分類,但是對(duì)于 A 類和 B 類地址來說,每個(gè)網(wǎng)絡(luò)下的主機(jī)數(shù)量太多了,那么網(wǎng)絡(luò)的傳輸會(huì)變得很低效,并且很不靈活。比如說 IP地址為 100.0.0.0 的 A 類地址,這個(gè)網(wǎng)絡(luò)下的主機(jī)數(shù)量超過了 1600 萬臺(tái)。 所以子網(wǎng)掩碼的出現(xiàn)就是為了解決這樣的問題。 我們先回顧一下之前如何區(qū)分主機(jī) IP 和網(wǎng)絡(luò) IP 的。 以 A 類地址 99.10.10.10 為例,前 8 位是網(wǎng)絡(luò) IP ,后 24 位是主機(jī) IP 。(如下圖) 子網(wǎng)掩碼也是一個(gè) 32 為的二進(jìn)制數(shù),也可以用四個(gè)十進(jìn)制數(shù)來分段,他的每一位對(duì)應(yīng)著 IP 地址的相應(yīng)位置,數(shù)值為 1 時(shí)代表的是非主機(jī)位,數(shù)值為 0 時(shí)代表是主機(jī)位。 由表格可以很清晰的看出,網(wǎng)絡(luò) IP 仍是由之前的分類來決定到底是多少位,主機(jī) IP 則是由子網(wǎng)掩碼值為 0 的位數(shù)來決定,剩下的則是子網(wǎng) IP 5 傳輸層傳輸層提供了兩種到達(dá)目標(biāo)網(wǎng)絡(luò)的方式
特點(diǎn):1)UDP:
2)TCP:
由于傳輸層涉及的東西比較多,比如端口,Socket等,都是我們做移動(dòng)開發(fā)需要了解的,之后的文章中我們?cè)倬唧w做介紹,這里就不講解了。 6 應(yīng)用層應(yīng)用層作為 TCP/IP 協(xié)議的最高層級(jí),對(duì)于我們移動(dòng)開發(fā)來說,是接觸最多的。 運(yùn)行在TCP協(xié)議上的協(xié)議:
運(yùn)行在UDP協(xié)議上的協(xié)議:
其他:
|
|