面試時(shí),你被問(wèn)到過(guò) TCP/IP 協(xié)議嗎?

前言:

  • 精通 TCP/IP,熟練使用 Socket 進(jìn)行網(wǎng)路編程。

看到這句話,有沒(méi)有感到很熟悉呀?相信很多人在投遞簡(jiǎn)歷的時(shí)候都看到過(guò)這條要求,很多人會(huì)覺(jué)得我們?cè)趯?shí)際開(kāi)發(fā)中一般用不到這些知識(shí),所以對(duì)這些東西不屑一顧.

但是筆者認(rèn)為想要做出更好的 APP,那么對(duì)這些基礎(chǔ)知識(shí)必須要有一定的了解,這樣你才能考慮得更加全面和完善,下面就讓我們一起來(lái)了解一下,什么是 TCP/IP.

1.什么是 TCP/IP?

TCP/IP 是一類協(xié)議系統(tǒng),它是用于網(wǎng)絡(luò)通信的一套協(xié)議集合.
傳統(tǒng)上來(lái)說(shuō) 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è)過(guò)程有點(diǎn)像俄羅斯套娃,所以有時(shí)候人們也會(huì)用俄羅斯套娃來(lái)形容這個(gè)過(guò)程.

俄羅斯套娃

3.網(wǎng)絡(luò)接口層

這一塊主要主要涉及到一些物理傳輸,比如以太網(wǎng),無(wú)線局域網(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)用越來(lái)越廣泛了(但是下面的介紹都是基于 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)制來(lái)顯示,比如大家非常熟悉的 192.168.0.1

IP 地址分為兩個(gè)部分:

  • 網(wǎng)絡(luò) ID
  • 主機(jī) ID

但是具體哪部分屬于網(wǎng)絡(luò) ID,哪些屬于主機(jī) ID 并沒(méi)有規(guī)定.

因?yàn)橛行┚W(wǎng)絡(luò)是需要很多主機(jī)的,這樣的話代表主機(jī) ID 的部分就要更多,但是有些網(wǎng)絡(luò)需要的主機(jī)很少,這樣主機(jī) ID 的部分就應(yīng)該少一些.

絕大部分 IP 地址屬于以下幾類

  • A 類地址:IP 地址的前 8 位代表網(wǎng)絡(luò) ID ,后 24 位代表主機(jī) ID。
  • B 類地址:IP 地址的前 16 位代表網(wǎng)絡(luò) ID ,后 16 位代表主機(jī) ID。
  • C 類地址:IP 地址的前 24 位代表網(wǎng)絡(luò) ID ,后 8 位代表主機(jī) ID。

這里能夠很明顯的看出 A 類地址能夠提供出的網(wǎng)絡(luò) ID 較少,但是每個(gè)網(wǎng)絡(luò)可以擁有非常多的主機(jī)

但是我們?cè)趺床拍芸闯鲆粋€(gè) IP 地址到底是哪類地址呢?

  • 如果 32 位的 IP 地址以 0 開(kāi)頭,那么它就是一個(gè) A 類地址。
  • 如果 32 位的 IP 地址以 10 開(kāi)頭,那么它就是一個(gè) B 類地址。
  • 如果 32 位的 IP 地址以 110 開(kāi)頭,那么它就是一個(gè) C 類地址。

那么轉(zhuǎn)化為十進(jìn)制(四段)的話,我們就能以第一段中的十進(jìn)制數(shù)來(lái)區(qū)分 IP 地址到底是哪類地址了。

注意:

  • 十進(jìn)制第一段大于 223 的屬于 D 類和 E 類地址,這兩類比較特殊也不常見(jiàn),這里就不做詳解介紹了。
  • 每一類都有一些排除地址,這些地址并不屬于該類,他們是在一些特殊情況使用地址(后面會(huì)介紹)
  • 除了這樣的方式來(lái)劃分網(wǎng)絡(luò),我們還可以把每個(gè)網(wǎng)絡(luò)劃分為更小的網(wǎng)絡(luò)塊,稱之為子網(wǎng)(后面會(huì)介紹)

全是 0 的主機(jī) ID 代表網(wǎng)絡(luò)本身,比如說(shuō) 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 開(kāi)頭的地址都是環(huán)回地址。目的地址是環(huán)回地址的消息,其實(shí)是由本地發(fā)送和接收的。主要是用于測(cè)試 TCP/IP 軟件是否正常工作。我們用 ping 功能的時(shí)候,一般用的環(huán)回地址是 127.0.0.1

2)地址解析協(xié)議 ARP

簡(jiǎn)單的來(lái)說(shuō) ARP 的作用就是把 IP 地址映射為物理地址,而與之相反的 RARP(逆向 ARP)就是將物理地址映射為 IP 地址。

3)子網(wǎng)

前面提到了 IP 地址的分類,但是對(duì)于 A 類和 B 類地址來(lái)說(shuō),每個(gè)網(wǎng)絡(luò)下的主機(jī)數(shù)量太多了,那么網(wǎng)絡(luò)的傳輸會(huì)變得很低效,并且很不靈活。比如說(shuō) IP地址為 100.0.0.0 的 A 類地址,這個(gè)網(wǎng)絡(luò)下的主機(jī)數(shù)量超過(guò)了 1600 萬(wàn)臺(tái)。

所以子網(wǎng)掩碼的出現(xiàn)就是為了解決這樣的問(wè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ù)來(lái)分段,他的每一位對(duì)應(yīng)著 IP 地址的相應(yīng)位置,數(shù)值為 1 時(shí)代表的是非主機(jī)位,數(shù)值為 0 時(shí)代表是主機(jī)位。

