
專注于Java領(lǐng)域優(yōu)質(zhì)技術(shù),歡迎關(guān)注
作者:滌生_Woo
一、 計算機網(wǎng)絡(luò)體系結(jié)構(gòu)分層
不難看出,TCP/IP 與 OSI 在分層模塊上稍有區(qū)別 。OSI 參考模型注重“通信協(xié)議必要的功能是什么” , 而 TCP/IP 則更強調(diào)“在計算機上實現(xiàn)協(xié)議應(yīng)該開發(fā)哪種程序” 。
二、 TCP/IP 基礎(chǔ)1. TCP/IP 的具體含義
從字面意義上講 , 有人可能會認為 TCP/IP 是指 TCP 和 IP 兩種協(xié)議 。實際生活當中有時也確實就是指這兩種協(xié)議 。然而在很多情況下,它只是利用 IP 進行通信時所必須用到的協(xié)議群的統(tǒng)稱 。具體來說,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都屬于 TCP/IP 協(xié)議 。他們與 TCP 或 IP 的關(guān)系緊密 , 是互聯(lián)網(wǎng)必不可少的組成部分 。TCP/IP 一詞泛指這些協(xié)議,因此,有時也稱 TCP/IP 為網(wǎng)際協(xié)議群 。
互聯(lián)網(wǎng)進行通信時 , 需要相應(yīng)的網(wǎng)絡(luò)協(xié)議,TCP/IP 原本就是為使用互聯(lián)網(wǎng)而開發(fā)制定的協(xié)議族 。因此 , 互聯(lián)網(wǎng)的協(xié)議就是 TCP/IP,TCP/IP 就是互聯(lián)網(wǎng)的協(xié)議 。
2. 數(shù)據(jù)包
包、幀、數(shù)據(jù)包、段、消息
以上五個術(shù)語都用來表述數(shù)據(jù)的單位 , 大致區(qū)分如下:
包可以說是全能性術(shù)語;幀用于表示數(shù)據(jù)鏈路層中包的單位;數(shù)據(jù)包是 IP 和 UDP 等網(wǎng)絡(luò)層以上的分層中包的單位;段則表示 TCP 數(shù)據(jù)流中的信息;消息是指應(yīng)用協(xié)議中數(shù)據(jù)的單位 。每個分層中,都會對所發(fā)送的數(shù)據(jù)附加一個首部,在這個首部中包含了該層必要的信息,如發(fā)送的目標地址以及協(xié)議相關(guān)信息 。通常,為協(xié)議提供的信息為包首部,所要發(fā)送的內(nèi)容為數(shù)據(jù) 。在下一層的角度看 , 從上一層收到的包全部都被認為是本層的數(shù)據(jù) 。
數(shù)據(jù)包首部
網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)包由兩部分組成:一部分是協(xié)議所要用到的首部,另一部分是上一層傳過來的數(shù)據(jù) 。首部的結(jié)構(gòu)由協(xié)議的具體規(guī)范詳細定義 。在數(shù)據(jù)包的首部,明確標明了協(xié)議應(yīng)該如何讀取數(shù)據(jù) 。反過來說,看到首部,也就能夠了解該協(xié)議必要的信息以及所要處理的數(shù)據(jù) 。包首部就像協(xié)議的臉 。
3. 數(shù)據(jù)處理流程
下圖以用戶 a 向用戶 b 發(fā)送郵件為例子:
① 應(yīng)用程序處理 首先應(yīng)用程序會進行編碼處理 , 這些編碼相當于 OSI 的表示層功能; 編碼轉(zhuǎn)化后,郵件不一定馬上被發(fā)送出去,這種何時建立通信連接何時發(fā)送數(shù)據(jù)的管理功能,相當于 OSI 的會話層功能 。② TCP 模塊的處理 TCP 根據(jù)應(yīng)用的指示,負責(zé)建立連接、發(fā)送數(shù)據(jù)以及斷開連接 。TCP 提供將應(yīng)用層發(fā)來的數(shù)據(jù)順利發(fā)送至對端的可靠傳輸 。為了實現(xiàn)這一功能,需要在應(yīng)用層數(shù)據(jù)的前端附加一個 TCP 首部 。③ IP 模塊的處理 IP 將 TCP 傳過來的 TCP 首部和 TCP 數(shù)據(jù)合起來當做自己的數(shù)據(jù),并在 TCP 首部的前端加上自己的 IP 首部 。IP 包生成后,參考路由控制表決定接受此 IP 包的路由或主機 。④ 網(wǎng)絡(luò)接口(以太網(wǎng)驅(qū)動)的處理 從 IP 傳過來的 IP 包對于以太網(wǎng)來說就是數(shù)據(jù) 。給這些數(shù)據(jù)附加上以太網(wǎng)首部并進行發(fā)送處理,生成的以太網(wǎng)數(shù)據(jù)包將通過物理層傳輸給接收端 。⑤ 網(wǎng)絡(luò)接口(以太網(wǎng)驅(qū)動)的處理 主機收到以太網(wǎng)包后 , 首先從以太網(wǎng)包首部找到 MAC 地址判斷是否為發(fā)送給自己的包,若不是則丟棄數(shù)據(jù) 。如果是發(fā)送給自己的包,則從以太網(wǎng)包首部中的類型確定數(shù)據(jù)類型,再傳給相應(yīng)的模塊,如 IP、ARP 等 。這里的例子則是 IP。⑥ IP 模塊的處理 IP 模塊接收到 數(shù)據(jù)后也做類似的處理 。從包首部中判斷此 IP 地址是否與自己的 IP 地址匹配,如果匹配則根據(jù)首部的協(xié)議類型將數(shù)據(jù)發(fā)送給對應(yīng)的模塊,如 TCP、UDP 。這里的例子則是 TCP 。另外嗎,對于有路由器的情況,接收端地址往往不是自己的地址,此時,需要借助路由控制表,在調(diào)查應(yīng)該送往的主機或路由器之后再進行轉(zhuǎn)發(fā)數(shù)據(jù) 。⑦ TCP 模塊的處理 在 TCP 模塊中,首先會計算一下校驗和,判斷數(shù)據(jù)是否被破壞 。然后檢查是否在按照序號接收數(shù)據(jù) 。最后檢查端口號,確定具體的應(yīng)用程序 。數(shù)據(jù)被完整地接收以后 , 會傳給由端口號識別的應(yīng)用程序 。⑧ 應(yīng)用程序的處理 接收端應(yīng)用程序會直接接收發(fā)送端發(fā)送的數(shù)據(jù) 。通過解析數(shù)據(jù),展示相應(yīng)的內(nèi)容 。三、傳輸層中的 TCP 和 UDPTCP/IP 中有兩個具有代表性的傳輸層協(xié)議 , 分別是 TCP 和 UDP 。
推薦閱讀
- 房產(chǎn)私人協(xié)議有效嗎? 房產(chǎn)私人協(xié)議有效嗎
- 離婚能異地辦理嗎? 協(xié)議離婚能異地辦理嗎
- 離婚協(xié)議做公證需要哪些手續(xù) 離婚協(xié)議做公證需要哪些手續(xù)和證件
- 婚后財產(chǎn)協(xié)議離婚時有效嗎? 婚后財產(chǎn)協(xié)議離婚時有效嗎怎么寫
- 怎樣寫離婚協(xié)議書 怎樣寫離婚協(xié)議書模板
- 收養(yǎng)協(xié)議有哪一些內(nèi)容 收養(yǎng)協(xié)議有哪一些內(nèi)容呢
- 如何 堆棧 ps
- 協(xié)議離婚孩子撫養(yǎng)權(quán)的規(guī)定有哪一些
- 怎樣寫離婚協(xié)議書模板 怎樣寫離婚協(xié)議書
- 借車協(xié)議法律認可嗎? 借車協(xié)議法律認可嗎
