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