Java基礎——網路編程(一)

来源:http://www.cnblogs.com/1693977889zz/archive/2017/07/11/7153111.html
-Advertisement-
Play Games

本文主要記錄網路編程的一些基礎知識,學了前班部分,對專業術語有些蒙,但是,收貨也是很多很多的。觀察了自己電腦的進程,查找其他網路地址的IP,對互聯網的層次關係有了更深一步的瞭解。下麵多是概念的摘錄,有時間我還要回來再看看,加深理解。 1 網路編程的基礎知識 1.1 網路協議 規定了電腦之間連接的 ...


本文主要記錄網路編程的一些基礎知識,學了前班部分,對專業術語有些蒙,但是,收貨也是很多很多的。觀察了自己電腦的進程,查找其他網路地址的IP,對互聯網的層次關係有了更深一步的瞭解。下麵多是概念的摘錄,有時間我還要回來再看看,加深理解。

目錄:
1.網路編程的基礎知識
    1.1  網路協議
    1.2  tcp /ip
    1.3  IP地址
    1.4  Port(埠號)
2 UDP/Tcp
3 OSI參考模型

1 網路編程的基礎知識

1.1  網路協議

規定了電腦之間連接的物理機械,電器等特性,及電腦間的相互定址規則,以及數據發送衝突的解決辦法,分段傳輸與解決大數據包的傳輸方式等等。

---機械特性,比如網線和網卡

---電器特性,比如電平3伏為1,一3為0

. HTTP1.1(Hypertext Transfer Protocol Vertion 1.1)超文本傳輸協議-版本1.1

. ARP(Address Resolution Protocol)地址解析協議

. SNMP(Simple Network Management Protocol)網路管理協議

. CMIP(Common Management Information Protocol)通用管理信息協議

. DHCP(Dynamic Host Configuration Protocol)動態主機配置協議

. FTP(File Transfer Protocol)文件傳輸協議

. IPv6(Internet Protocol Version 6)Internet協議-版本6

. IPX/SPX(Internetwork Packet Exchange/Sequential PacketExchange)互連網包交換/順序包交換

. POP3(Post Office Protocol Version 3)郵局協議-版本3

. PPP(Point to Point Protocol)點對點協議

. SMTP(Simple Mail Transfer Protocol)簡單郵件傳送協議

. TELNET Protocol虛擬終端協議

. UDP(User Datagram Protocol)用戶數據報協議

1.2  tcp /ip

網路協議也有多種 TCP /IP 只是一種

大多數網路程式,都是以這個協議為基礎的。

TCP/IP協議族中包括上百個互為關聯的協議有幾個常用協議如下:

1、Telnet(Remote Login):提供遠程登錄功能,一臺電腦用戶可以登錄到遠程的另一臺電腦上,如同在遠程主機上直接操作一樣。

2、FTP(File Transfer Protocol):遠程文件傳輸協議,允許用戶將遠程主機上的文件拷貝到自己的電腦上。

3、SMTP(Simple Mail transfer Protocol):簡單郵政傳輸協議,用於傳輸電子郵件。

4、NFS(Network File Server):網路文件伺服器,可使多台電腦透明地訪問彼此的目錄。

5、UDP(User Datagram Protocol):用戶數據包協議,它和TCP一樣位於傳輸層,和IP協議配合使用,在傳輸數據時省去包頭,但它不能提供數據包的重傳,所以適合傳輸較短的文件。

1.3  IP地址(我查看了自己的IP和其他網站的IP)

每個internet上的 主機和路由器都由一個ip地址表示,它包擴網路號和主機號,所有ip地址, 都是32位的,按國際標準,分為a b c d e 五類

a   0+7位網路號 +主機號  1.0.0.0 到  127.255.255.255 之間

b   10+14位網路號 +主機號 127.0.0.0 到191.255.255.255之間

c   110+21位網路號 +主機號 192.0.0.0 到 223.255.255.255

d   1110+多點播送地址    224.0.0.0 到 239.255.255.255

e   11110+留做將來使用 240.0.0.0+ 247.255.255.255

==本地迴路地址  127.0.0.1

電腦中正確安裝TCP/IP協議後,電腦中都會有一個稱做本地迴路的地址 發往 127.0.0.1 的數據不經過網卡傳遞,而是指接被本地電腦中Tcp/ip協議棧中的幾個上層協議接收,是一個用於本地電腦上使用的特殊地址,使用Ping就可以檢查TCP/IP協議是否正確安裝,    它沒有和網卡綁定,    網卡沒有正確連接或是沒有網線的情況下,仍可使用該地址4 個位元組表示的是 ipv4  16 個位元組表示的IP 是ipv6。

java中 描述IP地址的對象是 InetAddress 直接已知子類: Inet4Address, Inet6Address

import java.net.InetAddress;
import java.net.UnknownHostException;

public class InetTest1 {
    public static void main(String[] args) throws UnknownHostException {
        ipDemo();
    }

    public static void ipDemo() throws UnknownHostException {

        InetAddress[] netAddr = InetAddress.getAllByName("www.youku.com");
        for (InetAddress s : netAddr) {
            System.out.println(s.getHostAddress());
        }
        System.out.println("=====分割線=====");

        InetAddress[] netAddr2 = InetAddress.getAllByName("www.baidu.com");
        for (InetAddress s : netAddr2) {
            System.out.println(s.getHostAddress());
        }
    }
}

1.4  Port(埠號)

