TCP/IP
文章推薦指數: 80 %
最後,在PC 上面的TCP 將封包解碼並翻譯成PC 能夠懂的格式,也就是它自己所使用的網路協定。
IP 封包表頭格式. Version (4).
TCP/IP
IP封包表頭格式
Version
InternetHeaderLength
TypeofService
TotalLength
Identification
Flag
FragmentOffset
TimeToLive
Protocol
HeaderChecksum
SourceIPAddress
DestinationIPAddress
SOptions&Padding
若說起歷史,TCP/IP也算得上是個冷戰時代的產物,它是應美國國防部的戰爭考量而提出開發的。
TCP/IP當初是用來配合ARPANET(AdvancedResearchProjectsAgencyNetwork)來處理不同硬體之間的連接問題的,比如Sun系統和Mainframe、Mainframe和個人電腦之間的連接。
事實上,TCP/IP所指的是一整套龐大的通訊協定家族,其中以TransmissionControlProtocol(TCP)及InternetProtocol(IP)這兩套協定最具代表性。
IP協定工作於網路層(以後會繼續和大家探討OSI的網路層級),它提供了一套標準讓不同的網路有規則可循。
當然,前提是您想使用IP從一個網路將封包路由到另一個網路。
IP在設計上可用來在LAN-LAN及PC-PC之間進行傳輸的。
您可以把IP看成是游戲規則,而TCP則用來詮釋這些規則的。
雖然TCP/IP原先是專門為幾所大學和機構的使用而設計的,但現在TCP/IP已經成為最流行的通訊協定了,我們使用的Internet就是用TCP/IP來傳送封包的了。
下面就讓我們看看TCP/IP是怎樣工作的:
假如您的公司在好些地方都有分公司,各自都有著自己的本地網路(LAN),在總公司跑的是PC網路,但分公司大部份都是用麥金塔電腦。
當Mac有數據要傳送給PC的時候將會如何呢?
首先,TCP會在這兩個平臺建立起一個可以提供全雙工檢錯(對雙向的數據都進行錯誤檢測)的連接。
接著,IP制定好Mac和PC之間的溝通規則,TCP與上層協定制定用以連接的埠(port)。
到這裡為止,Mac端已經準備好數據了,如果數據太大,就將之分拆成幾份較小的封包,並且在封包上面加上一個新的header(內含轉送位址),確保封包會被正確傳送。
TCP/IP還會加上標籤說明數據的種類及其長度。
再下來,IP協定將負責將封包傳送給PC。
最後,在PC上面的TCP將封包解碼並翻譯成PC能夠懂的格式,也就是它自己所使用的網路協定。
IP封包表頭格式
Version(4)
InternetHeaderLength(4)
TypeofService(8)
TotalLength(16)
Identification(16)
Flags(3)
FragmentOffset(13)
TimeToLive(8)
Protocol(8)
Headerchecksum(16)
SourceAddress(32)
DestinationAddress(32)
Options(Variable)
Padding(0-24)
Data
。
。
。
。
在上圖中,括號之內的數字就是各部件的長度(bit),如果您夠細心,就會計算得出每一行的總長度都是32bit。
事實上,真正的封包是有連續的位元依序排列在一起的,之所以分行,完全是因為排版的關係。
下面,我們分別對各部件名稱解釋一下
Version
版本(VER)。
表示的是IP規格版本,目前的IP規格多為版本4(version4),所以這裡的數值通常為0x4(注意:封包使用的數字通常都是十六進位的)。
InternetHeaderLength
標頭長度(IHL)。
我們從IP封包規格中看到前面的6行為header,如果Options和Padding沒有設定的話,也就只有5行的長度﹔我們知道每行有32bit,也就是4byte﹔那麼,5列就是20byte了。
20這個數值換成16進位就成了0x14,所以,當封包標頭長度為最短的時候,這裡數值會被換算為0x14。
TypeofService
服務類型(TOS)。
這裡指的是IP封包在傳送過程中要求的服務類型,其中一共由8個bit組成,每組bit組合分別代表不同的意思:
TotalLength
封包總長(TL)。
通常以byte做單位來表示該封包的總長度,此數值包括標頭和數據的總和。
Identification
識別碼(ID)。
每一個IP封包都有一個16bit的唯一識別碼。
我們從OSI和TCP/IP的網路層級知識裡面知道:當程式產生的數據要通過網路傳送時,都會在傳送層被拆散成封包形式發送,當封包要進行重組的時候,這個ID就是依據了。
Flag
旗標(FL)。
這是當封包在傳輸過程中進行最佳組合時使用的3個bit的識別記號。
FragmentOffset
分割定位(FO)。
當一個大封包在經過一些傳輸單位(MTU)較小的路徑時,會被被切割成碎片(fragment)再進行傳送(這個切割和傳送層的打包有所不同,它是由網路層決定的)。
由於網路情況或其它因素影響,其抵達順序並不會和當初切割順序一至的。
所以當封包進行切割的時候,會為各片段做好定位記錄,所以在重組的時候,就能夠依號入座了。
如果封包沒有被切割,那麼FO的值為“0”。
TimeToLive
存活時間(TTL)。
這個TTL的概念,在許多網路協定中都會碰到。
當一個封包被賦予TTL值(以秒或跳站數目(hop)為單位),之後就會進行倒數計時。
在IP協定中,TTL是以hop為單位,每經過一個router就減一),如果封包TTL值被降為0的時候,就會被丟棄。
這樣,當封包在傳遞過程中由於某些原因而未能抵達目的地的時候,就可以避免其一直充斥在網路上面。
有隻叫做traceroute的程式,就是一個上佳的TTL利用實作,我們會在後面的章節裡面討論。
Protocol
協定(PROT)。
這裡指的是該封包所使用的網路協定類型,例如:ICMP或TCP/UDP等等。
HeaderChecksum
標頭檢驗值(HC)。
這個數值主要用來檢錯用的,用以確保封包被正確無誤的接收到。
當封包開始進行傳送後,接收端主機會利用這個檢驗值會來檢驗餘下的封包,如果一切看來無誤,就會發出確認信息,表示接收正常。
SourceIPAddress
來源位址(SA)。
相信這個不用多解釋了,就是發送端的IP位址是也,長度為32bit。
DestinationIPAddress
目的地位址(SA)。
也就是接收端的IP位址,長度為32bit。
Options&Padding
這兩個選項甚少使用,只有某些特殊的封包需要特定的控制,才會利用到。
Copyright©2003byTWNIC.Allrightsbereserved.
延伸文章資訊
- 1TCP/IP
最後,在PC 上面的TCP 將封包解碼並翻譯成PC 能夠懂的格式,也就是它自己所使用的網路協定。 IP 封包表頭格式. Version (4).
- 2[網際網路] 乙太網路封包格式(MAC Frame Format) - 菜園角耕耘 ...
Ethernet (802.3 MAC frame format) 在網路傳輸資料是透過所謂的封包來傳送,封包內包含了目的及來源的MAC位址、IP和Port,才能夠讓資料正確的傳送到 ...
- 3實驗2 乙太網路協定分析
說明如下:『乙太網路(Ethernet)是一種電腦區 ... 至於網路系統中要如何決定採用何種框架格式,並非 ... 讓封包解析的工作方便些,例如只要解析通訊協定Type為.
- 4Ethernet 封包格式與長度
最短封包64 octets,低於此長度的封包稱為runt frame。 ... 常見的Ethernet 封包格式是Ethernet II,或稱為DIX (DEC, Intel, ... 查看網路版.
- 5Ethernet II 協定與分析- TCP/IP - 翻轉工作室
早期 Ethernet 網路是採用 CSMA/CD (IEEE 802.3) 協定建構而成,係在匯流排的網路 ... 因此,ITE 簡化了 Ethernet 封包成為 Ethernet II (...