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