ip
ip層接收由更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)備驅(qū)動程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層——tcp或udp層;相反,ip層也把從tcp或udp層接收來的數(shù)據(jù)包傳送到更低層。ip數(shù)據(jù)包是不可靠的,因?yàn)閕p并沒有做任何事情來確認(rèn)數(shù)據(jù)包是按順序發(fā)送的或者沒有被破壞。ip數(shù)據(jù)包中含有發(fā)送它的主機(jī)的地址(源地址)和接收它的主機(jī)的地址(目的地址)。
高層的tcp和udp服務(wù)在接收數(shù)據(jù)包時(shí),通常假設(shè)包中的源地址是有效的。也可以這樣說,ip地址形成了許多服務(wù)的認(rèn)證基礎(chǔ),這些服務(wù)相信數(shù)據(jù)包是從一個(gè)有效的主機(jī)發(fā)送來的。ip確認(rèn)包含一個(gè)選項(xiàng),叫作ip source routing,可以用來指定一條源地址和目的地址之間的直接路徑。對于一些tcp和udp的服務(wù)來說,使用了該選項(xiàng)的ip包好像是從路徑上的最后一個(gè)系統(tǒng)傳遞過來的,而不是來自于它的真實(shí)地點(diǎn)。這個(gè)選項(xiàng)是為了測試而存在的,說明了它可以被用來欺騙系統(tǒng)來進(jìn)行平常是被禁止的連接。那么,許多依靠ip源地址做確認(rèn)的服務(wù)將產(chǎn)生問題并且會被非法入侵。
tcp
tcp是面向連接的通信協(xié)議,通過三次握手建立連接,通訊完成時(shí)要拆除連接,由于tcp是面向連接的所以只能用于端到端的通訊。
tcp提供的是一種可靠的數(shù)據(jù)流服務(wù),采用“帶重傳的肯定確認(rèn)”技術(shù)來實(shí)現(xiàn)傳輸?shù)目煽啃?。tcp還采用一種稱為“滑動窗口”的方式進(jìn)行流量控制,所謂窗口實(shí)際表示接收能力,用以限制發(fā)送方的發(fā)送速度。
如果ip數(shù)據(jù)包中有已經(jīng)封好的tcp數(shù)據(jù)包,那么ip將把它們向“上”傳送到tcp層。tcp將包排序并進(jìn)行錯(cuò)誤檢查,同時(shí)實(shí)現(xiàn)虛電路間的連接。tcp數(shù)據(jù)包中包括序號和確認(rèn),所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。
tcp將它的信息送到更高層的應(yīng)用程序,例如telnet的服務(wù)程序和客戶程序。應(yīng)用程序輪流將信息送回tcp層,tcp層便將它們向下傳送到ip層,設(shè)備驅(qū)動程序和物理介質(zhì),最后到接收方。
面向連接的服務(wù)(例如telnet、ftp、rlogin、x windows和smtp)需要高度的可靠性,所以它們使用了tcp。dns在某些情況下使用tcp(發(fā)送和接收域名數(shù)據(jù)庫),但使用udp傳送有關(guān)單個(gè)主機(jī)的信息。
udp
udp是面向無連接的通訊協(xié)議,udp數(shù)據(jù)包括目的端口號和源端口號信息,由于通訊不需要連接,所以可以實(shí)現(xiàn)廣播發(fā)送。
udp通訊時(shí)不需要接收方確認(rèn),屬于不可靠的傳輸,可能會出丟包現(xiàn)象,實(shí)際應(yīng)用中要求程序員編程驗(yàn)證。
udp與tcp位于同一層,但它不管數(shù)據(jù)包的順序、錯(cuò)誤或重發(fā)。因此,udp不被應(yīng)用于那些使用虛電路的面向連接的服務(wù),udp主要用于那些面向查詢——應(yīng)答的服務(wù),例如nfs。相對于ftp或telnet,這些服務(wù)需要交換的信息量較小。使用udp的服務(wù)包括ntp(網(wǎng)絡(luò)時(shí)間協(xié)議)和dns(dns也使用tcp)。
欺騙udp包比欺騙tcp包更容易,因?yàn)閡dp沒有建立初始化連接(也可以稱為握手)(因?yàn)樵趦蓚€(gè)系統(tǒng)間沒有虛電路),也就是說,與udp相關(guān)的服務(wù)面臨著更大的危險(xiǎn)。