JavaSE(十四)——网络编程(IP地址、端口号、TCP、UDP)
文章目錄
- 1. 概述
- 2. InetAddress類
- 3. 端口
- 4. TCP協議
- 4.1 傳輸消息
- 4.2 文件上傳
- 5. UDP協議
- 6. TCP與UDP區別
- 7. URL
- 8. 下載資源
- 9. 協議相關面試題
- (1)講一下瀏覽器從接收到一個 URL 到最后展示出頁面,經歷了哪些過程。
- (2)http 和 https 的區別
1. 概述
-
網絡編程:使用套接字(socket)來達到進程間通信,現在一般稱為TCP/IP編程。
-
套接字(socket):網絡上具有唯一標識的IP地址和端口號組合在一起才能構成唯一能識別的標識符套接字。
-
套接字原理機制:
通信的兩端都有Socket。
網絡通信其實就是Socket間的通信。
數據在兩個Socket間通過IO傳輸。 -
網絡編程三要素:①IP地址:InetAddress: 網絡中設備的標識,不易記憶,可用主機名;②端口號: 用于標識進程的邏輯地址,不同進程的標識;③傳輸協議: 通訊的規則常見協議:TCP,UDP。
-
IP地址分類
A類:1.0.0.1—127.255.255.254
(1)10.X.X.X是私有地址(私有地址就是在互聯網上不使用,而被用在局域網絡中的地址)
(2)127.X.X.X是保留地址,用做循環測試用的。
B類:128.0.0.1—191.255.255.254 172.16.0.0—172.31.255.255是私有地址。
C類:192.0.0.1—223.255.255.254 192.168.X.X是私有地址
D類: 224.0.0.1—239.255.255.254
E類: 240.0.0.1—247.255.255.254 -
參考模型:
2. InetAddress類
-
表示互聯網協議 (IP) 地址,方便我們對IP地址的獲取和操作。
-
InetAddress.getByName(String host) //在給定主機名的情況下獲取主機的IP地址
-
inetAddress.getHostAddress() //獲取IP
-
? inetAddress.getHostName() //獲取主機名
-
實例:
-
運行結果:
3. 端口
- 端口表示計算機上的一個程序的進程;端口的表示是一個16位的二進制數,2個字節,對應十進制的0~65535;單個協議下,端口號不能沖突,多個協議下,端口號可以相同;
- 分類:公有端口:0~1023
程序注冊端口:1024~49151,用戶分配或者程序
動態、私有:49152~65535 - 實例:
- 運行結果:
4. TCP協議
- TCP協議:傳輸控制協議,是可靠連接,類似于打電話,只有等待對方接通的時候才可以交流,也就是確認了對方可以傳信息,才會發送信息,三次握手,四次揮手,但是傳輸速度慢;
4.1 傳輸消息
-
實例:
客戶端:
服務器:
-
運行結果:
4.2 文件上傳
- 實例:
客戶端:
服務端:
- 運行結果:
5. UDP協議
- UDP協議:用戶數據報協議,是不可靠的,就像發短信,發出去就完事了,對方是否接收到就與自己無關,但是傳輸速度快;
- 實例:
用戶端:
服務器:
- 運行結果:
6. TCP與UDP區別
- TCP(傳輸控制協議)是一種面向連接的、可靠的、基于字節流的傳輸層通信協議,是專門為了在不可靠的網絡中提供一個可靠的端對端字節流而設計的,面向字節流。
- UDP(用戶數據報協議)是iso參考模型中一種無連接的傳輸層協議,提供簡單不可靠的非連接傳輸層服務,面向報文。
區別:
1) TCP是面向連接的,可靠性高;UDP是基于非連接的,可靠性低;
2) 由于TCP是連接的通信,需要有三次握手、重新確認等連接過程,會有延時,實時性差,同時過程復雜,也使其易于攻擊;UDP沒有建立連接的過程,因而實時性較強,也稍安全;
3) 在傳輸相同大小的數據時,TCP首部開銷20字節;UDP首部開銷8字節,TCP報頭比UDP復雜,故實際包含的用戶數據較少。TCP在IP協議的基礎上添加了序號機制、確認機制、超時重傳機制等,保證了傳輸的可靠性,不會出現丟包或亂序,而UDP有丟包,故TCP開銷大,UDP開銷較小;
4) 每條TCP連接只能時點到點的;UDP支持一對一、一對多、多對一、多對多的交互通信。
應用場景選擇:
- 對實時性要求高和高速傳輸的場合下使用UDP;
- 在可靠性要求低,追求效率的情況下使用UDP;
- 需要傳輸大量數據且對可靠性要求高的情況下使用TCP。
7. URL
- 統一資源定位符:定位資源的,定位互聯網上的某一個資源
- 實例
8. 下載資源
- 代碼:
9. 協議相關面試題
(1)講一下瀏覽器從接收到一個 URL 到最后展示出頁面,經歷了哪些過程。
1、DNS 解析
2、TCP 連接
3、發送 HTTP 請求
4、服務器處理請求并返回 HTTP 報文
5、瀏覽器解析渲染頁面
(2)http 和 https 的區別
1、連接的端口不一樣,http 是 80,https 是 443
2、http 連接很簡單,沒有狀態; https 是 ssl 加密的傳輸,身份認證的網絡協議,相對 http 傳輸比較安全
總結
以上是生活随笔為你收集整理的JavaSE(十四)——网络编程(IP地址、端口号、TCP、UDP)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JavaSE(十三)——Swing
- 下一篇: JavaSE(十五)——注解