簡單的講一下自己對端口的理解,以及一些與端口有關(guān)的命令的介紹巷蚪。
1.背景介紹
什么是端口
在 Internet上病毡,各主機(jī)間通過TCP/TP協(xié)議發(fā)送和接收數(shù)據(jù)報(bào),各個(gè)數(shù)據(jù)報(bào)根據(jù)其目的主機(jī)的ip地址來進(jìn)行互聯(lián)網(wǎng)絡(luò)中的路由選擇屁柏。
我們知道大多數(shù)操作系統(tǒng)都支持多程序(進(jìn)程)同時(shí)運(yùn)行啦膜,那么目的主機(jī)應(yīng)該把接收到的數(shù)據(jù)報(bào)傳送給眾多同時(shí)運(yùn)行的進(jìn)程中的哪一個(gè)呢有送?
端口機(jī)制便由此被引入進(jìn)來。
本地操作系統(tǒng)會(huì)給那些有需求的進(jìn)程分配協(xié)議端口 (protocal port僧家,即我們常說的端口)雀摘,每個(gè)協(xié)議端口由一個(gè)正整數(shù)標(biāo)識,如:80八拱,139届宠,445,等等乘粒。
當(dāng)目的主機(jī)接收到數(shù)據(jù)報(bào)后,將根據(jù)報(bào)文首部的目的端口號伤塌,把數(shù)據(jù)發(fā)送到相應(yīng)端口灯萍,而與此端口相對應(yīng)的那個(gè)進(jìn)程將會(huì)領(lǐng)取數(shù)據(jù)并等待下一組數(shù)據(jù)的到來。
2.知識剖析
端口的分類? 在Internet上每聪,按照協(xié)議類型分類旦棉,端口被分為TCP端口和UDP端口兩類
雖然他們都用正整數(shù)標(biāo)識,但這并不會(huì)引起歧義药薯,比如TCP的80端口和UDP的80端口绑洛,因?yàn)閿?shù)據(jù)報(bào)在標(biāo)明端口的同時(shí),還將標(biāo)明端口的類型童本。
從端口的分配來看真屯,端口被分為固定端口和動(dòng)態(tài)端口兩大類: 固定端口(0-1023):使用集中式管理機(jī)制,即服從一個(gè)管理機(jī)構(gòu)對端口的指派穷娱,這個(gè)機(jī)構(gòu)負(fù)責(zé)發(fā)布這些指派绑蔫。
由于這些端口緊綁于一些服務(wù),所以我們會(huì)經(jīng)常掃描這些端口來判斷對方 是否開啟了這些服務(wù) 如TCP的21(ftp)泵额,80(http)配深,139(netbios),UDP的7(echo)嫁盲,69(tftp)等等一些大家熟知的端口篓叶;。
動(dòng)態(tài)端口(1024-49151):這些端口并不被固定的捆綁于某一服務(wù)羞秤,操作系統(tǒng)將這些端口動(dòng)態(tài)的分配給各個(gè)進(jìn)程缸托, 同一進(jìn)程兩次分配有可能分配到不同的端口。
不過一些應(yīng)用程序并不愿意使用操作系統(tǒng)分配的動(dòng)態(tài)端口瘾蛋,他們有其自己的‘商標(biāo)性’端口嗦董,如oicq客戶端的 4000端口,
3.常見問題
?3.1.怎么判斷一個(gè)端口是否被占用了
?3.2.如何判斷一個(gè)端口是否被防火墻攔截
?3.3.怎么用Telnet判斷端口號是否打開
4.解決方案
4.1 使用netstat命令然后 tasklist taskkill
關(guān)于netstat命令瘦黑,我們先來看看windows幫助文件中的介紹:
Netstat
顯示協(xié)議統(tǒng)計(jì)和當(dāng)前的 TCP/IP 網(wǎng)絡(luò)連接京革。該命令只有在安裝了 TCP/IP 協(xié)議后才可以使用奇唤。
netstat [-a] [-e] [-n] [-s] [-p protocol] [-r] [interval]
參數(shù)
-a顯示所有連接和偵聽端口。服務(wù)器連接通常不顯示匹摇。
-e顯示以太網(wǎng)統(tǒng)計(jì)咬扇。該參數(shù)可以與 -s 選項(xiàng)結(jié)合使用。
-n以數(shù)字格式顯示地址和端口號(而不是嘗試查找名稱)廊勃。
-s顯示每個(gè)協(xié)議的統(tǒng)計(jì)懈贺。默認(rèn)情況下,顯示 TCP坡垫、UDP梭灿、ICMP 和 IP 的統(tǒng)計(jì)。-p 選項(xiàng)可以用來指定默認(rèn)的子集冰悠。
-p protocol顯示由 protocol 指定的協(xié)議的連接堡妒;protocol 可以是 tcp 或 udp。如果與 -s 選項(xiàng)一同使用顯示每個(gè)協(xié)議的統(tǒng)計(jì)溉卓,protocol 可以是 tcp皮迟、udp、icmp 或 ip桑寨。
-r顯示路由表的內(nèi)容伏尼。
interval重新顯示所選的統(tǒng)計(jì),在每次顯示之間暫停 interval 秒尉尾。按 CTRL+B 停止重新顯示統(tǒng)計(jì)爆阶。如果省略該參數(shù),netstat 將打印一次當(dāng)前的配置信息沙咏。
好了扰她,看完這些幫助文件,我們應(yīng)該明白netstat命令的使用方法了“虐現(xiàn)在就讓我們現(xiàn)學(xué)現(xiàn)用徒役,用這個(gè)命令看一下自己的機(jī)器開放的端口。進(jìn)入到命令行下窖壕,使用netstat命令的a和n兩個(gè)參數(shù):
C:/>netstat -an
Active Connections
Proto Local Address Foreign Address State
TCP 0.0.0.0:80 ? 0.0.0.0:0 ? LISTENING
TCP 0.0.0.0:21 ? 0.0.0.0:0 ? LISTENING
TCP 0.0.0.0:7626 0.0.0.0:0 ? LISTENING
UDP 0.0.0.0:445 0.0.0.0:0
UDP 0.0.0.0:1046 0.0.0.0:0
UDP 0.0.0.0:1047 0.0.0.0:0
解釋一下忧勿,Active Connections是指當(dāng)前本機(jī)活動(dòng)連接,Proto是指連接使用的協(xié)議名稱瞻讽,Local Address是本地計(jì)算機(jī)的 IP 地址和連接正在使用的端口號鸳吸,F(xiàn)oreign Address是連接該端口的遠(yuǎn)程計(jì)算機(jī)的 IP 地址和端口號,State則是表明TCP 連接的狀態(tài)速勇,你可以看到后面三行的監(jiān)聽端口是UDP協(xié)議的晌砾,所以沒有State表示的狀態(tài)》炒牛看养匈!我的機(jī)器的7626端口已經(jīng)開放哼勇,正在監(jiān)聽等待連接,像這 樣的情況極有可能是已經(jīng)感染了冰河呕乎!急忙斷開網(wǎng)絡(luò)积担,用殺毒軟件查殺病毒是正確的做法。
然后tasklist命令是看這個(gè)進(jìn)程的id的 還可以使用管道命令 只提取包含這個(gè)端口的
tasklist | findstr ? “進(jìn)程”
這里注意兩點(diǎn)?
第一個(gè)管道命令windows下是 | findstr“” 也就是只提取包含“”的內(nèi)容而Linux 下是 | grep “”
第二 windows下 可以使用 /? 來獲取命令的幫助文檔 比如 tasklist /猬仁? 快去自己試試吧
?taskkill 用來殺死這個(gè)進(jìn)程 taskkill /f /t /im 3211(查到的進(jìn)程id)
那這些/f ?/t 都是什么呢 用剛介紹的 /? 去看看吧
總結(jié)一下 ?就是查詢那個(gè)程序在使用我們要用端口 它的進(jìn)程是多少 我們?nèi)⑺浪?哈哈 這個(gè)端口歸我了 ?
4.2檢查防火墻配置
防火墻就像一面結(jié)界? 我們知道端口相當(dāng)于門 而且要和另外一個(gè)端口相連 仿佛兩個(gè)門連接在一起成為通道 數(shù)據(jù)就在這里傳送? 而防火墻就在這兩個(gè)門之中 門是開著的(端口是開著的)? 但是數(shù)據(jù)傳過來 讓防火墻擋住了 :去去去 不讓你過 這種情況需要配置防火墻 而且防火墻不止一個(gè)哦 系統(tǒng)本身有防火墻 要是服務(wù)器 服務(wù)器又有一個(gè)防火墻
事實(shí)上我們得首先判斷一下 到底是不是防火墻擋住了導(dǎo)致的數(shù)據(jù)傳送問題?
原理就是telnet 本機(jī) 端口 看看通不通 因?yàn)檫@樣不會(huì)經(jīng)過防火墻?
在別的機(jī)器上telnet 剛才的ip 端口 看看通不通 這個(gè)肯定過防火墻
第一個(gè)通知 第二個(gè)不通 一般就是防火墻在搞鬼 具體的看我的實(shí)戰(zhàn)視頻
4.3.與前面類似 telnet類似 具體操作看視頻
這里要注意的是 windows 下 默認(rèn)沒有開啟telnet服務(wù) 去控制面板 程序 ?程序和功能
打開或關(guān)閉windows功能 下面去開啟
而linux可能需要自己裝一下 yum list | grep "telnet" ?先來查看有哪些安裝包
yum install 安裝包的名字 -y 就可以安裝了
5.編碼實(shí)戰(zhàn)
6 拓展思考?
我們常用的端口有哪些 ?比如mysql的3306?
默認(rèn)的保留端口有哪些 ?比如22 80等
ppt? https://ptteng.github.io/PPT/PPT-java/Java-task2-What%20is%20a%20port%20How%20do%20you%20determine%20if%20a%20port%20is%20occupied.html#/1
推薦的免費(fèi)學(xué)習(xí)網(wǎng)站:http://www.jnshu.com/login/1/13397829