javaseday27 網路程式設計

2021-08-07 07:30:38 字數 3519 閱讀 1386

osi (open system interconnection 開放系統互連) 參考模型

tcp/ip 參考模型

ip位址

埠號傳輸協議

1、物理層 主要定義物理裝置標準 如網線的介面型別 光纖的介面型別 各種傳輸介質的傳輸速率等 1、0轉化為電流 到達目的地再轉化為1、0 就是數模 和魔術轉換  這一層被稱為位元層

2、資料鏈路層主要將從物理層接受的資料進行mac(全球唯一)位址(網絡卡的位址) 的封裝與解封裝 常把這一層的資料叫做幀 這一層的工作裝置是交換機 資料通過交換機傳輸

3、網路層 從下層收到的資料進行ip位址(192.168.0.1)的封裝與解封裝 這一層工作的裝置是路由器 常把這一層的資料叫做資料報(把資料送到指定位置)

4、傳輸層 定義了一些傳輸資料的協議與埠號(www端號80等) tcp(傳輸控制協議 傳輸效率低 可靠性強 用於傳輸可靠性要求高 資料量大的資料) udp(使用者資料傳輸協議 與tcp特性相反 用於傳輸可靠性要求不高 資料量小的資料 如qq聊天) 主要是將下層接受到的資料進行分段和傳輸 到達目的位址後再進行重組 常常把這一層資料叫做段

5、會話層 通過傳輸層(埠號 傳輸埠和接受埠) 建立資料傳輸的通路 主要在系統之間發起會話或者接受會話請求(裝置之間需要互相認識 可以是ip也可以是mac 或者是主機名)

6、表示層 主要是進行對接受的資料進行解析、加密與解密、壓縮與解壓縮(也就是把計算機能識別的東西轉換**能識別的東西 如 聲音)

ip位址 inetaddress

網路中裝置的標識

不易記憶 可用主機名

本地回環位址127.0.0.1 主機名 localhost

埠號 應用程式通過埠號來確定用什麼來解析 比如qq能傳到另外乙個機器的qq就是用埠號

用於標識程序的邏輯位址 不同程序的標識

有效埠0~65535 其中 0~1024系統使用或保留埠

傳輸協議(規則)

通訊的規則

常見的協議 tcp、udp

udp 給位址就送 如果不存在實際的就丟掉

將資料及源和目的封裝成資料報中 不需要建立連線

每個資料報的大小限制在64l內

因無連線 是不可靠協議

不需要建立連線 速度快

tcp 先呼叫對方對方回饋 然後自己再反饋給對方讓對方知道我已連線  連線斷開就不傳輸資料

建立連線形成傳輸資料的通過

連線中進行大資料量傳輸

通過三次握手完成連線 是可靠協議

必須建立連線 效率會降低

//獲取本地主機ip位址物件

inetaddress ip = inetaddress.getlocalhost();

//獲取其他主機的ip位址物件

//ip = inetaddress.getbyname("192.168.79.1");//ip = inetaddress.getbyname("xb-201703181402");

ip = inetaddress.getbyname("xb-201703181402");

system.out.println(ip.gethostaddress());

system.out.println(ip.gethostname());

可以把** 在 系統的hosts中指定到本地回環遮蔽

socket 就是為網路服務提供的一種機制

通訊的兩端都是socket

網路通訊其實就是socket間的通訊

資料在兩個socket 間通過io傳輸

udp 傳輸

datagramsocket 與datagrampacket

/** 建立udp接收端的思路

* 1、建立socket服務 因為是要接受資料 必須要明確乙個埠號

* 2、建立資料報 用於儲存接收到的資料 方便用資料報物件的方法解析這些資料

* 3、使用socket服務的receive方法將接受到的資料儲存到資料報中

* 4、通過資料報的方法解析資料報中的資料

* 5、關閉資源

*///1、建立udp socket服務

datagramsocket ds = new datagramsocket(10000);

//2、建立資料報

byte buf = new byte[1024];

datagrampacket dp = new datagrampacket(buf, buf.length);

//3、使用接受方法將資料儲存到資料報中

ds.receive(dp);//阻塞式

//4、通過資料報物件的方法解析其中的資料 比如 位址 埠 資料內容

string ip =  dp.getaddress().gethostaddress();

int port = dp.getport();

string da = new string(dp.getdata(),0,dp.getlength());

system.out.println(ip+"."+port+"..."+da);

ds.close();

/** 建立udp傳輸的傳送端

* 思路

* 1、建立udp的socket服務

* 2、將要傳送的資料封裝到資料報中

* 3、通過udp的socket服務將資料報傳送出去

* 4.關閉socket 服務

*///1、udp的socket 服務 使用datagramsocket物件

datagramsocket ds = new datagramsocket(2552);

//2、將要傳送的資料封裝到資料報中

//string str = "udp傳輸演示";

bufferedreader br = new bufferedreader(new inputstreamreader(system.in));

string line =null;

while((line=br.readline())!=null)

//使用datagrampacket 將資料封裝到該物件包中

//3、通過udp的socket服務將資料報傳送出去 使用send方法

//4、關閉資源

ds.close();

public class send implements runnable

@override

public void run()ds.close();

} catch (unknownhostexception e) catch (ioexception e) }}

public class rece implements runnable

@override

public void run()

}} catch (ioexception e) }}

tcp傳輸

socket 和serversocket

建立客戶端和伺服器端

建立連線後 通過socket 中的io流進行資料傳輸

關閉socket

2 7 網路抓包

2.使用情境 對於很多初學者而言,由於不了解網路抓包,而直接去請求某個url,可能導致無法獲取自己想要的資料。在此,對網路抓包的使用情境做如下說明。3.谷歌瀏覽器抓包 網路抓包分析的主要內容是報文資訊,即http請求方法 資訊頭 響應狀態 響應狀態碼 響應正文內容和表單的提交引數等。多數瀏覽器,都具...

No 27網路基礎

1.re模組 search match finditer compile subsubn split 2.分組 引用分組 findall和分組 split和分組 search和分組 3.補充 4.習題 1 找出中所有標籤內的字串 import re ret re.findall print ret ...

day27 網路基礎

一 網路基礎 誕生於 美國 貝爾實驗室 linux系統 c語言gnu開源計畫 gcc編譯器 gcc hello.c cc或.cpp 等 物件導向的程式語言 面向過程的程式語言 組合語言 機器語言 源 彙編 編譯 鏈結 機器語言 010101 計算機網路 把分步在各個地點的不同的計算機系統 pc 筆記...