什么是端口号
文章目錄
- 概念
- 端口號范圍的劃分
- 認識知名端口號(Well-Know Port Number)
- 一個進程是否可以bind多個端口號?
- 一個端口號是否可以被多個進程bind?
概念
IP地址是用來確定哪一臺服務器(主機)的,而端口號就是用來確定這臺主機上的那個進程的(qq、微信等都是一個進程),也就是說,可以通過端口,號確定是QQ,微信,愛奇藝等具體哪一個。比如網上購物后,你寫的你們學校為收貨地址,快遞員通過地址送到了你們學校(而這就相當于通過IP找到了具體的主機),但學校有很多學生,快遞員只能通過你的手機號來找到你(端口號就像你的手機號,確定電腦上的哪個具體的應用軟件)
端口號范圍的劃分
0 - 1023: 知名端口號, HTTP, FTP, SSH等這些廣為使用的應用層協議, 他們的端口號都是固定的.
1024 - 65535: 操作系統動態分配的端口號. 客戶端程序的端口號, 就是由操作系統從這個范圍分配的.
認識知名端口號(Well-Know Port Number)
有些服務器是非常常用的, 為了使用方便, 人們約定一些常用的服務器, 都是用以下這些固定的端口號:
ssh服務器, 使用22端口
ftp服務器, 使用21端口
telnet服務器, 使用23端口http服務器, 使用80端口
https服務器, 使用443
我們自己寫一個程序使用端口號時, 要避開這些知名端口號
一個進程是否可以bind多個端口號?
可以
因為一個進程可以打開多個文件描述符,而每個文件描述符都對應一個端口號,所以一個進程可以綁定多個端口號
就比如你可以在電腦上登兩個QQ一樣
一個端口號是否可以被多個進程bind?
不可以
注如果進程先綁定一個端口號,然后在fork一個子進程,這樣的話就可以是實現多個進程綁定一個端口號,但是兩個不同的進程綁定同一個端口號是不可以的
總結
- 上一篇: ubuntu系统下c语言入门以及编写简单
- 下一篇: 同一个路由重复点击报错的解决方法