
1.1 前言
近期對(duì)TCP/IP有了興趣.但是看了大概20幾章后,回頭發(fā)現(xiàn)忘得七七八八了,打算從頭在看一遍,索性就做個(gè)筆記吧,方便日后復(fù)習(xí)
這個(gè)系列的文章如果有時(shí)間會(huì)持續(xù)更新下去的.
1.2 分層
TCP/IP是一個(gè)協(xié)議族,是一組不同層次上的多個(gè)協(xié)議的組合。TCP/IP通常被認(rèn)為是一個(gè)四層協(xié)議系統(tǒng)。

每一層負(fù)責(zé)不同的功能:
- 鏈路層:有時(shí)也稱作數(shù)據(jù)鏈路層,或者網(wǎng)絡(luò)接口層,通常包括操作系統(tǒng)中的設(shè)備驅(qū)動(dòng)程序和計(jì)算機(jī)對(duì)應(yīng)的網(wǎng)絡(luò)接口卡。它們一起處理與電纜的物理接口細(xì)節(jié)。
- 網(wǎng)絡(luò)層: 有時(shí)也稱作互聯(lián)網(wǎng)層,處理分組在網(wǎng)絡(luò)中的活動(dòng),例如分組在的選路。在TCP/IP協(xié)議族中,網(wǎng)絡(luò)層協(xié)議包含IP協(xié)議(網(wǎng)際協(xié)議),ICMP協(xié)議(互聯(lián)網(wǎng)控制報(bào)文協(xié)議), 以及IGMP協(xié)議(Internet組管理協(xié)議)。
- 運(yùn)輸層:主要為兩臺(tái)主機(jī)上的應(yīng)用程序提供端到端的通信。在TCP/IP協(xié)議族中,有兩個(gè)相互不同的傳輸協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報(bào)協(xié)議)。
- TCP為兩臺(tái)主機(jī)提供可靠性的數(shù)據(jù)通信。它所做的工作包括把應(yīng)用程序所交給它的數(shù)據(jù)分成合適的小塊交給下面的網(wǎng)絡(luò)層,確認(rèn)接收到分組的,設(shè)置發(fā)送最后確認(rèn)分組超時(shí)時(shí)鐘等。由于運(yùn)輸層提供了可靠性的端到端的通信,因此應(yīng)用層可以忽略所有這些細(xì)節(jié)。
- UDP則為應(yīng)用層提供了一種非常簡(jiǎn)單的服務(wù)。它只是把稱作數(shù)據(jù)報(bào)的分組從一臺(tái)主機(jī)發(fā)送到另一臺(tái)主機(jī),但并不保證數(shù)據(jù)包能到達(dá)另一端。任何必須的可靠性必須由應(yīng)用層來(lái)提供。
- 應(yīng)用層:負(fù)責(zé)特定的應(yīng)用程序細(xì)節(jié)。幾乎各種不同的TCP/IP都會(huì)實(shí)現(xiàn)提供下面這些通用的應(yīng)用程序:
- Telent:遠(yuǎn)程登陸
- FTP:文件傳輸協(xié)議
- SMTP:簡(jiǎn)單文件傳輸協(xié)議
- SNMP:簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議
在TCP/IP協(xié)議族中,網(wǎng)絡(luò)層提供的是一種不可靠的服務(wù)。也就是它只是盡可能快的把分組從源結(jié)點(diǎn)送到目的結(jié)點(diǎn),但是不提供任何可靠性的保證。而在另一方面,TCP在不可靠的的IP層提供了一個(gè)可靠的運(yùn)輸層。為了提供這種可靠的服務(wù),TCP采用了超時(shí)重傳 發(fā)送和接受端到端的確認(rèn)分組機(jī)制。
網(wǎng)橋和路由器的區(qū)別: 網(wǎng)橋是在鏈路層上對(duì)網(wǎng)絡(luò)互連,而路由是在網(wǎng)絡(luò)層上對(duì)網(wǎng)絡(luò)互連
1.3 TCP/IP的分層
- TCP和UDP是兩種著名的運(yùn)輸層協(xié)議,二者都使用IP作為網(wǎng)絡(luò)層協(xié)議。
- UDP為應(yīng)用程序發(fā)送和接受數(shù)據(jù)報(bào)。一個(gè)數(shù)據(jù)報(bào)是指從發(fā)送方傳輸?shù)浇邮辗降囊粋€(gè)信息單元。但是與TCP不同的是UDP是不可靠的,它不能保證數(shù)據(jù)報(bào)能安全無(wú)誤的到達(dá)目的地。
- IP是網(wǎng)絡(luò)層協(xié)議的主要協(xié)議。TCP和UDP中的每組數(shù)據(jù)都通過(guò)端系統(tǒng)和每個(gè)中間路由器中的IP層在互聯(lián)網(wǎng)中傳輸。
- ICMP(互聯(lián)網(wǎng)報(bào)文控制協(xié)議)是IP的附屬協(xié)議。IP用它來(lái)與其它主機(jī)或路由器交換錯(cuò)誤報(bào)文和其它重要信息。
- IGMP(互聯(lián)網(wǎng)組管理協(xié)議)。它用來(lái)把一個(gè)UDP數(shù)據(jù)報(bào)多播到多個(gè)主機(jī)上。
- APR(地址解析協(xié)議)和RARP(逆地址解析協(xié)議)是某些網(wǎng)絡(luò)接口使用的特殊協(xié)議,用來(lái)轉(zhuǎn)換IP層和網(wǎng)絡(luò)接口層使用的地址。
1.4 互聯(lián)網(wǎng)的地址
-
互聯(lián)網(wǎng)上每個(gè)接口必須有一個(gè)唯一的Internet地址(也稱作IP地址),IP地址長(zhǎng)度是32bit,Internet并不采用平面形式的地址空間,如1、2、3等。IP地址具有一定的結(jié)構(gòu),5類不同的IP地址如下圖所示。
圖1-2 五類互聯(lián)網(wǎng)地址 - 這些32的地址通寫成四個(gè)十進(jìn)制的數(shù),其中每個(gè)整數(shù)對(duì)應(yīng)一個(gè)字節(jié)。這種表示方法稱作''點(diǎn)分十進(jìn)制表示法'',例如B類地址: 140.252.13.33。
- 區(qū)分各類地址的最簡(jiǎn)單的方法是看它第一個(gè)十進(jìn)制整。圖1-3列出了各類地址的起止范圍,其中第一個(gè)十進(jìn)制整數(shù)用加黑表示。
多接口主機(jī)具有多個(gè)IP地址,其中每個(gè)接口對(duì)應(yīng)一個(gè)IP地址。
圖1-3 各類IP地址的范圍.png - 由于互聯(lián)網(wǎng)上的每個(gè)接口必須有一個(gè)唯一的IP地址,因此必須要有一個(gè)管理機(jī)構(gòu)為接入的互聯(lián)網(wǎng)分配IP地址。這個(gè)管理機(jī)構(gòu)就是互聯(lián)網(wǎng)絡(luò)信息中心(Internet Network Information Center),簡(jiǎn)稱interNIC。interNIC只分配網(wǎng)絡(luò)號(hào)。主機(jī)號(hào)的分配由系統(tǒng)管理員來(lái)分配。
有三類IP地址,單播地址(目的為單個(gè)主機(jī))、廣播地址(目的端為給定網(wǎng)絡(luò)上的所有主機(jī))、多播地址(目的端為同一組所有主機(jī))。
1.5域名系統(tǒng)
通過(guò)IP地址可以識(shí)別主機(jī)的網(wǎng)絡(luò)接口,進(jìn)而訪問(wèn)主機(jī),但是使用主機(jī)名訪問(wèn)是比較常見(jiàn)的,域名系統(tǒng)(DNS)是一個(gè)分布式數(shù)據(jù)庫(kù),用它來(lái)提供IP地址和主機(jī)名之間的映射。
1.5 端口號(hào)
TCP和UDP采用16bit的端口號(hào)來(lái)識(shí)別應(yīng)用程序。
服務(wù)器一般是通過(guò)知名端口號(hào)來(lái)識(shí)別的。
例如:對(duì)于每個(gè)TCP/IP實(shí)現(xiàn)來(lái)說(shuō),FTP服務(wù)器的TCP端口號(hào)都是21,每個(gè)Telent服務(wù)器的TCP端口號(hào)都是23....。任何TCP/IP實(shí)現(xiàn)所提供的服務(wù)都用知名的1~1023之間的端口號(hào)。這些知名的端口號(hào)由Internet號(hào)分配機(jī)構(gòu)(Internet Assigned Numbers Authority, IANA) 來(lái)管理
客戶端通常對(duì)它所使用的端口號(hào)并不關(guān)心,只需要保證該端口號(hào)在本機(jī)上唯一的 就可以了??蛻舳丝谔?hào)又稱作臨時(shí)端口號(hào),這是因?yàn)樗ǔV皇窃谟脩暨\(yùn)行改客戶程序時(shí)才存在,而服務(wù)器只要主機(jī)開著,服務(wù)就運(yùn)行。
臨時(shí)端口號(hào)一般在1024~5000之間。

