1 為什么要用TCP/IP?
TCP/IP(Transmission Control Protocol / Internet Protocol,傳送控制協議/網際協議)之所以強大的最主要的一個原因在于它可以使用在多種物理網絡技術上,包括局域網和廣域網技術,并能適應幾乎所有的底層通信技術。20世紀80年代初,先在X.25上運行TCP/IP協議,而后,又在一個撥號語音網絡(例如電話系統)上使用TCP/IP協議,又有TCP/IP在令牌環網上運行成功,最后,又實現了TCP/IP遠程分組無線網點與其他Internet網點之間進行TCP/IP的通信。
所以說,TCP/IP協議是及其靈活的,幾乎所有的底層技術都可以用于傳輸TCP/IP的通信,也就是說,TCP/IP具備連接不同網絡的能力。另外,使用TCP/IP也簡化了OSI的模型,因為它省略了表示層和會話層。
如果現在把以太網物理層和數據鏈路層加到OSI的模型之中,如圖1所示,就構成了基于以太網的TCP/IP網。事實上用以太網實現TCP/IP也是最經濟的一種方式。
圖1 簡化的OSI模型
2 協議的功能
組建網絡時,必須選擇一種網絡通信協議,使得用戶之間能夠相互進行“交流”。協議(Protocol)是網絡設備用來通信的一套規則,這套規則可以理解為一種彼此都能聽得懂的公用語言。
如果在網絡層使用IP協議,在傳輸層使TCP協議,就構成了目前最常用的TCP/IP,現在幾乎所有的廠商和操作系統都支持它,同時,TCP/IP也是Internet的基礎協議。
如果在應用層使用工業上事實標準的Modbus協議,就構成了完整的工業以太網的應用。
3 開放和標準的Modbus TCP
Modbus是開放的協議,IANA(Internet Assigned Numbers Authority,互聯網編號分配管理機構)給Modbus協議賦予TCP編口號為502,這是目前在儀表與自動化行業中唯一分配到的端口號,Modbus協議可免費從www.Modbus.org得到。
Modbus是標準的協議,Modbus協議已提交給IETF(Internet Engineering Task Force,互聯網工程任務部),將成為Internet標準。因為從1978年以來,在工業自動化行業,已安裝了百萬計的串口Modbus設備和10萬計的Modbus TCP/IP設備,擁有超過300多個Modbus兼容設備廠商,還有90%的第三廠家的I/O支持Modbus TCP/IP,所以是使用最廣泛的事實標準。
Modbus的普及得益于使用它的門坎很低,無論用串口還是用以太網,硬件成本低廉,Modbus 和 Modbus TCP都可以免費收到,不需交納任何費用。而且在網上有很多免費資源,如C/C++,JAVA樣板程序,Active X控件,各種測試工具等等,所以用戶使用很方便。另外,幾乎可以找到任何現場總線連接到Modbus TCP的網關,方便用戶實現各種網絡之間的互聯。
4 Internet Protocol (IP)
IP是Internet最基本的協議,用戶可以下載RFC 791(RFC: Request For Comments,要求評論:一系列備忘錄的名稱,它們包括概述、評價、意見、技術和研究,以及所提出的和被接受的互聯網標準),來得到其文件。
IP層的主要目的是找到IP報文的“下一個連接點”,它可以是路由器,計算機,控制器甚至是I/O,關鍵是這個設備必須有自己的IP地址。凡是在網絡層使用IP協議的網絡都是通過IP地址來進行尋址的,所以使用時首先要進行復雜的設置,每個節點至少需要一個“IP地址”、一個“子網掩碼”、一個“默認網關”和一個“主機名”。如此復雜的設置,對于一些初識網絡的用戶來說的確帶來了不便。不過,隨著對網絡的熟悉,有許多IP地址配置工具,可以方便進行IP設置,甚至是自動設置。
IP是面向報文的協議,它獨立處理每個報文包,每個報文包必須含有完整的尋地信息。IP報文包的格式如圖2所示。
圖2 IP報文包的格式
5 IP地址的類
共有四種地址類型,如圖3所示。
A類地址用于處理超大型網絡,最多16 387 064個主機(網絡地址的第一段為1~126)。
B類地址的網絡最多可有64 516個主機(網絡地址的第一段為128~191)。
C類地址用于小型網絡,最多可有254主機(網絡地址的第一段為192~223)。
D類地址用于多點播送,用于多目的地信息的傳輸,全零(“0,0,0,0”)地址對應于當前主機,全“1”的IP地址(“225,225,225,225”)是當前子網的廣播地址。
圖3 IP地址的四種類型
6 Transmission Control Protocol (TCP)
TCP是基于傳輸層的協議,協議文件可從RFC793得到,它也是Internet中使用最廣泛的協議之一。
TCP是面向連接的、可靠的協議,它能把報文分解為數段,在目的站再重新裝配這些段,支持重新發送沒有被收到的段,TCP提供兩臺設備之間的全雙工連接,允許它們高效地交換大量數據。
TCP使用滑動窗口協議來高效地使用網絡,由于TCP很少干預底層投遞系統的工作,它可以適應各種報遞系統,由于它提供流量控制,所以TCP能夠使各種不同速度的系統進行通信。
報文段是TCP所使用的基本傳輸單元,用于傳輸數據或控制信息。
圖4 TCP報文段
7 TCP端口
TCP是使用端口(Socket)號把信息傳到上層,為用戶提供不同的服務,端口號用來跟蹤同一時間內通過網絡的不同會話。
RFC1700中定義了眾所周知的特殊編口號,常用的端口如表1所示。
表1 常用端口號
十進制數 |
關鍵字 |
說明 |
20 |
ftp-data |
文件傳輸協議(數據) |
21 |
ftp |
文件傳輸協議 |
23 |
telnet |
遠程登錄 |
25 |
Smtp |
簡單郵件傳輸協議 |
53 |
Domain |
域名服務器 |
67 |
bootps |
啟動協議服務器 |
80 |
http |
超文本傳輸協議 |
110 |
pop3 |
郵件接收協議 |
502 |
Modbus |
自動化信息傳輸 |
502端口目前是所有自動化公司中,唯一用于自動化信息傳輸的端口號。
8 Modbus TCP/IP
Modbus TCP/IP使用以太網OSI模型中的五層,如圖5所示。
第一層:物理層,提供設備的物理接口,與市售的介質/網絡適配器相兼容。
第二層:數據鏈路層,格式化信號到包含源/目的硬件地址的數據幀。
第三層:網絡層,實現帶有32位IP地址的IP報文包。
第四層:傳輸層,實現可靠性連接,傳輸,查錯,重發,端口服務,傳輸調度等。
第五層:應用層,Modbus協議報文。
圖5 Modbus TCP/IP的五層OSI模型
9 Modbus TCP/IP
在TCP/IP的以太網上傳輸,支持Ethernet II和802.3兩種幀格式。如圖6所示,Modbus TCP 數據幀包含了報文頭,功能代碼和數據三部分。
圖6 Modbus TCP數據幀