Java基礎——網絡編程(一)
本文主要記錄網絡編程的一些基礎知識,學了前班部分,對專業術語有些蒙,但是,收貨也是很多很多的。觀察了自己計算機的進程,查找其他網絡地址的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)。
第四層,應用層
第三層,傳輸層
第二層,網間層
第一層,網絡接口
Java基礎——網絡編程(一)