端口綁定IP有什么用?
127.0.0.1和0.0.0.0的區別?
例如使用flask開發web應用時,可以指定ip(默認127.0.0.1)和端口(默認5000)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World'
if __name__ == '__main__':
app.run("127.0.0.1", 5000)
此時,我們就在127.0.0.1上開放了5000端口,然后我們就可以通過127.0.0.1:5000的形式在瀏覽器上訪問web應用
當然我們可以在別的本機上擁有的ip上開放別的端口,比如
if __name__ == '__main__':
app.run("192.168.137.1", 80)
此時,我們就在192.168.137.1上開放了80端口,然后我們就可以通過192.168.137.1:80的形式在瀏覽器上訪問web應用
192.168.137.1是我本機的某一個ip地址。一台主機可以擁有多個ip地址,不僅僅是因為可以有多張網卡,大多數的ip地址是操作系統虛擬出來的,有着各自的用途。
在windows上使用
ipconfig
命令可以查看所有ip及其對應的網卡在linux上使用
ifconfig
或者ip addr
命令
此外,還有一些特殊的ip地址,例如
{0,0}:網絡號和主機號都全部為0,表示“本網絡上的本主機”,也表示不確定的來源,只能用作 源地址(不能ping它)
...
...
{127,}:即網絡號為127的任意ip地址。都是內部主機回環地址(loopback),永遠都不能出現在主機外部的網絡中。
顯然,不是你本機的ip你肯定是不能用的。
那既然都是只能綁定本機的ip,還提供什么可選ip的功能干嗎?
在某個ip上開放端口,其實是借用了局域網的特性,來限制別人對端口的訪問。
比如我在192.168.137.1/16上開放端口,那么只有我自己和同屬於192.168.0.0網段的機器能訪問到我的ip,也就起到了限制端口訪問的作用了。
那在127.*.*.*上開放端口就變成了只有自己能訪問了
在0.0.0.0上開放端口意思就是允許任何ip訪問此端口
在開發的過程中,127.0.0.1用於提供本地服務,以供本地的其他應用程序使用
0.0.0.0用於提供遠程服務,以供外部訪問