新聞中心
在 Linux 系統(tǒng)中,TCP6 監(jiān)聽是指通過 IPv6 協(xié)議監(jiān)聽本地的一個端口,以接受遠(yuǎn)程客戶端的網(wǎng)絡(luò)請求。TCP6 監(jiān)聽被廣泛應(yīng)用于服務(wù)器程序的開發(fā)中,它可以讓服務(wù)器程序成為一個網(wǎng)絡(luò)服務(wù),提供對客戶端的響應(yīng)和處理。

大同網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),大同網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為大同成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的大同做網(wǎng)站的公司定做!
本文將從以下幾個方面詳細(xì)介紹 Linux TCP6 監(jiān)聽的工作原理和使用方法。
一、TCP6 監(jiān)聽的工作原理
TCP6 監(jiān)聽是通過創(chuàng)建一個基于 IPv6 協(xié)議的套接字來實現(xiàn)的。在 Linux 中,我們可以使用 socket() 系統(tǒng)調(diào)用創(chuàng)建一個 IPv6 套接字,并使用 bind() 系統(tǒng)調(diào)用將套接字綁定到一個本地端口上。綁定完成后,我們可以使用 listen() 系統(tǒng)調(diào)用讓套接字開始監(jiān)聽客戶端連接請求。
當(dāng)一個客戶端連接請求到達(dá)套接字時,系統(tǒng)會將這個請求放入一個稱為”待處理連接列表“的隊列中。這個隊列中存儲著所有已經(jīng)建立連接但還未被服務(wù)器程序 accept() 的連接。服務(wù)器程序調(diào)用 accept() 系統(tǒng)調(diào)用時,會從待處理連接列表中取出一個連接,并將該連接返回給用戶程序。用戶程序可以使用這個連接來和客戶端進(jìn)行通信。
如果待處理連接列表已滿,那么新的連接請求將被系統(tǒng)拒絕。在 Linux 中,我們可以使用 sysctl 命令來調(diào)整系統(tǒng)對待處理連接列表的大小。
二、TCP6 監(jiān)聽的使用方法
在 Linux 中,我們可以使用 C 語言編寫程序來實現(xiàn) TCP6 監(jiān)聽功能。以下是一個簡單的示例程序:
“`c
#include
#include
#include
#include
#include
#include
#include
#define PORT 12345
#define MAX_PENDING_CONNECTIONS 10
int mn() {
int server_sockfd, client_sockfd;
struct sockaddr_in6 server_address, client_address;
socklen_t client_address_len;
char buf[1024];
// create a IPv6 TCP socket
if ((server_sockfd = socket(AF_INET6, SOCK_STREAM, 0))
perror(“fled to create server socket”);
exit(EXIT_FLURE);
}
// bind the socket to a local address
memset(&server_address, 0, sizeof(server_address));
server_address.sin6_family = AF_INET6;
server_address.sin6_port = htons(PORT);
server_address.sin6_addr = in6addr_any;
if (bind(server_sockfd, (struct sockaddr*) &server_address,
sizeof(server_address))
perror(“fled to bind server socket to port”);
exit(EXIT_FLURE);
}
// listen for incoming connections
if (listen(server_sockfd, MAX_PENDING_CONNECTIONS)
perror(“fled to listen on server socket”);
exit(EXIT_FLURE);
}
printf(“Listening on port %d…\n”, PORT);
while (1) {
// accept a new client connection
client_address_len = sizeof(client_address);
if ((client_sockfd = accept(server_sockfd,
(struct sockaddr*) &client_address,
&client_address_len))
perror(“fled to accept client connection”);
exit(EXIT_FLURE);
}
printf(“Accepted a new client connection.\n”);
// read data from client
memset(buf, 0, sizeof(buf));
if (read(client_sockfd, buf, sizeof(buf))
perror(“fled to read from client”);
exit(EXIT_FLURE);
}
printf(“Received data from client: %s”, buf);
// write data back to client
if (write(client_sockfd, “Hello, world!\n”, 14)
perror(“fled to write to client”);
exit(EXIT_FLURE);
}
printf(“Sent data back to client.\n”);
// close the connection
close(client_sockfd);
}
// close the server socket
close(server_sockfd);
return EXIT_SUCCESS;
}
“`
這個程序?qū)崿F(xiàn)了一個簡單的 TCP6 服務(wù)器,它通過監(jiān)聽本地的 12345 端口,接受客戶端連接,并向客戶端發(fā)送”Hello, world!“的消息。程序的主要流程如下:
– 創(chuàng)建一個基于 IPv6 的 TCP 套接字;
– 將套接字綁定到本地 12345 端口上;
– 啟動監(jiān)聽功能,開始等待客戶端連接請求;
– 當(dāng)一個客戶端連接上來時,使用 accept() 函數(shù)接受連接,并讀取從客戶端發(fā)送來的數(shù)據(jù);
– 向客戶端發(fā)送一條歡迎消息,并關(guān)閉連接。
三、
相關(guān)問題拓展閱讀:
- linux怎樣查看安裝的apache
- 【tcp】為什么 netstat 對某些服務(wù)只顯示了 tcp6 監(jiān)聽端口?
- 怎么樣在終端上查看vnc在linux服務(wù)器上的端口號
linux怎樣查看安裝的apache
root@raykaeso ~># netstat -ntlp //查看服務(wù)器運行的進(jìn)程服務(wù)和監(jiān)聽端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp.0.0.1:8005 0.0.0.0:* LISTEN 16725/java
tcp 0 0 0.0.0.0:8009 0.0.0.0:* LISTEN 16725/褲陪java
tcp.0.0.1:.0.0.0:* LISTEN 2138/mongod
tcp 0 0 0.0.0.0:8010 0.0.0.0:* LISTEN 14335/java
tcp 0 0 0.0.0.0:.0.0.0:* LISTEN 859/memcached
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 16725/java
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 872/耐森h(huán)ttpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 873/sshd
tcp6 0 0 :::3306 :::* LISTEN 23443/mysqld
tcp6 0 0 :::11211 :::* LISTEN 859/memcached
tcp6 0 0 :::22 :::* LISTEN 873/昌純畝sshd
【tcp】為什么 netstat 對某些服務(wù)只顯示了 tcp6 監(jiān)聽端口?
在 Linux 中,默認(rèn)情況下,AP_ENABLE_V4_MAPPED 是 1,那么 httpd 就會直接監(jiān)聽 ipv6, 因為此罩汪時 ipv6 的 socket 能夠處理 ipv4 的請求;
另外,bind() 系統(tǒng)調(diào)用會對用戶空間的進(jìn)程透明處理 ipv6 沒有開啟的情況,此時會監(jiān)聽到 ipv4。
netstat 只是很真實的顯示監(jiān)聽的端口而已,但是需要注意 ipv6 實際上在 Linux 上也支棗悶沖持 ipv4。
解決tcp6問題
Linux中tcp與tcp6區(qū)別是什么?
為什么 netstat 對某些服務(wù)只顯示了 tcp6 監(jiān)聽端凳殲口?
怎么樣在終端上查看vnc在linux服務(wù)器上的端口號
一個概念:在Linux只有只讀文件、只讀目錄,沒有只讀用戶。迅改
要實現(xiàn)你這一點,得修改整個系統(tǒng)文件和目錄都為只讀,這樣很不好,危險:
chmod -R/
同時把登錄用戶(例如:user1)的目錄(目錄是:/home/user1)的權(quán)限改成:
chmod -R/home/user1
這樣的話user1用戶就只有對這個系統(tǒng)的只讀權(quán)限了,只是登錄這個舉灶用戶面臨著一大堆的警告/錯誤提正昌扮示。
#netstat -lp|grep -i vnc
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 *:*:*LISTEN/Xvnc
tcp 0 *:*:*LISTEN/Xvnc
tcp 0 *:*:*LISTEN/Xvnc
unix STREAM LISTENING07/碼爛Xvnc@/tmp/大模絕.X11-unix/X1
unix STREAM LISTENING07/Xvnc/tmp/.X11-unix/滾姿X1
對于 Linux 系統(tǒng)管理員來說,清楚某個服務(wù)是否正確地綁定或監(jiān)聽某個端口,是至關(guān)重要的。如果你需要處理端口相關(guān)的問題.
端口是 Linux 系統(tǒng)上特定進(jìn)程之間邏輯連接的標(biāo)識,包括物理端口和軟件端口。由于 Linux 操作系統(tǒng)是一個軟件,因此本文只討論軟件端口。軟件端口始終與主機的 IP 地址和相關(guān)的通信協(xié)議相關(guān)聯(lián),因此端口常用于區(qū)分應(yīng)用程序。大部分涉及到網(wǎng)絡(luò)的服務(wù)都必須打開一個套接字來監(jiān)聽傳入的網(wǎng)絡(luò)請求,而每個服務(wù)都使用一個獨立的套接字。
方法 1:使用 ss 命令
ss 一般用于轉(zhuǎn)儲套接字統(tǒng)計信息。它能夠輸出類似于 netstat 輸出的信息,但它可以比其它工具顯示更多的 TCP 信息和狀態(tài)信息。
它還埋冊可以顯示所有類型的套接字統(tǒng)計信息,包括 PACKET、TCP、UDP、DCCP、RAW、Unix 域等。
# ss -tnlp | grep sshLISTEN*:22 *:* users:((“sshd”,pid=997,fd=3))LISTEN:::22 :::* users:((“sshd”,pid=997,fd=4))
也可以使用端口號來檢查。
# ss -tnlp | grep “:22″LISTEN*:22 *:* users:((“sshd”,pid=997,fd=3))LISTEN:::22 :::* users:((“sshd”,pid=997,fd=4))
方法 2:使用 netstat 命令
netstat 能夠顯彎褲宏示網(wǎng)絡(luò)連接、路由表、接口統(tǒng)計信息、偽裝連接以及多播成員。
默認(rèn)情況下,netstat 會列出打開的套接字。如果不指定任何地址族,則會顯示所有已配置地址族的活動套接字。但 netstat 已經(jīng)過時了,一般會使用 ss 來替代。
# netstat -tnlp | grep sshtcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 997/sshd
tcp6 0 0 :::22 :::* LISTEN 997/sshd
也可以使用端口號來檢查。
# netstat -tnlp | grep “:22″tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1208/sshd
tcp6 0 0 :::22 :::* LISTEN 1208/sshd
方法 3:使用 lsof 命令
lsof 能夠列出打開的文件,并列出系統(tǒng)上被進(jìn)程打開的文件的相關(guān)信息。
# lsof -i -P | grep sshCOMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshdroot 3u IPvt0 TCP *:22 (LISTEN)sshdroot 4u IPvt0 TCP *:22 (LISTEN)sshdroot 3u IPvt0 TCP vps.2daygeek.com:ssh->103.5.134.167:49902 (ESTABLISHED)
也可以使用端口號來檢查。
# lsof -i tcp:22COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1208 root 3u IPvt0 TCP *:ssh (LISTEN)sshd 1208 root 4u IPvt0 TCP *:ssh (LISTEN)sshdroot 3u IPvt0 TCP vps.2daygeek.com:ssh->103.5.134.167:49902 (ESTABLISHED)
方法 4:使用 fuser 命令
fuser 工具會將本地系統(tǒng)上打開了文件的進(jìn)程的進(jìn)程 ID 顯示在標(biāo)準(zhǔn)輸出中純清。
# fuser -v 22/tcpUSER PID ACCESS COMMAND22/tcp: root 1208 F…. sshd
rootF…. sshd
rootF…. sshd
方法 5:使用 nmap 命令
nmap(“Network Mapper”)是一款用于網(wǎng)絡(luò)檢測和安全審計的開源工具。它最初用于對大型網(wǎng)絡(luò)進(jìn)行快速掃描,但它對于單個主機的掃描也有很好的表現(xiàn)。
nmap 使用原始 IP 數(shù)據(jù)包來確定網(wǎng)絡(luò)上可用的主機,這些主機的服務(wù)(包括應(yīng)用程序名稱和版本)、主機運行的操作系統(tǒng)(包括操作系統(tǒng)版本等信息)、正在使用的數(shù)據(jù)包過濾器或防火墻的類型,以及很多其它信息。
# nmap -sV -p 22 localhostStarting Nmap 6.40 ( ) at:36 ISTNmap scan report for localhost (127.0.0.1)Host is up (0.000089s latency).Other addresses for localhost (not scanned): 127.0.0.1PORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 7.4 (protocol 2.0)Service detection performed. Please report any incorrect results at .Nmap done: 1 IP address (1 host up) scanned in 0.44 seconds
方法 6:使用 systemctl 命令
systemctl 是 systemd 系統(tǒng)的控制管理器和服務(wù)管理器。它取代了舊的 SysV 初始化系統(tǒng)管理,目前大多數(shù)現(xiàn)代 Linux 操作系統(tǒng)都采用了 systemd。
# systemctl status sshd● sshd.service – OpenSSH server daemonLoaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)Active: active (running) since Sun:08:56 EDT; 6h 11min agoDocs: man:sshd(8)man:sshd_config(5)Main PID:(sshd)CGroup: /system.slice/sshd.service└─11584 /usr/in/sshd -DSep 23 02:08:56 vps.2daygeek.com systemd: Starting OpenSSH server daemon…Sep 23 02:08:56 vps.2daygeek.com sshd: Server listening on 0.0.0.0 port 22.Sep 23 02:08:56 vps.2daygeek.com sshd: Server listening on :: port 22.Sep 23 02:08:56 vps.2daygeek.com systemd: Started OpenSSH server daemon.Sep 23 02:09:15 vps.2daygeek.com sshd: Connection closed by 103.5.134.167 portSep 23 02:09:41 vps.2daygeek.com sshd: Accepted password for root from 103.5.134.167 portssh2
以上輸出的內(nèi)容顯示了最近一次啟動 sshd 服務(wù)時 ssh 服務(wù)的監(jiān)聽端口。但它不會將最新日志更新到輸出中。
# systemctl status sshd● sshd.service – OpenSSH server daemonLoaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)Active: active (running) since Thu:40:59 IST; 2 weeks 3 days agoDocs: man:sshd(8)man:sshd_config(5)Main PID: 1208 (sshd)CGroup: /system.slice/sshd.service├─ 1208 /usr/in/sshd -D├─23951 sshd: └─23952 sshd: Sep 23 12:50:36 vps.2daygeek.com sshd: Invalid user pi from 95.210.113.142 port 51666Sep 23 12:50:36 vps.2daygeek.com sshd: input_userauth_request: invalid user pi Sep 23 12:50:37 vps.2daygeek.com sshd: pam_unix(sshd:auth): check pass; user unknownSep 23 12:50:37 vps.2daygeek.com sshd: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=95.210.113.142Sep 23 12:50:37 vps.2daygeek.com sshd: pam_unix(sshd:auth): check pass; user unknownSep 23 12:50:37 vps.2daygeek.com sshd: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=95.210.113.142Sep 23 12:50:39 vps.2daygeek.com sshd: Failed password for invalid user pi from 95.210.113.142 portssh2Sep 23 12:50:39 vps.2daygeek.com sshd: Failed password for invalid user pi from 95.210.113.142 portssh2Sep 23 12:50:40 vps.2daygeek.com sshd: Connection closed by 95.210.113.142 portSep 23 12:50:40 vps.2daygeek.com sshd: Connection closed by 95.210.113.142 port
大部分情況下,以上的輸出不會顯示進(jìn)程的實際端口號。這時更建議使用以下這個 journalctl 命令檢查日志文件中的詳細(xì)信息。
# journalctl | grep -i “openssh\|sshd”Sep 23 02:08:56 vps138235.vps.ovh.ca sshd: Received signal 15; terminating.Sep 23 02:08:56 vps138235.vps.ovh.ca systemd: Stopping OpenSSH server daemon…Sep 23 02:08:56 vps138235.vps.ovh.ca systemd: Starting OpenSSH server daemon…Sep 23 02:08:56 vps138235.vps.ovh.ca sshd: Server listening on 0.0.0.0 port 22.Sep 23 02:08:56 vps138235.vps.ovh.ca sshd: Server listening on :: port 22.Sep 23 02:08:56 vps138235.vps.ovh.ca systemd: Started OpenSSH server daemon.
via:
IIS7服務(wù)器管理工具是一款vnc軟件,它可以批量管理、定時上傳下載、同步操作、數(shù)據(jù)備份、到期提醒、自動更新。
IIS7服務(wù)器管理工具
linux tcp6 listen的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux tcp6 listen,Linux TCP6監(jiān)聽詳解,linux怎樣查看安裝的apache,【tcp】為什么 netstat 對某些服務(wù)只顯示了 tcp6 監(jiān)聽端口?,怎么樣在終端上查看vnc在linux服務(wù)器上的端口號的信息別忘了在本站進(jìn)行查找喔。
成都創(chuàng)新互聯(lián)建站主營:成都網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、網(wǎng)站改版的網(wǎng)站建設(shè)公司,提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、成都網(wǎng)站推廣、成都網(wǎng)站優(yōu)化seo、響應(yīng)式移動網(wǎng)站開發(fā)制作等網(wǎng)站服務(wù)。
標(biāo)題名稱:LinuxTCP6監(jiān)聽詳解(linuxtcp6listen)
鏈接分享:http://fisionsoft.com.cn/article/dpiepoj.html


咨詢
建站咨詢
