1. linux命令:查找出目前正在運行的TCP/UDP服務
netstat命令可以看到的哦
能否看一下my網名呢?以後要是遇到了這樣的問題, 都還是可以幫助搞定的哦
2. linux和windows有沒有發送tcp協議消息的命令行程序
下面大概分幾個方面進行羅列:
Linux要包含
[cpp]
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
等頭文件,而windows下則是包含
[cpp]
#include <winsock.h>
。
Linux中socket為整形,Windows中為一個SOCKET。
Linux中關閉socket為close,Windows中為closesocket。
Linux中有變數socklen_t,Windows中直接為int。
因為linux中的socket與普通的fd一樣,所以可以在TCP的socket中,發送與接收數據時,直接使用read和write。而windows只能使用recv和send。
設置socet選項,比如設置socket為非阻塞的。Linux下為
[cpp]
flag = fcntl (fd, F_GETFL);
fcntl (fd, F_SETFL, flag | O_NONBLOCK);
,Windows下為
[cpp]
flag = 1;
ioctlsocket (fd, FIONBIO, (unsigned long *) &flag);
。
當非阻塞socket的TCP連接正在進行時,Linux的錯誤號為EINPROGRESS,Windows的錯誤號為WSAEWOULDBLOCK。
file
Linux下面,文件換行是"\n",而windows下面是"\r\n"。
Linux下面,目錄分隔符是"/",而windows下面是"\"。
Linux與Windows下面,均可以使用stat調用來查詢文件信息。但是,Linux只支持2G大小,而Windows只支持4G大小。為了支持更大的文件查詢,可以在Linux環境下加
_FILE_OFFSET_BITS=64定義,在Windows下面使用_stat64調用,入參為struct __stat64。
Linux中可根據stat的st_mode判斷文件類型,有S_ISREG、S_ISDIR等宏。Windows中沒有,需要自己定義相應的宏,如
[cpp]
#define S_ISREG(m) (((m) & 0170000) == (0100000))
#define S_ISDIR(m) (((m) & 0170000) == (0040000))
Linux中刪除文件是unlink,Windows中為DeleteFile。
time
Linux中,time_t結構是長整形。而windows中,time_t結構是64位的整形。如果要在windows始time_t為32位無符號整形,可以加宏定義,_USE_32BIT_TIME_T。
Linux中,sleep的單位為秒。Windows中,Sleep的單位為毫秒。即,Linux下sleep (1),在Windows環境下則需要Sleep (1000)。
Windows中的timecmp宏,不支持大於等於或者小於等於。
Windows中沒有struct timeval結構的加減宏可以使用,需要手動定義:
3. 為什麼linux中無法使用tcpmp命令
你是否在root用戶執行的?網路監聽需要root許可權,切換到root用戶下就可以正常使用了。
如果還不行,那就需要自己安裝,安裝方法如下:
1.網上下載獲得libpcap和tcpmp
http://www.tcpmp.org/
2.安裝c編譯所需包:apt-get install build-essential
3.安裝 libpcap的前置:apt-get install flex,apt-get install bison
4.安裝libpcap。
tcpmp的使用必須有這庫。
tar xvfz libpcap-1.2.1.tar.gz //解壓
進入解壓之後的文件目錄 運行./configure //生成makefile文件
make //進行編譯
make install //安裝 庫文件默認安裝在目錄 /usr/lib,頭文件默認安裝在 /usr/include
3.安裝tcpmp
tar xvfz tcpmp.4.2.1.tar.gz //解壓
進入解壓之後的文件目錄 運行./configure //生成makefile文件
make //進行編譯
make install //安裝 庫文件默認安裝在目錄 /usr/lib,頭文件默認安裝在 /usr/include
4. linux的tcpmp命令可以抓其他主機的包么
將無線網卡設置為混雜模式,混雜模式就是接收所有經過網卡的數據包,包括不是發給本機的包。
5. 如何修改linux tcp
Linux系統的TCP埠范圍是可以修改的,適當的調整TCP埠范圍以滿足個人需求,那麼具體要如何修改TCP埠范圍呢?不妨通過實例來了解下吧。
在啟動自定義服務的時候,希望使用8370埠,卻發現埠已經被nginx或node佔用了,無法啟動。但是lvs又已經申請了,改埠的話比較麻煩。所以可以修改下
/proc/sys/net/ipv4/ip_local_port_range
參數,使tcp協議分配的埠從一個比較大的范圍開始啟用,這樣,node或nginx就不會佔用較小的埠了。
代碼如下
echo 『32768 61000』 》 /proc/sys/net/ipv4/ip_local_port_range
補充:臨時埠范圍調整
你能使用netstat命令來顯示有多少個連接進入這個狀態:[若是生產環境下,最好先進行測試,然後考慮一個埠的合適范圍]
代碼如下
shell》netstat -n | grep TIME_WAIT
shell》cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000
如果需要修改 echo 「start-number
end-number」,start-number和end-number是0-65536埠號范圍內的數,,0-1024最好不要用,通常是熟知埠,如果是專門的代理伺服器的話,很多熟知埠沒有使用,當然可以考慮!
不要忘記將echo命令加到系統啟動腳本中,以使機器每一次重啟後都生效
6. 在linux中執行命令tcpmp -i eth0 tcp and host 120.192.198.44 and greater 1000 –nn得到如下的結果。
Ack 描述的是同一個連接,同一個方向,下一個本端應該接收的
(對方應該發送的)數據片段的順序號. Window是本端可用的數據接收緩沖區的大小(也是對方發送數據時需根據這個大小來組織數據).
7. 在Linux系統怎麼用tcpmp命令
------------------------------------tcpmp--------------------------------
協議報文分析器:
sniffer: 商業工具
tcpmp, wireshark(GUI), tshark(CLI)
tcpmp [options] 過濾條件
獲取報文的條件:
ip src host 172.16.100.1
tcp src or dst port 21
udp dst port 53
tcp src or dst port 21 AND src host 172.16.100.1
tcp port 21 AND host 172.16.100.1
tcpmp的語法:
tcpmp [options] [Protocol] [Direction] [Host(s)] [Value] [Logical Operations] [Other expression]
Protocol(協議):
Values(取值): ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp.
If no protocol is specified, all the protocols are used.
Direction(流向):
Values(取值): src, dst, src and dst, src or dst
If no source or destination is specified, the "src or dst" keywords are applied. (默認是src or dst)
For example, "host 10.2.2.2" is equivalent to "src or dst host 10.2.2.2".
Host(s)(主機):
Values(替代關鍵字): net, port, host, portrange.
If no host(s) is specified, the "host" keyword is used. 默認如果此段沒有指定關鍵字,默認即host。
For example, "src 10.1.1.1" is equivalent to "src host 10.1.1.1".
Logical Operations:
(1) and
and or &&
(2) or
or or ||
(3) except
not or !
常用選項:
-i any : 指定在哪個網卡進行抓包
-n : 不反解主機名
-nn : 不反解主機名與埠號
-X : 以16進制格式與ASCII格式顯示報文
-XX : 除了顯示X的內容還顯示乙太網首部
-v, -vv, -vvv : 顯示更詳細的信息
-c # : Only get x number of packets and then stop.
-s : Define the snaplength (size) of the capture in bytes. Use -s0 to get everything, unless you are intentionally capturing less.
-S : Print absolute sequence numbers.
-e : Get the ethernet header as well.
-q : Show less protocol information.
-E : Decrypt IPSEC traffic by providing an encryption key.
-A :Display Captured Packets in ASCII
-w /path/to/some_file : Capture the packets and write into a file
-r /path/from/some_file : Reading the packets from a saved file
-tttt : Capture packets with proper readable timestamp
eg:
tcpmp -i eth0 -X -nn -vv tcp port 100
可以在報文上面看一下有無user與pass的信息.
tcpmp -i eth0 -X -nn -vv tcp port 110 and ip src 192.168.10.1
ip host 172.16.100.1
ip src host 172.16.100.1
ip dst host 172.16.100.1
ip src and dst host 172.16.100.1
8. linux系統中ss命令tcp的部分分別代表什麼
跟你心想的中ss命令TCP的部分分別代表就是一個TCP協議而已。
9. 如何將linux主機接入到tcp/ip網路,請描述詳細的步驟
最簡單的配置方式可以直接使用命令進行臨時配置網路:
#ifconfig eth0 XXX.XXX.XXX.XXX
#route add default gw XXX.XXX.XXX.XXX
#echo "nameserver XXX.XXX.XXX.XXX" >> /etc.resolv.conf
以上三行對應的是IP、網關和DNS三個的臨時配置;
如果需要進行靜態的方式配置網路,最通用的做法就是直接對配置文件進行修改:
由於不同的操作系統的網路配置文件位置不同,可以使用命令進行搜索:
#locate ifcfg | grep ethX(X代表定義號)
然後進入配置文檔進行修改:
#IPADDR=XXX.XXX.XXX.XXX
#GATEWAY=XXX.XXX.XXX.XXX
#DNS=XXX.XXX.XXX.XXX
以上三個就是主要要修改的參數。
10. linux下tcp通信怎麼限制客戶端的連接數量
listen的backlog參數指定的是已經三次握手完成,達到了established狀態但是等待accept的隊列的容量。當這個容量超過上限的時候伺服器端便不處理客戶端的三次握手了。這個隊列的容量當然不是樓主所說的並發連接數。
但是lisen的再後一道程序便是accept了。如果你想要的是在tcp並發連接數量超過上限的時候伺服器不再處理了三次握手那麼只有兩種辦法:
1.關閉listen的socket
2.自己修改tcp協議棧的實現,當然這個就比較麻煩了。
用iptables防火牆來限制tcp連接,
如下,限制用戶的tcp連接數為50
iptables -I INPUT-p tcp -m connlimit --connlimit-above 50 -j REJECT