導航:首頁 > 編程語言 > linux乙太網編程

linux乙太網編程

發布時間:2022-08-15 13:17:36

linux和西門子226PLC通過乙太網通信,如何設置

沒試過這種情況,應該是和windows操作系統一樣設置的。這與系統關系不大,不管什麼樣的系統介面程序變化不大!要有243-1模塊,還要下載一次乙太網導向程序!

② 乙太網怎麼在linux系統下使用

配置好IP DNS 網關 就行了

③ linux下進行乙太網回環測試,怎麼進行

虛擬機可以用代理上網的,如果要上網的話就要把虛擬機的ip和你本機的ip在同一個網段里:
配置網卡的步驟為:
手工方法是在乙太網卡已裝入的情況下編輯配置文件來配置網路的方法。具體步驟
如下:
1.編輯/etc/rc.d/rc.local文件
在該文件中加入類似下列各行(#號以後為注釋,下同):
#配置第一個乙太網卡eth0的IP地址,子網掩碼,UP起激活作用
/sbin/ifconfig etho 192.168.0.2netmask 255.255.255.0 UP
#配置並激活回環設備lo
/sbin/ifconfig lo 127.0.0.1 UP
/sbin/route add host 127.0.0.1 lo
#讓Linux將本地網的信息發送到eth0介面
/sbin/route add net 192.168.0.2 netmask 255.255.255.0 eth0
#指定訪問遠程網路的預設網關
/sbin/route default gw 192.168.0.1 eth0
2.編輯/etc/resdv.conf
該文件作用是設置域名伺服器。加入下面內容
#指定本機域名
Domain xjtu.e.cn
#域名稱伺服器(DNS)
Nameserver 202.117.0.20
Nameserver 202.117.0.21
3.編輯/etc/hosts.conf文件
設置主機文件表。可加入如下行:
order hosts,bind
multi on
192.168.0.2 webmail.xjtu.e.cn webmail
第一行表示:查找名稱時,首先檢查本地hosts文件,然後按/etc/resolv.conf所指
定的Nameservers順序查找。重新啟動就可以了。
上面的ip,子網掩碼,DNS只是為了舉例子,要根據你本機的配置而定啊,要上網的話,把你的瀏覽器設上代理的話就可以了啊

④ Linux網路基礎配置

linux網路基礎配置linux網路基礎配置乙太網連接在linux中,乙太網介面被命令為:eth0,
eth1等,
0,1代表網卡編號通過lspci命令可以查看網上硬體信息(如果是usb介面,則可能要用lsusb)命令ifconfig命令用來查看介面信息ifconfig
-a
查看所有介面ifconfig
eth0
查看特定介面在CentOS中可以用命令ifup,ifdown用來啟用,禁用一個介面ifup
eth0,啟用eth0網卡ifdown
eth0,禁用eth0網卡在ubuntu中可以用ifconfig
網卡
up,
ifconfig
網卡
down做同樣的功能sudo
ifconfig
eth0
up,啟用eth0網卡sudo
ifconfig
eth0
down,禁用eth0網卡配置網路信息在CentOS中可以用setup命令配置網路信息Ubuntu可用以下命令[python]
view
plain#設置ip,netmask(子網掩碼),broadcast(廣播地址)
ifconfig
eth0
192.168.137.220
netmask
255.255.255.0
broadcast
192.168.137.255
up
#設置gateway(網關)
route
add
default
gw
192.168.137.254
網路相關配置文件以下是CentOS的配置文件位置,如果沒有特殊說明Ubunt相關的配置文件,並不在同一個位置配置文件
位置網上配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0DNS配置文件
/etc/resolv.conf(Ubuntu也一樣)主機名配置文件
/etc/sysconfig/network靜態主機名配置文件
/etc/hosts(Ubuntu也一樣)網路測試命令測試網路連通性:ping
192.168.137.254ping
www..com測試DNS解析host
www..comdig
www..com顯示路由表:ip
route追蹤到達目標地址的網路路經
traceroute
www..com使用mtr進行網路質量測試(結合traceroute和ping)mtr
www..com故障排查故障排查要由底到高,由內到外先查看網路配置信息是否正確ip地址子網掩碼網關DNS查看到達網關是否連通ping
網關ip地址查看DNS解析是否正常

⑤ 編寫Linux網路驅動程序需要注意些什麼

需要共享的話,在申請的時候指明共享方式。系統提供的request_irq()調用的定義: int request_irq(unsigned int irq, void (*handler)(int irq, void *dev_id, struct pt_regs *regs), unsigned long irqflags, const char * devname, void *dev_id); 如果共享中斷,irqflags設置SA_SHIRQ屬性,這樣就允許別的設備申請同一個中斷。需要注意所有用到這個中斷的設備在調用request_irq()都必須設置這個屬性。系統在回調每個中斷處理程序時,可以用dev_id這個參數找到相應的設備。系統在回調每個中斷處理程序時,可以用dev_id這個參數找到相應的設備。一般dev_id就設為device結構本身。系統處理共享中斷是用各自的dev_id參數依次調用每一個中斷處理程序。2 硬體發送忙時的處理 主CPU的處理能力一般比網路發送要快,所以經常會遇到系統有數據要發,但上一包數據網路設備還沒發送完。因為在Linux里網路設備驅動程序一般不做數據緩存,不能發送的數據都是通知系統發送不成功,所以必須要有一個機制在硬體不忙時及時通知系統接著發送下面的數據。 一般對發送忙的處理在前面設備的發送方法(hard_start_xmit)里已經描述過,即如果發送忙,置tbusy為1。處理完發送數據後,在發送結束中斷里清tbusy,同時用mark_bh()調用通知系統繼續發送。 但在具體實現我的驅動程序時發現,這樣的處理系統好象並不能及時地知道硬體已經空閑了,即在mark_bh()以後,系統要等一段時間才會接著發送。造成發送效率很低。2M線路只有10%不到的使用率。內核版本為2.0.35。 我最後的實現是不把tbusy置1,讓系統始終認為硬體空閑,但是報告發送不成功。系統會一直嘗試重發。這樣處理就運行正常了。但是遍循內核源碼中的網路驅動程序,似乎沒有這樣處理的。不知道症結在哪裡。 3 流量控制(flow control) 網路數據的發送和接收都需要流量控制。這些控制是在系統里實現的,不需要驅動程序做工作。每個設備數據結構里都有一個參數dev->tx_queue_len,這個參數標明發送時最多緩存的數據包。在Linux系統里乙太網設備(10/100Mbps)標明發送時最多緩存的數據包。在Linux系統里乙太網設備(10/100Mbps)tx_queue_len一般設置為100,串列線路(非同步串口)為10。實際上如果看源碼可以知道,設置了dev->tx_queue_len並不是為緩存這些數據申請了空間。這個參數只是在收到協議層的數據包時判斷發送隊列里的數據是不是到了tx_queue_len的限度,以決定這一包數據加不加進發送隊列。發送時另一個方面的流控是更高層協議的發送窗口(TCP協議里就有發送窗口)。達到了窗口大小,高層協議就不會再發送數據。 接收流控也分兩個層次。netif_rx()緩存的數據包有限制。另外高層協議也會有一個最大的等待處理的數據量。 發送和接收流控處理在net/core/dev.c的do_dev_queue_xmit()和netif_rx()中。 4 調試很多Linux的驅動程序都是編譯進內核的,形成一個大的內核文件。但對調試來說,這是相當麻煩的。調試驅動程序可以用mole方式載入。支持模塊方式的驅動程序必須提供兩個函數:int init_mole(void)和void cleanup_mole(void)。init_mole()在載入此模塊時調用,在這個函數里可以register_netdev()注冊設備。init_mole()返回0表示成功,返回負表示失敗。cleanup_mole()在驅動程序被卸載時調用,清除佔用的資源,調用unregister_netdev()。 模塊可以動態地載入、卸載。在2.0.xx版本里,還有kerneld自動載入模塊,但是2.2.xx中已經取消了kerneld。手工載入使用insmod命令,卸載用rmmod命令,看內核中的模塊用lsmod命令。 編譯驅動程序用gcc,主要命令行參數-DKERNEL -DMODULE。並且作為模塊載入的驅動程序,只編譯成obj形式(加-c參數)。編譯好的目標文放/lib/moles/2.x.xx/misc下,在啟動文件里用insmod載入。 Linux內核源代碼 《The Linux Kernel Hacker's Guide》by Michael K. Johnson 《Linux Kernel Mole Programming Guide》by Ori Pomerantz 《Linux下的設備驅動程》by olly in BBS水木清華站 可以選擇一個模板作為開始,內核源代碼里有一個網路驅動程序的模板,drivers/net/skeleton.c。裡麵包含了驅動程序的基本內容。但這個模板是以乙太網設備為對象的,乙太網的處理在Linux系統里有特殊「待遇」,所以如果不是乙太網設備,有些細節上要注意,主要在初始化程序里。 最後,多參照別人寫的程序,聽聽其他開發者的經驗之談大概是最有效的幫助了。

⑥ linux乙太網狀態自動變為off

linux的echo命令, 在shell編程中極為常用, 在終端下列印變數value的時候也是常常用到的, 因此有必要了解下echo的用法

echo命令的功能是在顯示器上顯示一段文字,一般起到一個提示的作用。
該命令的一般格式為: echo [ -n ] 字元串
其中選項n表示輸出文字後不換行;字元串能加引號,也能不加引號。用echo命令輸出加引號的字元串時,將字元串原樣輸出;用echo命令輸出不加引號的字元串時,將字元串中的各個單詞作為字元串輸出,各字元串之間用一個空格分割。

⑦ 如何在linux下編寫抓包程序

你用SOCK_RAW的模式建立原始套接字然後接收包。
剩下的就全是分析內容的事情了。。。。最多再用一下多線程。

用到linux下socket編程的最基本知識, 以及對網路協議細節的了解。 前者隨便找本socket編程的書就很詳細了, 後者你因該懂。

——————
例如, 你需要include以下這些頭:
stdio.h,stdlib.h, unistd.h, sys/socket.h, sys/types.h, netinet/if_ether.h, netinet/in.h,

然後建立socket的時候用
socket(PF_PACKET,SOCK_RAW,htons(ETH_P_IP)),這樣就能用這個socket來監聽乙太網的包。
然後循環調用recvfrom函數來聽這個socket的接受到的數據, 再分析就好了。

如果要嗅探別人機器的包, 就要用ARP欺騙了。。呵呵

⑧ 求linux socket網路編程代碼

Linux是多任務的操作系統,可在運行在Intel 80386及更高檔次的PC機、ARMS、MIPS和PowerPC等多種計算機平台,已成為應用廣泛、可靠性高、功能強大的計算機操作系統,Linux具有內核小、效率高、源代碼開放等優點,還內含了TCP/IP網路協議,很適合在伺服器領域使用,而伺服器主要用途之一就是進行網路通信,隨著計算機辦公自動化處理技術的應用與推廣,網路的不斷普及,傳統的紙張式文件傳輸方式已經不再適合發展的需要,人們更期待一種便捷、高效、環保、安全的網路傳輸方式.

協議概述TCP/IP即傳輸控制協議/網路協議[1](Transmission Control Protocol/Internet Protocol),是一個由多種協議組成的協議族,他定義了計算機通過網路互相通信及協議族各層次之間通信的規范,圖1描述了Linux對IP協議族的實現機制[2]。

Linux支持BSD的套接字和全部的TCP/IP協議,是通過網路協議將其視為一組相連的軟體層來實現的,BSD套接字(BSD Socket)由通用的套接字管理軟體支持,該軟體是INET套接字層,用來管理基於IP的TCP與UDP埠到埠的互聯問題,從協議分層來看,IP是網路層協議,TCP是一個可靠的埠到埠的傳輸層協議,他是利用IP層進行傳接報文的,同時也是面向連接的,通過建立一條虛擬電路在不同的網路間傳輸報文,保證所傳輸報文的無丟失性和無重復性。用戶數據報文協議(User Datagram Protocol,UDP)也是利用IP層傳輸報文,但他是一個非面向連接的傳輸層協議,利用IP層傳輸報文時,當目的方網際協議層收到IP報文後,必須識別出該報文所使用的上層協議(即傳輸層協議),因此,在IP報頭上中,設有一個"協議"域(Protocol)。通過該域的值,即可判明其上層協議類型,傳輸層與網路層在功能說的最大區別是前者提供進程通信能力,而後者則不能,在進程通信的意義上,網路通信的最終地址不僅僅是主機地址,還包括可以描述進程的某種標識符,為此,TCP/UDP提出了協議埠(Protocol Port)的概念,用於標識通信的進程,例如,Web伺服器進程通常使用埠80,在/etc/services文件中有這些注冊了的埠地址。

對於TCP傳輸,傳輸節點間先要建立連接,然後通過該連接傳輸已排好序的報文,以保證傳輸的正確性,IP層中的代碼用於實現網際協議,這些代碼將IP頭增加到傳輸數據中,同時也把收到的IP報文正確的傳送到TCP層或UDP層。TCP是一個面向連接協議,而UDP則是一個非面向連接協議,當一個UDP報文發送出去後,Linux並不知道也不去關心他是否成功地到達了目的的主機,IP層之下,是支持所有Linux網路應用的網路設備層,例如點到點協議(Point to Point Protocol,PPP)和乙太網層。網路設備並非總代表物理設備,其中有一些(例如回送設備)則是純粹的軟體設備,網路設備與標準的Linux設備不同,他們不是通過Mknod命令創建的,必須是底層軟體找到並進行了初始化之後,這些設備才被創建並可用。因此只有當啟動了正確設置的乙太網設備驅動程序的內核後,才會有/dev/eth0文件,ARP協議位於IP層和支持地址解析的協議層之間。

網路通信原理所有的網路通信就其實現技術可以分為兩種,線路交換和包交換,計算機網路一般採用包交換,TCP使用了包交換通信技術,計算機網路中所傳輸的數據,全部都以包(Packet)這個單位來發送,包由"報頭"和"報文"組成,結構如圖2所示,在"報頭"中記載有發送主機地址,接收主機地址及與報文內容相關的信息等,在"報文"中記載有需要發送的數據,網路中的每個主機和路由器中都有一個路由定址表,根據這個路由表,包就可以通過網路傳送到相應的目的主機。

網路通信中的一個非常重要的概念就是套接字(Socket)[3,4],簡單地說,套接字就是網路進程的ID,網路通信歸根到底是進程的通信,在網路中,每個節點有一個網路地址(即IP地址),兩個進程通信時,首先要確定各自所在網路節點的網路地址,但是,網路地址只能確定進程所在的計算機,而一台計算機上可能同時有多個網路進程,還不能確定到底是其中的哪個進程,由此套接字中還要有其他的信息,那就是埠號(Port),在一台計算機中,一個埠一次只能分配給一個進程,即埠號與進程是一一對應的關系,所以,埠號和網路地址就能唯一地確定Internet中的一個網路進程。可以認為:套接字=網路地址+埠號系統調用一個Socket()得到一個套接字描述符,然後就可以通過他進行網路通信了。

套接字有很多種類,最常用的就有兩種;流式套接字和數據報套接字。在Linux中分別稱之為"SOCK_STREAM"和"SOCK_DGRAM)"他們分別使用不同的協議,流式套接字使用TCP協議,數據報套接字使用UDP協議,本文所使用的是流式套接字協議。

網路通信原理在文件傳輸程序設計中的應用網路上的絕大多數通信採用的都是客戶機/伺服器機制(Client/Server),即伺服器提供服務,客戶是這些服務的使用者,伺服器首先創建一個Socket,然後將該Socket與本地地址/埠號綁定(Bind()),成功之後就在相應的Socket上監聽(Listen()) 。當Accept()函數捕捉到一個連接服務(Connect())請求時,接受並生成一個新的Socket,並通過這個新的Socket與客戶端通信,客戶端同樣也要創建一個Socket,將該Socket與本地地址/埠號綁定,還需要指定伺服器端的地址與埠號,隨後向伺服器端發出Connect(),請求被伺服器端接受後,可以通過Socket與伺服器端通信。

TCP是一種面向連接的、可靠的、雙向的通信數據流,說他可靠,是因為他使用3段握手協議傳輸數據,並且在傳輸時採用"重傳肯定確認"機制保證數據的正確發送:接收端收到的數據後要發出一個肯定確認,而發送端必須要能接受到這個肯定信號,否則就要將數據重發。在此原理基礎之上,設計了基於Linux操作系統下TCP/IP編程實現文件傳輸的實例。我們採用客戶機/伺服器模式通信時,通信雙方發送/接收數據的工作流程如圖3所示。

文件傳輸就是基於客戶機/伺服器模型而設計的,客戶機和伺服器之間利用TCP建立連續,因文件傳輸是一個互動式會話系統,客戶機每次執行文件傳輸,都需要與伺服器建立控制連接和數據連接,其中控制連接負責傳輸控制信息、利用控制命令、客戶機可以向伺服器提出無限次的請求,客戶機每次提出的請求,伺服器與客戶機建立一個數據連接,進行實際的數據傳輸,數據傳輸完畢後,對應的數據連接被清除,控制連接依然保持,等待客戶機發出新的傳輸請求,直到客戶機撤銷控制連接,結束會話。

當進行文件傳輸時,首先向伺服器發出連接請求,伺服器驗證身份後,與客戶端建立連接,雙方進入會話狀態,這時只要客戶端向伺服器端發出數據連接請求,建立起數據連接後,雙方就進入數據傳輸狀態,數據傳輸完畢後,數據連接被撤銷,如此循環反復,直到會話結束,從而實現將文件從伺服器端傳輸至客戶機端。

文件傳輸程序設計流程[5,客戶端的TCP應用程序流程(1)先用Socket()創建本地套介面,給伺服器端套介面地址結構賦值。

(2)用Connect()函數使本地套介面向伺服器端套介面發出建立連接請求,經3次握手建立TCP連接。

(3)用Read()函數讀取所要接收的文件名以及存放在內存里的文件內容。

(4)用Open()函數打開客戶端新建立的目標文件,如果沒有建立,該函數會自動生成目標文件,等待存放文件內容。

(5)最後用Write()函數將讀取的文件內容存放在新的目標文件中,以實現伺服器端向客戶端的文件傳輸。

(6)通信結束,用Close()關閉套介面,停止接收文件。

伺服器端的TCP應用程序流程(1)先用Open()函數打開等待傳輸的可讀文件;(2)用Socket()創建套介面,並給套介面地址結構賦值;(3)用Bind()函數綁定套介面;(4)用Listen()函數在該套介面上監聽請求;(5)用Accept()函數接受請求,產生新的套介面及描述字,並與客戶端連接;(6)用Lseek()函數是為了在每次接受客戶機連接時,將用於讀的源文件指針移到文件頭;(7)用Read()函數讀取一定長度的源文件數據;(8)最後用Write()函數將讀取的源文件數據存放在內存中,以便客戶端讀取;(9)傳輸完畢時,用Close()關閉所有進程,結束文件傳輸。

結語Linux操作系統在網路應用方面具有很強的開發潛力,同時Linux也是可靠性、安全性非常高的系統,因此在基於TCP/IP網路通信的研究與開發中,通常選用Linux操作系統作為開發平台

⑨ 乙太網如何學習 乙太網 TCP IP UDP

其實最重要的是你能看進去,開始是很難的,如果你沒有興趣更難。代碼最好的當然是Linux內核里的啊。學TCP/IP有兩本聖經 TCP/IP詳解 和用TCP/IP進行網際互聯。但是這兩本書適不適合你得看你的實際情況,比如理論基礎、編程基礎。前一本有3卷,先講協議再講實現,代碼是FreeBSD中的代碼。只看協議你會覺得很枯燥,沒有意思,但這是基礎;只看代碼你又覺得看不懂太難。關鍵是要有一定的耐性,能堅持下去。祝你成功!

閱讀全文

與linux乙太網編程相關的資料

熱點內容
做賬為什麼要用加密狗 瀏覽:583
考研群體怎麼解壓 瀏覽:156
linux修改命令提示符 瀏覽:224
圓圈裡面k圖標是什麼app 瀏覽:59
pdf加空白頁 瀏覽:945
linux伺服器如何看網卡狀態 瀏覽:316
解壓新奇特視頻 瀏覽:704
圖書信息管理系統java 瀏覽:551
各種直線命令詳解 瀏覽:861
程序員淚奔 瀏覽:145
素材怎麼上傳到伺服器 瀏覽:515
android百度離線地圖開發 瀏覽:189
web可視化編程軟體 瀏覽:292
java筆試編程題 瀏覽:746
win11什麼時候可以裝安卓 瀏覽:564
java不寫this 瀏覽:1001
雲點播電影網php源碼 瀏覽:97
pythonclass使用方法 瀏覽:226
移動加密軟體去哪下載 瀏覽:294
php彈出alert 瀏覽:209