七層模式:應用層,表示層,會話層,傳輸層,網路層,鏈路層,物理層
五層模式:應用層,傳輸層,網路層,鏈路層,物理層
四層模式:應用層,傳輸層,網路層,鏈路層
應用層:
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操作詢問資料可讀性,因此這種情況也成為輪詢機制。這兩種過程就好比...