Java中的網路程式設計,網路模型的介紹

2021-09-16 20:37:36 字數 3455 閱讀 1308

七層模式:應用層,表示層,會話層,傳輸層,網路層,鏈路層,物理層

五層模式:應用層,傳輸層,網路層,鏈路層,物理層

四層模式:應用層,傳輸層,網路層,鏈路層

應用層:

http(超文字傳輸協議) ftp(檔案傳輸協議) stmp (郵件傳送協議) pop3(郵件接收協議), ssh ( 安全shell,用於遠端登入)

傳輸層:

tcp(安全可靠的協議) udp(不可靠)

網路層:

ipwindows下可以使用ipconfig來檢視ip位址

linux 下可以使用ifconfig來檢視ip位址

ip 位址的作用是用來定位到網路上的另一台計算機

port 埠 mysql 3306

oracle 1521

sqlserver 1433

redis 6379

tomcat 8080

apache(http的服務) 80

ftp 21

ssh 22

…埠號的作用是用來標記,要訪問對方的哪個程式

tcp協議:

tcp 協議的特點是: tcp 協議是乙個有連線、可靠的協議。所謂有連線,指的是在進行 tcp通訊之前,兩個需要通訊的主機之間要首先建立一條資料通道,就好像打**進行交流之前,首先要讓**接通一樣。所謂可靠,指的是 tcp 協議能夠保證: 1、傳送端傳送的資料不會丟失; 2、接收端接受的資料報的順序,會按照傳送端傳送的包的順序接受。也就是說, tcp協議能夠保證資料能夠完整無誤的傳輸。

tcp協議在收發資料之前,必須和對方建立可靠的連線。

乙個tcp連線必須經過三次「對話」才能建立起來:

第一次對話主機a向主機b發出連線請求資料報:「我想給你發資料,可以介紹嗎?」。

第二次對話主機b向主機a傳送同意連線和要求同步(同步就是兩個主機乙個在傳送,乙個在接受,協調工作)的資料報:「可以,你什麼時候發?」。

第三次對話主機a再傳送乙個資料報確認主機b的要求同步:「我現在就發,你接著吧。」

這就是三次對話,三次對話的目的是使資料報的傳送和接收同步,經過三次對話後,主機a才向主機b正式傳送資料

第一次握手:建立連線時,客戶端傳送syn包(syn=j)到伺服器,並進入syn_sent狀態,等待伺服器確認;syn:同步序列編號(synchronize sequence numbers)。

第二次握手:伺服器收到syn包,必須確認客戶的syn(ack=j+1),同時自己也傳送乙個syn包(syn=k),即syn+ack包,此時伺服器進入syn_recv狀態;

第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=k+1),此包傳送完畢,客戶端和伺服器進入established(tcp連線成功)狀態,完成三次握手。

udp協議:

socket api對 tcp,udp協議做了封裝,能夠連線到對方主機,收發資料。

服務端

//server服務端

public

class

server

system.out.

println

(new

string

(buf,

0,len));

//根據byte陣列構造字串,從0開始到實際讀到的長度結束

} socket.

close()

;}

客戶端
//客戶端client

public

class

client

}

服務端改進:一次可以連線多個客戶
//服務端改進,讓多個客戶連線

public

class

server1

system.out.

println

(new

string

(buf,

0,read));

}}catch

(ioexception e)}}

);}}

}

客戶端改進:從鍵盤迴圈錄入資訊
//連線本機的ip位址,有個特殊的位址是127.0.0.1/localhost   連線其他可以在控制台ipconfig查詢

socket socket =

newsocket

("127.0.0.1"

,0001);

scanner scanner =

newscanner

(system.in)

;while

(true

)

服務端改進2:支援多個客戶端連線, 要記錄所有的客戶端socket,並給客戶端socket傳送資訊
//服務端改進2:支援多個客戶端連線, 要記錄所有的客戶端socket,並給客戶端socket傳送資訊

public

class

server2

//獲取某個客戶端發過來的資料內容

string s = address +

":"+

newstring

(bytes,

0, read)

; system.out.

println

(s);

//遍歷map集合

for(socket socket1 : socketmap.

keyset()

)}}catch

(ioexception e)}}

);}}

}

客戶端改進2:客戶端接收服務端發過來的資料
//客戶端改進 :客戶端接收服務端發過來的資料

public

class

client2

string s =

newstring

(bytes,

0,read)

; system.out.

println

(s);}}

catch

(ioexception e)}}

).start()

; scanner scanner =

newscanner

(system.in)

;while

(true)}

}

網路模型與Java中的網路程式設計的一些介紹

七層模式 應用層,表示層,會話層,傳輸層,網路層,鏈路層,物理層 五層模式 應用層,傳輸層,網路層,鏈路層,物理層 四層模式 應用層,傳輸層,網路層,鏈路層 http 超文字傳輸協議 ftp 檔案傳輸協議 stmp 郵件傳送協議 pop3 郵件接收協議 ssh 安全shell,用於遠端登陸 tcp ...

java中的網路程式設計2

urldecoder類包含乙個decode string s,string enc 靜態方法,它可以將看上去是亂碼的特殊字元轉換成普通字串。urlencoder類包含乙個encode string s,string enc 靜態方法,它可以將普通字串轉換成aoolication x www form...

Unix網路程式設計中的I O模型

1.阻塞i o模型與非阻塞i o模型 阻塞與非阻塞的模型主要區別是 阻塞i o模型中使用者程序在能讀取資料之前會進入睡眠或者掛起狀態 而非阻塞情況下遇到讀取資料失敗時核心直接返回錯誤訊號,使用者程序便在成功返回資料之前一直在呼叫recv操作詢問資料可讀性,因此這種情況也成為輪詢機制。這兩種過程就好比...