一.為什么會(huì)有TCP/IP協(xié)議
首先呢,TCP/IP不是一個(gè)協(xié)議,而是一個(gè)協(xié)議族的統(tǒng)稱。他們的存在是為了在將電腦聯(lián)合起來(lái)的時(shí)候,利用他們可以和其他的計(jì)算機(jī)終端做自由的交流。
二.TCP/IP協(xié)議分層
1.TCP/IP族按照層次由上到下,層層包裝。每一層都有自己的功能,每一層都有下一層的支持。而用戶接觸的,只是最上邊一層,沒(méi)有感覺(jué)到下面一層層,但是理解的時(shí)候要從最下層由下向上來(lái)理解。最上邊是應(yīng)用層,這里有http,ftp等熟悉的協(xié)議。而第二層就是傳輸層,TCP和UDP協(xié)議就是在這個(gè)層次。第三層是網(wǎng)絡(luò)層,IP協(xié)議就在這里,他負(fù)責(zé)對(duì)數(shù)據(jù)加上IP地址和其他數(shù)據(jù)以確定傳輸?shù)哪繕?biāo)。第四層叫做數(shù)據(jù)鏈路層,這個(gè)層次為待傳輸?shù)臄?shù)據(jù)加上一個(gè)以太網(wǎng)協(xié)議頭,并進(jìn)行CRC編碼,為最后的數(shù)據(jù)傳輸做準(zhǔn)備。再往下就是硬件層次,負(fù)責(zé)網(wǎng)絡(luò)的傳輸,這個(gè)層次的定義包括網(wǎng)線的格式,網(wǎng)卡的定義等等。
2.發(fā)送協(xié)議的主機(jī)從上到下將數(shù)據(jù)按照協(xié)議封裝,而接收數(shù)據(jù)的主機(jī)則按照協(xié)議從得到的數(shù)據(jù)包解開(kāi),最后拿到需要的數(shù)據(jù)。這種結(jié)構(gòu)非常像棧,所以我們也把TCP/IP協(xié)議族稱為TCP/IP棧。
3.每一層都是為了完成一種功能,為了實(shí)現(xiàn)這些功能,需要大家每個(gè)人都要遵循共同的規(guī)則,而這個(gè)規(guī)則就叫做“協(xié)議”?;ヂ?lián)網(wǎng)的每一層都定義了許多協(xié)議。而這些協(xié)議的總稱,就叫做“互聯(lián)網(wǎng)協(xié)議”,他們是互聯(lián)網(wǎng)的核心。
三.基本常識(shí)
1.互聯(lián)網(wǎng)地址(IP地址):網(wǎng)絡(luò)上的每一個(gè)節(jié)點(diǎn)都必須有一個(gè)獨(dú)立的Internet地址,也叫IP地址。通常使用的IP地址是一個(gè)32bit的數(shù)字,這32bit的數(shù)字分成四組,也就是常見(jiàn)的255.255.255.255的樣式。需注意,IP地址是網(wǎng)絡(luò)號(hào)+主機(jī)號(hào)的組合,這十分重要。
2.域名系統(tǒng):域名系統(tǒng)就是一個(gè)分布的數(shù)據(jù)庫(kù),它提供將主機(jī)名(就是網(wǎng)址)轉(zhuǎn)換成IP地址的服務(wù)。
3.RFC:TCP/IP協(xié)議的標(biāo)準(zhǔn)文檔。他一共有4000多個(gè)協(xié)議的定義。
4.端口號(hào):這個(gè)號(hào)碼是用在TCP,UDP上的一個(gè)邏輯號(hào)碼,并不是一個(gè)硬件端口。平時(shí)所說(shuō)的把某某的端口封掉,也只是在IP層次把帶有這個(gè)號(hào)碼的IP包濾掉了而已。
5.應(yīng)用編程接口(API):現(xiàn)常用的編程接口有socket和TLI。主要是提供應(yīng)用程序和開(kāi)發(fā)人員以訪問(wèn)一組例程功能,而無(wú)需考慮其底層的源代碼是為何,或理解其內(nèi)部工作機(jī)制的細(xì)節(jié)。
四.實(shí)體層
就是把電腦連接起來(lái)的物理手段。它主要規(guī)定了網(wǎng)絡(luò)的一些電氣特性,作用是負(fù)責(zé)傳送0和1的電信號(hào)。
五.數(shù)據(jù)鏈路層
單純的0和1沒(méi)有任何意義,必須規(guī)定解讀方式:多少個(gè)電信號(hào)算一組?每個(gè)信號(hào)為有何意義?
這就是“連接層”的功能,他在“實(shí)體層”的上方,確定了0和1的分組方式。
數(shù)據(jù)鏈路層有三個(gè)目的:
1.為IP模塊發(fā)送和接收IP數(shù)據(jù)報(bào)。
2.為ARP模塊發(fā)送ARP請(qǐng)求和接收ARP應(yīng)答。
3.為RARP發(fā)送RARP請(qǐng)求和接收RARP應(yīng)答。
注:ARP:地址解析協(xié)議,是用IP地址換MAC地址(媒體訪問(wèn)地址,或稱為物理地址,硬件地址。MAC地址是網(wǎng)卡決定的,是固定的,共48位,實(shí)際上就是適配器地址,IP地址就如同一個(gè)職位,而MAC地址則好像是去應(yīng)聘這個(gè)職位的人才,職位既可以讓甲坐,也可以讓乙坐,同樣的道理一個(gè)結(jié)點(diǎn)的IP地址對(duì)于網(wǎng)卡是不做要求,基本上什么樣的廠家都可以用,也就是說(shuō)IP地址與MAC地址并不存在著綁定關(guān)系。)的一種協(xié)議,而RARP則叫做逆地址解析協(xié)議。
以太網(wǎng)的定義是指數(shù)字設(shè)備公司( Digital Equipment Corp.)、英特爾公司(Intel Corp.)和Xerox公司在1982年聯(lián)合公布的一個(gè)標(biāo)準(zhǔn)。以太網(wǎng)規(guī)定,一組電信號(hào)構(gòu)成一個(gè)數(shù)據(jù)包,叫做“幀”,每一幀分成兩個(gè)部分:標(biāo)頭(head)和數(shù)據(jù)(data)。
標(biāo)頭包含了數(shù)據(jù)包的一些說(shuō)明項(xiàng),比如發(fā)送者,接受者,數(shù)據(jù)類型等;“數(shù)據(jù)”包括了數(shù)據(jù)包的具體內(nèi)容。標(biāo)頭的長(zhǎng)度固定為18字節(jié)。數(shù)據(jù)的長(zhǎng)度最長(zhǎng)為1500字節(jié),最短為46字節(jié)。因此,整個(gè)“幀”最長(zhǎng)為1518字節(jié),最短為64字節(jié)。如果數(shù)據(jù)很長(zhǎng),就必須分割成多個(gè)幀進(jìn)行發(fā)送。
以太網(wǎng)規(guī)定,連入網(wǎng)絡(luò)的所有設(shè)備,都必須具有“網(wǎng)卡”接口。數(shù)據(jù)包必須是從一塊網(wǎng)卡,傳送到另一塊網(wǎng)卡。網(wǎng)卡的地址,就是數(shù)據(jù)包的發(fā)送地址和接收地址,這就是MAC地址。
定義地址只是第一步,在這之后要解決一塊網(wǎng)卡如何知道另一塊網(wǎng)卡的MAC地址?回答是一種ARP協(xié)議。而在以太網(wǎng)數(shù)據(jù)包必須知道接收方的MAC地址,然后才能發(fā)送。
之后就算有了MAC地址,系統(tǒng)如何才能把數(shù)據(jù)包準(zhǔn)確的發(fā)送到接收方?,而以太網(wǎng)采用用了一種很原始的方式,即向本網(wǎng)絡(luò)內(nèi)的所有計(jì)算機(jī)發(fā)送,讓每臺(tái)計(jì)算機(jī)自己判斷,是否為接收方。他們讀取這個(gè)包的“標(biāo)頭”,找到接收方的MAC地址,然后與自身的MAC地址進(jìn)行比較,如果兩者相同,就接受這個(gè)包,作進(jìn)一步處理,否則就丟棄這個(gè)包,這種發(fā)送方式就叫做廣播。
有了數(shù)據(jù)包的定義,網(wǎng)卡的MAC地址,廣播的發(fā)送方式,“連接層”就可以在多臺(tái)計(jì)算機(jī)之間傳輸數(shù)據(jù)。
六.網(wǎng)絡(luò)層
1.由來(lái):以太網(wǎng)協(xié)議,依靠MAC地址發(fā)送數(shù)據(jù)。但是,以太網(wǎng)采用廣播來(lái)發(fā)送數(shù)據(jù)包,效率低,而且局限在發(fā)送者所在的子網(wǎng)絡(luò)。因此,要找到一種方法,能夠區(qū)分那些MAC地質(zhì)屬于同一個(gè)子網(wǎng)絡(luò),那些不是。如果是同一個(gè)子網(wǎng)絡(luò),就采用廣播,否則采用路由(...)方式發(fā)送,而這是MAC地址無(wú)法實(shí)現(xiàn)的,他至于廠商有關(guān),與所處網(wǎng)絡(luò)無(wú)關(guān),這就導(dǎo)致了“網(wǎng)絡(luò)層”的誕生,他的作用就是引用一套新的地址,使得我們能夠區(qū)分不同的計(jì)算機(jī)是否屬于同一個(gè)子網(wǎng)絡(luò)。而這套地址就叫做“網(wǎng)絡(luò)地址”,簡(jiǎn)稱“網(wǎng)址”。于是,“網(wǎng)絡(luò)層”出現(xiàn)之后,每臺(tái)計(jì)算機(jī)有了兩種地址,一種是MAC地址,另一種是網(wǎng)絡(luò)地址。兩種地址之間沒(méi)有任何聯(lián)系,MAC地址是綁定在網(wǎng)卡上的,網(wǎng)絡(luò)地址則是管理員分配的,他們是隨機(jī)組合在一起的。
網(wǎng)絡(luò)地址幫助我們確定計(jì)算機(jī)所在的子網(wǎng)絡(luò),MAC地址則將數(shù)據(jù)報(bào)送到該子網(wǎng)絡(luò)中的目標(biāo)網(wǎng)卡,因此,先處理網(wǎng)絡(luò)地址,在處理MAC地址。
2.IP協(xié)議
規(guī)定網(wǎng)絡(luò)地址的協(xié)議,叫做IP協(xié)議。他所規(guī)定的地址,就被稱為IP地址。我們采用的一般是IPv4.這個(gè)版本規(guī)定,網(wǎng)絡(luò)地址由32個(gè)二進(jìn)制位組成。習(xí)慣上分為四段,如255.255.255.255,這個(gè)地址分成兩部分,前一部分代表網(wǎng)絡(luò),后一部分代表主機(jī)。但是單從IP地址,我們無(wú)法分辨網(wǎng)絡(luò)部分。因此,我們需要一個(gè)參數(shù)來(lái)判斷兩臺(tái)計(jì)算機(jī)是否屬于同一個(gè)子網(wǎng)絡(luò),這個(gè)參數(shù)就是“子網(wǎng)掩碼”,它在形式上等同于IP地址,也是一個(gè)32位的二進(jìn)制數(shù),他的網(wǎng)絡(luò)部分全部為1,主機(jī)部分為0.知道子網(wǎng)掩碼我們就可以判斷兩個(gè)IP地址是否屬于同一個(gè)自網(wǎng)絡(luò)下,方法就是將兩個(gè)IP地址與子網(wǎng)掩碼分別進(jìn)行AND運(yùn)算。,比較結(jié)果是否相同,如果是的話,就表明在同一個(gè)子網(wǎng)絡(luò)中。
所以,IP協(xié)議的作用主要有兩個(gè),一個(gè)是為每一臺(tái)計(jì)算機(jī)分配IP地址,另一個(gè)是確定那些地址在同一個(gè)子網(wǎng)絡(luò)。
3.IP數(shù)據(jù)包
根據(jù)IP協(xié)議發(fā)送的數(shù)據(jù),就叫做IP數(shù)據(jù)包。其中包含IP地址信息。但是由于以太網(wǎng)數(shù)據(jù)包只包含MAC地址,并沒(méi)有IP地址欄,但我們也并不需要為他添加一個(gè)欄位,我們將IP數(shù)據(jù)包直接放進(jìn)以太網(wǎng)數(shù)據(jù)包的“數(shù)據(jù)”中,而不用修改以太網(wǎng)的規(guī)格,這就是互聯(lián)網(wǎng)分層的好處:上層的變動(dòng)完全不涉及下層的結(jié)構(gòu)。IP數(shù)據(jù)也分為“標(biāo)頭”和“數(shù)據(jù)”兩部分,"標(biāo)頭"主要是版本,長(zhǎng)度,IP地址,“數(shù)據(jù)”部分則是IP數(shù)據(jù)包的具體內(nèi)容。他放在以太網(wǎng)數(shù)據(jù)包后,就是這樣
IP數(shù)據(jù)包的“標(biāo)頭”部分的長(zhǎng)度為20到60字節(jié),整個(gè)數(shù)據(jù)包的總長(zhǎng)度最大為65535字節(jié),因此,一個(gè)IP數(shù)據(jù)包的“數(shù)據(jù)”部分最長(zhǎng)為65515字節(jié)。
-
FPGA
+關(guān)注
關(guān)注
1620文章
21510瀏覽量
598898 -
嵌入式
+關(guān)注
關(guān)注
5045文章
18817瀏覽量
298482
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論