TCP/IP協議 輪廓性 總結

互聯網核心是一系列的協議,TCP/IP協議是使用最廣泛的互聯網通信協議。

爲減少協議複雜性,大多數網絡模型都是按分層的方式來組織,有分7層(OSI模型),有分4層(TCP/IP模型)。TCP/IP協議分5層,每一層都爲上一層提供服務,每一層也有自己的功能。越底層越靠近硬件,越頂層越靠近用戶。無論分幾層,內在的協議都沒有改變。

實體層(物理層)

把電腦用光纜,無線電波等物理方式連接起來的層次。它主要規定了網絡的一些電氣特徵,作用是負責傳送0,1的電信號。

鏈接層(數據鏈路層)

實體層上方,規定讀取電信號方式,電信號分組以及每個電信號的分配方式。早期每家公司都有自己不同的電信號分配方式,後來逐漸被以太網協議占主導地位。該協議規定,一組電信號構成一個數據包,即“幀”。每個幀分兩部分:標頭和數據。標頭包含數據的一些說明項,如發送者,接受者,數據類型等,長度固定爲18個Byte。數據則是數據包的具體內容,長度規定爲最短46Byte,最長1500Byte。因此整個幀的長度爲64Byte~1518Byte。數據過長時會分割幀。

定義地址。對於以太網,連入網絡的所有設備都必須有網卡接口,數據包必須從A網卡傳送到B網卡。網卡地址即數據包的發送地址和接收地址,即MAC地址(物理地址),有了MAC地址,即可定位網卡和數據包的路徑了。網卡地址在生產過程即被固定,且全球唯一,長度48位,通常用12個16進製表示。前6個十六進制爲廠商編號,後6位爲該廠商的網卡流水號。

查看主機MAC地址方法:


A網卡如何知道B網卡的MAC地址呢?用ARP協議(地址解析協議)

廣播發送方式。有了MAC地址,以太網就能向本網絡內所有計算機發送數據包,讓每臺計算機自己判斷是否爲接收方。如1計算機向2計算機發送數據包,同一子網絡的3,4,5計算機都會收到該包,它們讀取包的標頭,找到接收方的MAC地址後與自己的MAC地址比較,如果相同,就接受,否則丟棄。

有了數據包定義,網卡MAC地址,廣播的發送方式,鏈接層就可以在多個計算機之間傳送數據了。


網絡層

以太網協議,單單依靠MAC地址發送數據的重大缺點是:所有成員人手一包,效率低;侷限在發送方所在的子網絡。如果A計算機和B計算不再同一子網絡,用廣播方式數據是不能互傳的。

所以,就必須有網絡層的存在。其作用是引進一套新的地址,即網絡地址,簡稱網址,能夠是我們區分不同計算機是否在同一子網絡。而計算機也就有了兩個地址,一個是MAC地址,一個是IP地址IP地址與底層硬件無關。這兩個地址沒有任何聯繫。MAC地址綁定在網卡上,IP地址由管理員分配。IP地址確定計算機所在的子網絡,MAC地址則將數據包送到該子網絡的目標網卡中,也就是說,先處理IP地址,再處理MAC地址。

規定網絡地址的協議,即IP協議。目前廣泛採用的是IP協議第四版,簡稱IPv4。該版本規定了網址由32個二進制位組成。習慣上,我們用分成四段的十進制數來表示IP地址:0.0.0.0~255.255.255.255。

互聯網上的每臺計算機都會分配到一個IP地址,該地址分爲兩個部分:前一部分代表網絡ID,後一部分代表主機ID。如IP地址:172.16.254.1,假定網絡部分是前24位(172.16.254),則主機部分就是1。處於同一子網絡的計算機,IP地址的網絡部分必須相同。

IP地址中網絡部分到底佔幾位,沒有確定,因此無法從IP地址上確切判斷網絡部分。

127.0.0.1是特殊的IP地址,代表主機,用於測試本機上的TCP/IP協議是否能正常工作。可ping一下該IP地址確定下。

如何從IP地址判斷兩臺計算機是否屬於同一子網絡?需要子網掩碼。

TCP/IP上的每臺主機還有一個32位的子網掩碼,用來區分IP地址的網絡號和主機號。

IP地址 & 子網掩碼 =IP地址的網絡號網絡號是一臺主機所處的主機編號。形式等同IP地址,其網絡部分全爲1,主機部分全爲0。如,IP = 172.16.254.1,若已知網絡號爲前24位, 主機部分後8位,則子網掩碼是1111 1111.1111 1111. 1111 1111.0000 0000,十進制即255.255.255.0。

將兩個IP地址按位與子網掩碼後,比較兩個結果,如果相同,表明在同一子網絡中。

