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