关于TCP/IP与数据传输
一、TCP/IP的具體含義:
從字面意思來講,很多人會認為TCP/IP是指TCP與IP這兩種協議。有時確實也可以說是這兩種協議,但是大部分情況下所說的是利用IP進行通信時所必須用到的協議群的統稱。具體來說IP,ICMP,TCP,UDP,FTP以及HTTP等都屬于TCP/IP協議。他們與TCP/IP之間關系密切,是互聯網不可缺少的部分。因此大部分情況下TCP/IP是泛指這些協議,有時也稱為TCP/IP為國際協議族。如圖:
?二、TCP/IP協議分層模型
TCP/IP是當今計算機網絡界使用最為廣泛的協議,了解TCP/IP不僅是網絡工程師的必須,而且也是我們小猿需要學習的東西。那么什么是TCP/IP呢,看下圖先來簡單的了解一下:
上圖列出了OSI參考模型與TCP/IP分層模型的大致關系,從圖上就可以看出,這兩者之間還是有很多差別的。但是和OSI參考模型對應起來看,能夠幫助我們更好的理解TCP/IP中每個協議具體的功能。OSI主要注重“通信協議必要的功能是什么”,而TCP/IP主要是“在計算機上實現協議應該開發那些程序”。看上去好像傳統開發模型和敏捷開發模型似的。
?1、硬件(物理層):
TCP/IP的最底層是負責數據傳輸的硬件,這種硬件就相當于以太網或者是電話線等物理層設備。
2、網絡接口層(數據鏈路層):
網絡接口層利用以太網中的數據鏈路層進行通信,因此屬于接口層。也就是說把他當做讓NIC起作用的“驅動程序”也無妨。驅動程序是在操作系統與硬件之間起橋梁作用的軟件。
3、互聯網層(網絡層):
互聯網層使用的是IP協議,相當于OSI參考模型中的網絡層。IP協議依靠IP地址進行轉發分包數據。TCP/IP分層模型中的互聯網層與傳輸層的功能通常是有操作系統提供的。尤其是路由器他必須具有互聯網層轉發分組數據包的功能。所以連接互聯網的所有的主機與路由器都必須實現IP的功能。
4、傳輸層:
TCP/IP分層模型中的傳輸層與OSI模型中的傳輸層有點類似,主要的功能就是讓應用程序之間實現通信。其中TC是一種面向有鏈接的傳輸層協議,他可以保證兩端通信主機的通信可達,但是建立與斷開連接至少需要多次的發包與收包。UDP是一種有別于與TCP的無連接的傳輸層協議,他不會關注接收端是不是接收到了數據。
5、應用層(會話層以上的分層):
TCP/IP分層模型中的應用層從圖中可以看出他不僅實現了OSI參考模型中的應用層,同時也實現了其中的表示層與會話層。我們常用的WWW,電子郵件,文件傳輸等應用都包含在其中。其中WWW中瀏覽器與服務器之間通信所用的協議就是HTTP(HyperText Transfer Protocol)協議,他所傳輸的數據的格式主要是HTML。www中的HTTP協議是屬于應用層的協議,而HTML是一種屬于表示層的協議。電子郵件中的使用協議是SMTP(Simple Mail Transfer Protocol)協議。文件傳輸中使用的協議是FTP協議。
三、TCP/IP通信的實例
我們都很好奇TCP/IP是怎么實現數據的傳輸的呢??接下來就來看一下從應用層到物理層的數據處理流程。
在TCP/IP分層模型中每個分層都會對所發送的數據附加一個首部,在這個首部中包含了該層必要的信息,比如發送的目標地址與協議的信息等。從下一層的角度來看,從上一層收到的包全部都被認為是本層的數據。
發送數據包:
我們還是用電子郵件作為例子,假設A給B發送電子郵件,內容為”早上好“。從TCP/IP的角度來看就是從計算機A把數據發送到計算機B。下面我們來了解一下具體的過程:
1、應用程序處理:
啟動郵件程序,輸入內容與收件人,當鼠標點擊“發送”后就可以開始TCP/IP的通信了。
首先會在應用程序中進行編碼處理。利用電子郵件使用UTF-8的編碼格式等,這相當于OSI中的表示層的功能。編碼完成后,實際的郵件不一定會馬上發送出去,因為有的郵件軟件可以一次發送多個,或者是定時發送,或者是接收端點擊接收才可以接收新的郵件。。像這種何時建立通信連接,何時發送數據的管理功能可以看做是OSI中的會話層。
應用在發送郵件的那一刻建立了TCP連接,從而利用這個TCP連接進行發送數據。在這個過程中首先是把數據發送給TCP,然后再進行傳遞與轉發。
2、TCP模塊的處理:
TCP根據應用的指示,負責建立連接,發送數據以及斷開連接。TCP提供了把應用層發來的數據順利發送至對端的可靠傳輸。為了實現TCP這個功能,需要在應用層數據的前端加上一個TCP首部。這個TCP的首部包括源端口號與目標端口號(用于識別發送主機與接收主機上的應用),序號(用于標示發送的包中哪部分是數據),以及效驗和(用來判斷數據是否被損壞)。然后把數據交給IP.
3、IP模塊的處理:
IP將TCP傳過來的TCP首部與數據當做自己的數據,并在TCP首部前端加上自己的IP首部。IP首部包含接收端IP與發送端的IP,緊跟IP首部的還有判斷其后面的數據是TCP還是UDP的信息。IP包生成后,參考路由控制表決定接受此IP包的路由或主機。
4、網絡接口(以太網驅動)的處理:
在接收到IP的包,這些IP的包對于以太網來說只不過是數據。給這些數據加上以太網首部并進行發送處理。以太網首部中包含接收端的MAC地址,發送端的MAC地址以及標致以太網類型的協議。
每一個包的首部至少包含兩個信息,一個是發送端與接收端的地址,另一個是上一層的協議類型。經過每個協議分層時,都必須有識別發送端與接收端的信息。以太網會用MAC地址,IP會用IP地址,而TCP/UDP則會使用端口號來識別,即使是在應用層像電子郵件這樣的地址也是一種識別。這些信息都包含在經過各個分層的數據的包的首部信息中。此外包首部中還包含了一個識別位,用來標識上一層協議的種類信息。詳細信息如圖:
數據包的接受處理:
包的接收過程與發送過程是一個逆過程。
1、網絡接口(以太網驅動)的處理:
主機接收到以太網發來的數據包之后,首先從以太網的包首部找到MAC地址來判斷這個包是不是發給自己的。不是發給自己的就丟棄,是發給自己的就解析數據包,然后轉給IP。
2、IP模塊的處理:
IP接收到從下層發來的數據包之后解析,判斷包首部的IP地址與自己的IP地址是不是同一個IP地址,如果地址相匹配,并從這個數據包中檢查上一層的數據類型,如果是TCP則會轉發給TCP進行處理,如果是UDP則會轉發給UDP進行處理。
3、TCP模塊的處理:
在TCP接收到數據之后首先會校驗數據,判斷數據是否有損壞。然后檢驗是否是按照序號接收數據,最后檢查端口號確定具體的應用程序是哪個。與此同時接收端接收到數據之后會發送一個“確認回執”到發送端,來確認數據是否發到。如果沒有確認發送端會認為數據沒有發送到,所以繼續重復發送。
4、應用程序的處理:
接收端的應用程序接收到從TCP發來的數據包之后在進行解碼,然后顯示發送數據的內容。
?
總結
以上是生活随笔為你收集整理的关于TCP/IP与数据传输的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到好几个小孩儿
- 下一篇: Codeforces Round #11