總之,IP協議的作用就是:1,爲每臺計算機分配IP地址;2,確定哪些網絡在同一子網絡

根據IP協議發送的數據包即IP數據包,其中必定包含IP地址信息。因爲以太網數據包中只包含MAC地址欄位,而沒有IP地址欄位。因此,我們可以直接把IP數據包直接放進以太網數據包的“數據”部分。這就體現了互聯網分層的好處:上層的變動完全不涉及下層的結構。具體來書,IP數據包也分爲“標頭”和“數據”。標頭部分包括版本,長度,IP地址等信息,長度爲20到60Byte,數據部分則是IP數據包的具體內容。整個數據包的總長爲65535Byte。即IP數據包的數據部分最長65515Byte。因爲以太網數據包的數據部分最長只有1500Byte,因此,超出時將分割處理。

網絡層的ARP協議。IP數據包放在以太網數據包中發送,我們必須知道的兩個地址:MAC地址,對方IP地址(通常情況下可知)。對於MAC地址,需要一種機制能夠從IP地址中獲取。

情況一:兩臺主機不在同一子網絡,此時無法獲取MAC地址,只能把數據包送到子網絡連接處的網關(gateway),讓網關處理去。

情況二:在同一子網絡,使用ARP協議。ARP協議發出一個包含在以太網數據包中的數據包,其中包含所要查詢的主機IP地址,在對方MAC地址一欄上填上FF:FF:FF:FF:FF:FF,表示這是一個“廣播”地址。其所在子網絡的每臺主機都會接收到該數據包,從中去出IP地址,與自身IP地址比較。如果相同,則回覆對方報告自己的MAC地址,否則丟棄。


傳輸層

同一主機在上網時如何區分數據包的內容屬於哪一個運行程序的,如網頁,QQ?

爲了區分開來,我們需要一個參數,即端口“port”表示這個數據包供給哪個程序、線程用。端口其實是每個使用網卡的程序的編號。每個數據包發到主機的特定端口,由端口決定哪一個程序取到自己需要的數據。

端口是0~65535之間的一個整數,正好16爲二進制數。0~1023的端口被系統佔用。應用程序會隨機選用1023後的一個端口與服務器的相應端口聯繫。 一臺主機不同進程綁定到不同端口,這些進程訪問網絡就不會相互干擾

傳輸層的功能就是建立“端口到端口”的通信,只要確定主機和端口就可實現程序之間的交流。而網絡層則是建立“主機到主機”的通信。Unix系統把主機+端口統稱爲套接字(socket)。

把數據包加到端口信息,需要新的協議,最簡單的是UDP協議,格式幾乎就是在數據前面加上端口號。UDP協議嚮應用程序提供一種面向無連接的服務(不需要建立鏈接,應用程序採用UDP協議無需建立和鏈接),通常運用於不需可靠數據傳輸的網絡環境中(UDP不保證數據報按順序,正確傳達目的地,這項任務有應用程序完成)。

UDP數據包:標頭+數據。標頭主要定義發出端口和接收端口。數據部分是具體內容。整個UDP數據包放入IP數據包的數據部分。優點:簡單容易實現。缺點:可靠性差,數據包發出不知對方是否收到。

爲提高網絡可靠性,就產生了TCP協議,一種有確認機制的UDP協議,沒發出一個數據包就要求確認。如果收不到確認,發出方就會重發。TCP協議缺點:過程複雜,實現困難,消耗較多資源。

TCP數據包和UDP數據包一樣內嵌在IP數據包的數據部分。TCP數據包沒有長度限制,理論上可無限長,但爲保證效率,通常不會超過IP數據包的長度,以確保單個TCP數據包不被分割。

用TCP通信的過程

建立連接

1,連接的發起端(客戶端)向目標計算機(服務器)發送一個請求建立連接的數據包

2,服務器收到請求,對客戶端的同步信號作出迴應,併發送自己同步信號給客戶端

3,客戶端對服務器發來的同步信號進行響應,完成建立連接。此過程成爲第三次握手


關閉

1,請求主機發送一個關閉連接的請求給另一方

2,另一方收到請求發送一個接受請求的確認數據包,並關閉socket連接

3,主機收到確認數據包後發送已收到的確認數據包,請求主機關閉它的socket


應用層

應用程序收到傳輸層的數據,接下來就要盡心解讀。應用層的作用就是對來自網絡的各種數據包,規定應用程序的數據格式。

比如,TCP協議爲各種應用程序傳遞數據,如Email,www,FTP等,那麼就必須有不同協議規定電子郵件,網頁,FTP數據的格式,這些應用程序協議就構成了應用層。這些協議數據放在TCP數據包的數據部分。



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