因為一個電腦上同時可運行多個網路程式,而IP地址只能保證把數據送到某個電腦上,但不能保證把數據交給電腦上的每個程式,因此每個發送的網路數據包的頭部,都包含有一個稱為埠號的整數 即Port, 是一個占用兩個位元組的整數,用於表示這個數據包該交由哪個應用程式來處理,與數據包中的埠號相對應,必須為電腦上的網路程式也指定一個埠號,告訴網路程式應該接收哪個埠號的程式,一臺電腦上不能有兩個使用同一埠號的程式,範圍是0-65535     0-1023之間的稱為有名埠.用於一些知名的網路服務和應用。當電腦接收到一個網路程式發送的數據包後,驅動程式會根據數據包中指定的埠號,知道該交給哪個應用程式。 網路通迅,確切的說,不是兩台電腦之間在收發數據,而是兩個網路程式之間在收發數據

查看埠的命令 netstat -noa

====2 UDP/Tcp

---- TCP (Transmission Control Protocol )傳輸控制協議,是而向連接的通信協議,提供兩台電腦之間的可靠和無差錯的數據傳輸數據源和目標之間或建立一個虛擬的連接,建立後,電腦之間就會把數據,當作雙向位元組流進行交換。

---- UDP 用戶數據報協議,(USER datagram Protocol) 是無連接的通信協議,不保證數據的可靠傳輸,能夠向若幹個目標發送和接收數據,數據包會有丟失\的時候。

---- TCP UDP 的數據包的幀格式 如下

協議類型  源IP 目標IP 源埠 目標埠 幀序號 幀數據

其中協議類型用於區分TCP UDP

====3 OSI參考模型(這裡要重點理解!!)

OSI參考模型 (Open System Interconnect 開放式網路互聯)     // TCP/IP參考模型           

七層:

應用層 Application 一些終端應用

表示層 Presentation  對接收的數據進行解釋,加密和解密(把電腦能識別的東西.轉換成人能識別的東西)如圖片聲音等

會話層 Session 建立數據傳輸通路

傳輸層 Transport 定義了一些數據傳輸的協議和埠號 常把這一層的數據叫段 //網關

網路層  將從下層接收到的數據進行IP地址的封裝和解裝 在這一層工作的設備叫路由器, 常把這層的數據叫包

數據鏈路層 Data Link 將從物理層接收的數據進行MAC(網卡地址)的封裝和解裝,常把這一層的數據叫幀 在這一層工作的設備叫交換機,網卡,網橋

物理屋 Physical,這一層的數據叫比特 //光纖

TCP/IP分層模型(TCP/IP Layening Model)被稱作網際網路分層模型(Internet Layering Model)、網際網路參考模型(Internet Reference Model)。

第四層,應用層 

第三層,傳輸層

第二層,網間層

第一層,網路介面


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Visual Studio提示“無法啟動IIS Express Web伺服器”的解決方法 有時,在使用Visual Studio運行ASP.NET項目時,會提示“無法啟動IIS Express Web伺服器”,無法運行,如圖: 這一般出現在重裝系統之後,或者項目是從別的電腦上複製過來的。解決方法就是 ...
  • 在Tomcat中主要有以下幾種類載入器:(圖片來自網路) tomcat啟動時,會創建幾種類載入器: 1 Bootstrap 引導類載入器 載入JVM啟動所需的類,以及標準擴展類,位於jre/lib/ext下。 2 System 系統類載入器 載入tomcat啟動的類,比如bootstrap.jar, ...
  • 前言 本文主要是筆者小結 WWDC2017 中 "《What's New in Swift》" 的 Session ,其中也摻雜了些《What’s New in Foundation》,僅作記錄。 下麵步入主題。 私有訪問控制("Private" Access Control) "SE 0169" ...
  • 這張圖我相信基本上對JVM有點接觸的都應該很熟悉,可以說這是JVM入門的第一課。其中的“堆”和“虛擬機棧(棧)”更是耳熟能詳。下麵將圍繞這張圖對JVM的運行時數據區做一個簡單介紹。 程式計數器(Program Counter Register) 這和電腦操作系統中的程式計數器類似,在電腦操作系統 ...
  • 第一章 C/C++程式基礎 一、一般賦值語句: 考察一般賦值語句的概念和方法。 1.程式: 2.答案: 3.分析: 代碼行.12中的“&”表示位與計算,即將y和z轉換為二進位數字10和10,進行位與計算。1&1=1,其餘都是0,故結果為二進位10。所以答案為2,x=2。 代碼行.16中的“|”表示位 ...
  • 跨域概念 跨域是瀏覽器遵循同源策略,對頁面腳本的安全限制,不允許Javascript請求不同域的數據。 跨域的本質就是要解決同源策略的限制!假如有地址 http://www.example1.com:8080/a.jsp,如下請求是不符合同源策略限制的: 跨域之JSONP JSONP跨域是利用<sc ...
  • python列表操作——增 append:追加一條數據到列表的最後 python列表操作——刪 如果當pop()中帶入了參數,其效果等同於del python列表操作——改 python列表操作——查 當下標為負數時,則從右邊開始取 列表其他操作: ...
  • 在ARMv6T2以及ARMv7架構擴展了Thumb指令集,其中加入了IT指令,進一步增強了代碼的緊湊性。 Thumb中有一個比較有意思的指令——IT,這條指令用於根據指定的條件來執行後面相繼的四條指令。當然,Thumb-2中大部分算術邏輯指令都含有帶條件執行的特征,不過Thumb-2是32位的。如果 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...