文章目錄
- 1.端口号
-
- 1.1 端口号的劃分
- 1.2 知名端口号
- 2.常見指令
-
- 2.1 netstat
- 2.2 pidof
- 2.3 ps
- 2.4 ping
- 3. UDP協定
-
- 3.1 UDP報頭
-
- UDP怎麼将報頭與有效載荷分離?
- UDP怎麼确定将有效載荷交給上層的誰?
- 3.2 UDP的特點
- 3.3 UDP緩沖區
1.端口号
端口号(port): 在網絡技術中,端口包括邏輯端口和實體端口兩種類型。
實體端口指的是實體存在的端口,如、集線器、交換機、路由器上用 于連接配接其他網絡裝置的接口。
邏輯端口是指邏輯意義上用于區分服務的端口,如TCP/IP協定中的服務端口,端口号的範圍從0到65535,比如用于浏覽網頁服務的80端口。
由于實體端口和邏輯端口數量較多,為了對端口進行區分,将每個端口進行了編号,這就是端口号。即用來辨別特定主機上的唯一的網絡程序
IP: 辨別公網中的唯一一台主機
一般的我們将IP+端口号稱為套節字,在網絡中發送方和接收方兩個用戶端就可以看作是一對套接字進行程序間通信
在TCP/IP協定中,用"源IP"、“源端口号”、“目的IP”、“目的端口号”、"協定号"這樣的一個五元組來辨別一個通信
1.1 端口号的劃分
端口号占兩個位元組,即範圍為0~65535
- 0~1023:知名端口号,HTTP,FTP,SSH等這些廣為使用的應用層協定,它們的端口号都是固定的
- 1024~65535:作業系統動态配置設定的端口号,用戶端程式的端口号,就是由作業系統從這個範圍配置設定的
1.2 知名端口号
- ssh伺服器:使用22端口号
- ftp伺服器:使用21端口号
- telnet伺服器:使用23端口号
- http伺服器:使用80端口号
- https伺服器:使用443端口号
//檢視知名的端口号
more etc/services
一個程序可以綁定多個端口号嗎?
可以,就好像一個人可以打多份工
一個端口号是否可以被多個程序綁定?
不可以,端口号是用來表示特定主機上的唯一一個網絡服務程序,如果一個端口号可以被多個程序綁定,何談唯一。
2.常見指令
2.1 netstat
netstat是一個用來檢視網絡狀态的重要工具
文法:netstat [選項]
功能:檢視網絡狀态
常用選項:
- n 拒絕顯示别名,能顯示數字的全部轉化為數字
- l 僅列出有在Listen(監聽)的服務狀态
- p 顯示建立相關連接配接的程式名
- t(tcp)僅顯示tcp相關選項
- u(udp)僅顯示udp相關選項
- a 顯示所有選項 預設不顯示Listen相關
2.2 pidof
pidof:檢視伺服器的程序id
文法:pidof [程序名]
功能:根據程序名
2.3 ps
ps:檢視網絡程序
文法:ps aux | grep 你的網絡服務
2.4 ping
ping [url]
若有回應,證明有網
3. UDP協定
3.1 UDP報頭
- 16位源端口号:發送方端口号 16位目的端口号:接收方端口号
- 16位UDP長度:報頭和資料部分在内的總位元組數,因為報頭的長度是固定的,是以主要被用來計算可變長度的資料部分
- 16位UDP校驗和:保證資料的安全性,校驗值首先在資料發送方通過特殊的算法計算得出,在傳遞到接收方之後,還需要再重新計算。如果某個資料報在傳輸過程中被第三方篡改等原因受到損壞,發送和接收方的校驗計算值将不會相符,由此UDP協定可以檢測是否出錯。如果校驗和出錯,則該資料直接丢棄
UDP怎麼将報頭與有效載荷分離?
UDP是定長封包,在資料讀取時,隻需要讀取前8個位元組,剩下的就是有效載荷
UDP怎麼确定将有效載荷交給上層的誰?
16位目的端口号
正是因為受UDP協定報頭中16位端口号的影響,使得端口号最大隻能是65535,再大的話UDP放不下。
3.2 UDP的特點
UDP的傳輸過程類似于寄信
- 無連接配接:知道對端大的IP和端口号就可以直接進行傳輸,不需要建立連接配接
-
不可靠:如果因為網絡故障資料無法發送到對方,UDP協定層不會給應用層傳回任何錯誤資訊
不可靠的協定就是不好的協定嗎? 當然不是,要讓資料可靠就要做更多的事情,花費更多的資源去保證可靠性,往往比較複雜,有些事情沒有必要讓資料可靠,也就沒有必要花那麼多時間和資源去維護可靠性
- 面向資料報:不能夠靈活的控制讀寫資料的次數和數量 應用層交給UDP多長的封包,UDP将原樣發送,即不會拆分也不會合并。
3.3 UDP緩沖區
UDP沒有真正意義上的發送緩沖區,UDP會将資料直接交給核心,由核心将資料傳給網絡層協定進行後續的操作
UDP 具有接收緩沖區,但是這個接收緩沖區不能保證收到的UDP報的順序和和發送UDP報的順序一緻,如果緩沖區滿了,再到達的UDP資料就會被丢棄。