TCP/IP網絡是如何通訊的

轉載http://forum.eet-cn.com/BLOG_ARTICLE_6265.HTM?click_from=8800069361,9949979222,2011-01-05,EECOL,FORUM_ALERT

在使用TCP/IP協議通信的網絡中,可以形象地理解爲有兩個信封,TCP和IP就是信封。待傳遞的信息被劃分成若干段,每一段塞入一個TCP信封,並在該信封面上記錄有分段號的信息,再將 TCP信封塞入IP大信封,發送上網。在接收端,一個TCP軟件包接收信封,抽出數據,按發送前的順序將信息還原,並加以校驗,若發現差錯,TCP將會要求重發。因此,TCP/IP在網絡中幾乎可以無差錯地傳送數據。

但是這些信是如何到達目的地的呢?

我們來打個比方:以下圖爲例,小K住在村1的H1中,村裏有個郵局H0。現在小K有兩封信分別要給住在村1的H3和村2的H1中的人。

tu1.jpg



操作的步驟如下:

小K首先在信封上都標註收信人的地址。第一封信的地址是:村1.H3;第二封信的地址是:村2.H2。

然後,小K比較了一下第一封的地址和自己的地址,發現第一封信的收信人和自己在一個村,所以最簡單和經濟的辦法就是自己送去。

接下來,小K比較了一下第二封的地址和自己的地址,發現第二封信的收信人和自己不在一個村,甚至自己也不知道如何到達那裏,所以小K只好把信送到郵局,由郵局來送這封信。

信總算送出去了。現在我們來總結一下這個過程需要哪些要素。

首先需要一個地址,這個地址包括兩部分:一是你是哪個村的,二是你住在村裏的哪個屋子裏。

其次需要郵局來送的不是同一個村的信,因爲同一個村的信是不需要通過郵局的。

在使用TCP/IP協議通信的網絡中,這個地址就是“IP地址”,IP地址分爲網絡號和主機號兩部分,由四段1-255的數字組成。網絡號就相當於地址中標明是哪個村的部分,一個村的網絡號是相同的,一個網絡號代表一個“子網”。主機號就相當於地址中標明是哪座房子的部分。然而,在IP地址中並沒有明確規定哪個部分是網絡號,哪個部分是主機號,還需要“子網掩碼”來進行區分。網絡中的每臺計算機都有自己的IP地址,這個地址不能重複。

郵局就是實現路由功能的路由器,它知道如何把數據發送到其他子網上。路由器和網絡上的其他計算機一樣有自己的IP地址。當計算機發現要發送數據的目的地和自己不在同一個子網內時,就把數據發到路由器。爲了使同一個子網內的計算機識別出路由器,需要在計算機上配置一下,告訴計算機路由器的IP地址,這個地址在操作系統中稱爲“GateWay(網關)”。

TCP/IP 的分層結構:

TCP/IP(Transmission Control Protocol/Internet Protocol)已成爲一個事實上的工業標準。

TCP/IP是一組協議的代名詞,它還包括許多協議,組成了TCP/IP協議簇。TCP/IP協議簇分爲四層,IP位於協議簇的第二層(對應OSI的第三層),TCP位於協議簇的第三層(對應OSI的第四層)。TCP和IP是TCP/IP協議簇的中間兩層,是整個協議簇的核心,起到了承上啓下的作用。

1、接口層

TCP/IP的最低層是接口層,常見的接口層協議有:Ethernet 802.3、Token Ring 802.5、X.25、Frame reley、HDLC、PPP等。

2、網絡層

網絡層包括:IP(Internet Protocol)協議、ICMP(Internet Control Message Protocol)控制報文協議、ARP(Address Resolution Protocol)地址轉換協議、RARP(Reverse ARP)反向地址轉換協議。

IP是網絡層的核心,通過路由選擇將下一跳IP封裝後交給接口層。IP數據報是無連接服務。

ICMP是網絡層的補充,可以回送報文。用來檢測網絡是否通暢。Ping命令就是發送ICMP的echo包,通過回送的echo relay進行網絡測試。

ARP是正向地址解析協議,通過已知的IP,尋找對應主機的MAC地址。

RARP是反向地址解析協議,通過MAC地址確定IP地址。比如無盤工作站和DHCP服務。

3、傳輸層

傳輸層協議主要是:傳輸控制協議TCP(Transmission Control Protocol)和用戶數據報協議UDP(User Datagram rotocol)。

TCP是面向連接的通信協議,通過三次握手建立連接,通訊時完成時要拆除連接,由於TCP是面向連接的所以只能用於點對點的通訊。TCP提供的是一種可靠的數據流服務,採用“帶重傳的肯定確認”技術來實現傳輸的可靠性。TCP還採用一種稱爲“滑動窗口”的方式進行流量控制,所謂窗口實際表示接收能力,用以限制發送方的發送速度。

UDP是面向無連接的通訊協議,UDP數據包括目的端口號和源端口號信息,由於通訊不需要連接,所以可以實現廣播發送。UDP通訊時不需要接收方確認,屬於不可靠的傳輸,可能會出丟包現象,實際應用中要求在程序員編程驗證。

4、應用層

應用層一般是面向用戶的服務。如FTP、TELNET、DNS、SMTP、POP3。

FTP(File Transmision Protocol)是文件傳輸協議,一般上傳下載用FTP服務,數據端口是20H,控制端口是21H。

Telnet服務是用戶遠程登錄服務,使用23H端口,使用明碼傳送,保密性差、簡單方便。

DNS(Domain Name Service)是域名解析服務,提供域名到IP地址之間的轉換。

SMTP(Simple Mail Transfer Protocol)是簡單郵件傳輸協議,用來控制信件的發送、中轉。

POP3(Post Office Protocol 3)是郵局協議第3版本,用於接收郵件。

數據格式:

數據幀:幀頭+IP數據包+幀尾 (幀頭包括源和目標主機MAC地址及類型,幀尾是校驗字)

IP數據包:IP頭部+TCP數據信息 (IP頭包括源和目標主機IP地址、類型、生存期等)

TCP數據信息:TCP頭部+實際數據 (TCP頭包括源和目標主機端口號、順序號、確認號、校驗字等)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章