TCP/IP協(xié)議
文章出處:http://hlpi.cn 作者:興邦開發(fā)部
Transmission Control Protocol/Internet Protocol的簡寫,,中譯名為傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議,又名網(wǎng)絡(luò)通訊協(xié)議,是Internet最基本的協(xié)議,、Internet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ),,由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成。TCP/IP 定義了電子設(shè)備如何連入因特網(wǎng),,以及數(shù)據(jù)如何在它們之間傳輸?shù)臉藴?。協(xié)議采用了4層的層級結(jié)構(gòu),每一層都呼叫它的下一層所提供的協(xié)議來完成自己的需求,。通俗而言:TCP負責發(fā)現(xiàn)傳輸?shù)膯栴},,一有問題就發(fā)出信號,要求重新傳輸,,直到所有數(shù)據(jù)安全正確地傳輸?shù)侥康牡?。而IP是給因特網(wǎng)的每一臺聯(lián)網(wǎng)設(shè)備規(guī)定一個地址。
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ù)包是不可靠的,,因為IP并沒有做任何事情來確認數(shù)據(jù)包是否按順序發(fā)送的或者有沒有被破壞,IP數(shù)據(jù)包中含有發(fā)送它的主機的地址(源地址)和接收它的主機的地址(目的地址),。
高層的TCP和UDP服務(wù)在接收數(shù)據(jù)包時,,通常假設(shè)包中的源地址是有效的。也可以這樣說,,IP地址形成了許多服務(wù)的認證基礎(chǔ),,這些服務(wù)相信數(shù)據(jù)包是從一個有效的主機發(fā)送來的。IP確認包含一個選項,,叫作IP source routing,,可以用來指定一條源地址和目的地址之間的直接路徑。對于一些TCP和UDP的服務(wù)來說,,使用了該選項的IP包好像是從路徑上的最后一個系統(tǒng)傳遞過來的,,而不是來自于它的真實地點。這個選項是為了測試而存在的,,說明了它可以被用來欺騙系統(tǒng)來進行平常是被禁止的連接,。那么,許多依靠IP源地址做確認的服務(wù)將產(chǎn)生問題并且會被非法入侵,。
TCP
TCP是面向連接的通信協(xié)議,,通過三次握手建立連接,通訊完成時要拆除連接,,由于TCP是面向連接的所以只能用于端到端的通訊,。
TCP提供的是一種可靠的數(shù)據(jù)流服務(wù),,采用“帶重傳的肯定確認”技術(shù)來實現(xiàn)傳輸?shù)目煽啃浴CP還采用一種稱為“滑動窗口”的方式進行流量控制,,所謂窗口實際表示接收能力,,用以限制發(fā)送方的發(fā)送速度。
如果IP數(shù)據(jù)包中有已經(jīng)封好的TCP數(shù)據(jù)包,,那么IP將把它們向‘上’傳送到TCP層,。TCP將包排序并進行錯誤檢查,同時實現(xiàn)虛電路間的連接,。TCP數(shù)據(jù)包中包括序號和確認,,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳,。
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)單個主機的信息。
UDP
UDP是面向無連接的通訊協(xié)議,,UDP數(shù)據(jù)包括目的端口號和源端口號信息,,由于通訊不需要連接,所以可以實現(xiàn)廣播發(fā)送,。UDP通訊時不需要接收方確認,,屬于不可靠的傳輸,可能會出現(xiàn)丟包現(xiàn)象,,實際應(yīng)用中要求程序員編程驗證,。
UDP與TCP位于同一層,但它不管數(shù)據(jù)包的順序,、錯誤或重發(fā),。因此,UDP不被應(yīng)用于那些使用虛電路的面向連接的服務(wù),,UDP主要用于那些面向查詢---應(yīng)答的服務(wù),,例如NFS,。相對于FTP或Telnet,這些服務(wù)需要交換的信息量較小,。使用UDP的服務(wù)包括NTP(網(wǎng)絡(luò)時間協(xié)議)和DNS(DNS也使用TCP),。
欺騙UDP包比欺騙TCP包更容易,因為UDP沒有建立初始化連接(也可以稱為握手)(因為在兩個系統(tǒng)間沒有虛電路),,也就是說,,與UDP相關(guān)的服務(wù)面臨著更大的危險。
ICMP
ICMP與IP位于同一層,,它被用來傳送IP的控制信息,。它主要是用來提供有關(guān)通向目的地址的路徑信息。ICMP的‘Redirect’信息通知主機通向其他系統(tǒng)的更準確的路徑,,而‘Unreachable’信息則指出路徑有問題,。另外,,如果路徑不可用了,,ICMP可以使TCP連接‘體面地’終止。PING是最常用的基于ICMP的服務(wù),。