由表格可以很清晰的看出,網(wǎng)絡(luò) IP 仍是由之前的分類來(lái)決定到底是多少位,主機(jī) IP 則是由子網(wǎng)掩碼值為 0 的位數(shù)來(lái)決定,剩下的則是子網(wǎng) IP

5 傳輸層

傳輸層提供了兩種到達(dá)目標(biāo)網(wǎng)絡(luò)的方式

  • 傳輸控制協(xié)議(TCP):提供了完善的錯(cuò)誤控制和流量控制,能夠確保數(shù)據(jù)正常傳輸,是一個(gè)面向連接的協(xié)議。
  • 用戶數(shù)據(jù)報(bào)協(xié)議(UDP):只提供了基本的錯(cuò)誤檢測(cè),是一個(gè)無(wú)連接的協(xié)議。

特點(diǎn):

1)UDP:

  • 把數(shù)據(jù)打包
  • 數(shù)據(jù)大小有限制(64k)
  • 不建立連接
  • 速度快,但可靠性低

2)TCP:

  • 建立連接通道
  • 數(shù)據(jù)大小無(wú)限制
  • 速度慢,但是可靠性高

由于傳輸層涉及的東西比較多,比如端口,Socket等,都是我們做移動(dòng)開(kāi)發(fā)需要了解的,之后的文章中我們?cè)倬唧w做介紹,這里就不講解了。

6 應(yīng)用層

應(yīng)用層做為 TCP/IP 協(xié)議的最高層級(jí),對(duì)于我們移動(dòng)開(kāi)發(fā)來(lái)說(shuō),是接觸最多的。

運(yùn)行在TCP協(xié)議上的協(xié)議:

  • HTTP(Hypertext Transfer Protocol,超文本傳輸協(xié)議),主要用于普通瀏覽。
  • HTTPS(Hypertext Transfer Protocol over Secure Socket Layer, or HTTP over SSL,安全超文本傳輸協(xié)議),HTTP協(xié)議的安全版本。
  • FTP(File Transfer Protocol,文件傳輸協(xié)議),由名知義,用于文件傳輸。
  • POP3(Post Office Protocol, version 3,郵局協(xié)議),收郵件用。
  • SMTP(Simple Mail Transfer Protocol,簡(jiǎn)單郵件傳輸協(xié)議),用來(lái)發(fā)送電子郵件。
  • TELNET(Teletype over the Network,網(wǎng)絡(luò)電傳),通過(guò)一個(gè)終端(terminal)登陸到網(wǎng)絡(luò)。
  • SSH(Secure Shell,用于替代安全性差的TELNET),用于加密安全登陸用。

運(yùn)行在UDP協(xié)議上的協(xié)議:

  • BOOTP(Boot Protocol,啟動(dòng)協(xié)議),應(yīng)用于無(wú)盤(pán)設(shè)備。
  • NTP(Network Time Protocol,網(wǎng)絡(luò)時(shí)間協(xié)議),用于網(wǎng)絡(luò)同步。
  • DHCP(Dynamic Host Configuration Protocol,動(dòng)態(tài)主機(jī)配置協(xié)議),動(dòng)態(tài)配置IP地址。

其他:

  • DNS(Domain Name Service,域名服務(wù)),用于完成地址查找,郵件轉(zhuǎn)發(fā)等工作(運(yùn)行在TCP和UDP協(xié)議上)。
  • ECHO(Echo Protocol,回繞協(xié)議),用于查錯(cuò)及測(cè)量應(yīng)答時(shí)間(運(yùn)行在TCP和UDP協(xié)議上)。
  • SNMP(Simple Network Management Protocol,簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議),用于網(wǎng)絡(luò)信息的收集和網(wǎng)絡(luò)管理。
  • ARP(Address Resolution Protocol,地址解析協(xié)議),用于動(dòng)態(tài)解析以太網(wǎng)硬件的地址。

同樣的,由于應(yīng)用層我們需要涉及的東西太多,具體的介紹我們將在之后的文章中進(jìn)行介紹,本文就不進(jìn)行擴(kuò)展了,感興趣的朋友可以繼續(xù)關(guān)注我的博客:

http://blog.csdn.net/yulyu

熱門(mén)文章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.這篇文章不是本人原創(chuàng)的,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,340評(píng)論 6 174
  • 版本記錄 前言 在互聯(lián)網(wǎng)行業(yè)中,不管你是客戶端前端還是后臺(tái),只要是與網(wǎng)絡(luò)相關(guān),你就必須了解一些基礎(chǔ)知識(shí),包括這里的...
    刀客傳奇閱讀 1,987評(píng)論 0 16
  • 名詞延伸 通俗的說(shuō),域名就相當(dāng)于一個(gè)家庭的門(mén)牌號(hào)碼,別人通過(guò)這個(gè)號(hào)碼可以很容易的找到你。如果把IP地址比作一間房子...
    楊大蝦閱讀 20,785評(píng)論 2 56
  • 個(gè)人認(rèn)為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,185評(píng)論 0 8
  • 同樣的,本文篇幅也比較長(zhǎng),先來(lái)一張思維導(dǎo)圖,帶大家過(guò)一遍。 一、 計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)分層 二、 TCP/IP 基礎(chǔ)...
    滌生_Woo閱讀 66,113評(píng)論 38 1,037

友情鏈接更多精彩內(nèi)容