從屌絲到架構(gòu)師的飛越(網(wǎng)絡(luò)編程篇)-網(wǎng)絡(luò)通信協(xié)議

一.介紹

網(wǎng)絡(luò)通信協(xié)議是一種網(wǎng)絡(luò)通用語言堕仔,為連接不同操作系統(tǒng)和不同硬件體系結(jié)構(gòu)的互聯(lián)網(wǎng)絡(luò)引提供通信支持,是一種網(wǎng)絡(luò)通用語言。

例如绍豁,網(wǎng)絡(luò)中一個微機用戶和一個大型主機的操作員進行通信,由于這兩個數(shù)據(jù)終端所用字符集不同牙捉,因此操作員所輸入的命令彼此不認識竹揍。為了能進行通信,規(guī)定每個終端都要將各自字符集中的字符先變換為標準字符集的字符后邪铲,才進入網(wǎng)絡(luò)傳送芬位,到達目的終端之后,再變換為該終端字符集的字符带到。因此昧碉,網(wǎng)絡(luò)通信協(xié)議也可以理解為網(wǎng)絡(luò)上各臺計算機之間進行交流的一種語言。

二.知識點介紹

1揽惹、網(wǎng)絡(luò)通信協(xié)議

2晌纫、網(wǎng)絡(luò)編程三要素

3、IP地址和端口號

三.上課視頻對應(yīng)說明文檔

在Internet上的主機一般運行了多個服務(wù)軟件永丝,同時提供幾種服務(wù)锹漱。每種服務(wù)都打開一個Socket,并綁定到一個端口上慕嚷,不同的端口對應(yīng)于不同的服務(wù)哥牍。

Socket就是為網(wǎng)絡(luò)編程提供的一種機制,又叫套接字編程喝检。Socket需要理解以下幾點內(nèi)容:

(1)通信的兩端都有Socket嗅辣。

(2)網(wǎng)絡(luò)通信其實就是Socket間的通信。

(3)數(shù)據(jù)在兩個Socket間通過IO傳輸挠说。

Socket編程一般使用TCP與UDP兩種協(xié)議澡谭,這里主要介紹TCP。

在介紹TCP/IP結(jié)構(gòu)時损俭,提到傳輸層的兩個重要的高級協(xié)議蛙奖,分別是UDP和TCP潘酗,其中UDP是User Datagram Protocol的簡稱,稱為用戶數(shù)據(jù)報協(xié)議雁仲,TCP是Transmission Control Protocol的簡稱仔夺,稱為傳輸控制協(xié)議。

1攒砖、網(wǎng)絡(luò)通信協(xié)議

通過計算機網(wǎng)絡(luò)可以使多臺計算機實現(xiàn)連接缸兔,位于同一個網(wǎng)絡(luò)中的計算機在進行連接和通信時需要遵守一定的規(guī)則,這就好比在道路中行駛的汽車一定要遵守交通規(guī)則一樣吹艇。在計算機網(wǎng)絡(luò)中惰蜜,這些連接和通信的規(guī)則被稱為網(wǎng)絡(luò)通信協(xié)議,它對數(shù)據(jù)的傳輸格式受神、傳輸速率蝎抽、傳輸步驟等做了統(tǒng)一規(guī)定,通信雙方必須同時遵守才能完成數(shù)據(jù)交換路克。

網(wǎng)絡(luò)通信協(xié)議有很多種樟结,目前應(yīng)用最廣泛的是TCP/IP協(xié)議(Transmission Control Protocal/Internet Protocal傳輸控制協(xié)議/英特網(wǎng)互聯(lián)協(xié)議),它是一個包括TCP協(xié)議和IP協(xié)議精算,UDP(User DatagramProtocal)協(xié)議和其它一些協(xié)議的協(xié)議組瓢宦,在學(xué)習(xí)具體協(xié)議之前首先了解一下TCP/IP協(xié)議組的層次結(jié)構(gòu)。

在進行數(shù)據(jù)傳輸時灰羽,要求發(fā)送的數(shù)據(jù)與收到的數(shù)據(jù)完全一樣驮履,這時,就需要在原有的數(shù)據(jù)上添加很多信息廉嚼,以保證數(shù)據(jù)在傳輸過程中數(shù)據(jù)格式完全一致玫镐。TCP/IP協(xié)議的層次結(jié)構(gòu)比較簡單,共分為四層怠噪,如圖所示恐似。

圖1-1 TCP/IP網(wǎng)絡(luò)模型

上圖中,TCP/IP協(xié)議中的四層分別是應(yīng)用層傍念、傳輸層矫夷、網(wǎng)絡(luò)層和鏈路層,每層分別負責(zé)不同的通信功能憋槐,接下來針對這四層進行詳細地講解双藕。

(1)鏈路層:鏈路層是用于定義物理傳輸通道,通常是對某些網(wǎng)絡(luò)連接設(shè)備的驅(qū)動協(xié)議阳仔,例如針對光纖忧陪、網(wǎng)線提供的驅(qū)動。

(2)網(wǎng)絡(luò)層:網(wǎng)絡(luò)層是整個TCP/IP協(xié)議的核心,它主要用于將傳輸?shù)臄?shù)據(jù)進行分組嘶摊,將分組數(shù)據(jù)發(fā)送到目標計算機或者網(wǎng)絡(luò)延蟹。

(3)運輸層:主要使網(wǎng)絡(luò)程序進行通信,在進行網(wǎng)絡(luò)通信時更卒,可以采用TCP協(xié)議等孵,也可以采用UDP協(xié)議稚照。

(4)應(yīng)用層:主要負責(zé)應(yīng)用程序的協(xié)議蹂空,例如HTTP協(xié)議、FTP協(xié)議等果录。

2上枕、網(wǎng)絡(luò)編程三要素:

分別為IP,端口弱恒,協(xié)議

其他:

ipconfig用于DOS獲取計算機IP設(shè)置

ping用于判斷兩臺計算機連接是否通暢

127.0.0.1與localhost類似辨萍,均代表本機地址

xxx.xxx.xxx.255 廣播地址,即該網(wǎng)段下所有用戶均可以被通知到

3返弹、IP地址和端口號

要想使網(wǎng)絡(luò)中的計算機能夠進行通信锈玉,必須為每臺計算機指定一個標識號,通過這個標識號來指定接受數(shù)據(jù)的計算機或者發(fā)送數(shù)據(jù)的計算機义起。

在TCP/IP協(xié)議中拉背,這個標識號就是IP地址,它可以唯一標識一臺計算機默终,目前椅棺,IP地址廣泛使用的版本是IPv4,它是由4個字節(jié)大小的二進制數(shù)來表示齐蔽,如:00001010000000000000000000000001两疚。由于二進制形式表示的IP地址非常不便記憶和處理,因此通常會將IP地址寫成十進制的形式含滴,每個字節(jié)用一個十進制數(shù)字(0-255)表示诱渤,數(shù)字間用符號“.”分開,如 “192.168.1.100”谈况。

隨著計算機網(wǎng)絡(luò)規(guī)模的不斷擴大源哩,對IP地址的需求也越來越多,IPV4這種用4個字節(jié)表示的IP地址面臨枯竭鸦做,因此IPv6 便應(yīng)運而生了励烦,IPv6使用16個字節(jié)表示IP地址,它所擁有的地址容量約是IPv4的8×1028倍泼诱,達到2128個(算上全零的)坛掠,這樣就解決了網(wǎng)絡(luò)地址資源數(shù)量不夠的問題。

通過IP地址可以連接到指定計算機,但如果想訪問目標計算機中的某個應(yīng)用程序屉栓,還需要指定端口號舷蒲。在計算機中,不同的應(yīng)用程序是通過端口號區(qū)分的友多。端口號是用兩個字節(jié)(16位的二進制數(shù))表示的牲平,它的取值范圍是0~65535,其中域滥,0~1023之間的端口號用于一些知名的網(wǎng)絡(luò)服務(wù)和應(yīng)用纵柿,用戶的普通應(yīng)用程序需要使用1024以上的端口號,從而避免端口號被另外一個應(yīng)用或服務(wù)所占用启绰。

接下來通過一個圖例來描述IP地址和端口號的作用昂儒,如下圖所示。

從上圖中可以清楚地看到委可,位于網(wǎng)絡(luò)中一臺計算機可以通過IP地址去訪問另一臺計算機渊跋,并通過端口號訪問目標計算機中的某個應(yīng)用程序。

4着倾、InetAddress

了解了IP地址的作用拾酝,我們看學(xué)習(xí)下JDK中提供了一個InetAdderss類,該類用于封裝一個IP地址卡者,并提供了一系列與IP地址相關(guān)的方法蒿囤,下表中列出了InetAddress類的一些常用方法。

(1)static InetAddress getByName(String host):在給定主機名的情況下確定主機的IP地址虎眨。

(2)static InetAddress getLocalHost():返回本地主機蟋软。

(3)String getHostName():獲取此IP地址的主機名。

(4)String getHostAddress():返回IP地址字符串(以文本表現(xiàn)形式)

上述方法中嗽桩,列舉了InetAddress的四個常用方法岳守。其中,前兩個方法用于獲得該類的實例對象碌冶,第一個方法用于獲得表示指定主機的InetAddress對象湿痢,第二個方法用于獲得表示本地的InetAddress對象。通過InetAddress對象便可獲取指定主機名扑庞,IP地址等譬重,接下來通過一個案例來演示InetAddress的常用方法.

代碼示例:

import java.io.IOException;

import java.net.InetAddress;

import java.net.UnknownHostException;

/*

*? 描述IP的類 InetAddress.? ip對象.?

*/

public class Demo2 {

public static void main(String[] args) throws IOException {

// fun1();

// 獲取別人的ip對象

InetAddress duiFang_IP = InetAddress.getByName("192.168.107.32");

String hostAddress = duiFang_IP.getHostAddress();

System.out.println(hostAddress); // 192.168.107.32

String hostName = duiFang_IP.getHostName();

System.out.println(hostName); // PC-201606060816

}

private static void fun1() throws UnknownHostException {

// 獲取本地主機ip對象

InetAddress local_IP = InetAddress.getLocalHost();

String hostAddress = local_IP.getHostAddress(); // 獲取本地ip地址.

System.out.println("ip:" + hostAddress); // 192.168.107.81

String hostName = local_IP.getHostName(); // 獲取本地主機名

System.out.println(hostName); // youcai-PC

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市罐氨,隨后出現(xiàn)的幾起案子臀规,更是在濱河造成了極大的恐慌,老刑警劉巖栅隐,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件塔嬉,死亡現(xiàn)場離奇詭異玩徊,居然都是意外死亡,警方通過查閱死者的電腦和手機谨究,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門恩袱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人胶哲,你說我怎么就攤上這事畔塔。” “怎么了鸯屿?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵澈吨,是天一觀的道長。 經(jīng)常有香客問我碾盟,道長棚辽,這世上最難降的妖魔是什么技竟? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任冰肴,我火速辦了婚禮榔组,結(jié)果婚禮上熙尉,老公的妹妹穿的比我還像新娘搓扯。我一直安慰自己,他們只是感情好锨推,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布铅歼。 她就那樣靜靜地躺著,像睡著了一般换可。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沾鳄,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音译荞,去河邊找鬼瓤的。 笑死,一個胖子當著我的面吹牛吞歼,可吹牛的內(nèi)容都是我干的圈膏。 我是一名探鬼主播篙骡,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼桥帆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了老虫?” 一聲冷哼從身側(cè)響起茫多,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎天揖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體今膊,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年市埋,在試婚紗的時候發(fā)現(xiàn)自己被綠了恕刘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡褐着,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出含蓉,到底是詐尸還是另有隱情,我是刑警寧澤斟赚,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布岂嗓,位于F島的核電站汁展,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏食绿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一器紧、第九天 我趴在偏房一處隱蔽的房頂上張望楼眷。 院中可真熱鬧熊尉,春花似錦、人聲如沸狰住。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勺择。三九已至,卻和暖如春省核,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背气忠。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芥备,地道東北人舌菜。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓亦镶,卻偏偏與公主長得像日月,于是被迫代替她去往敵國和親缤骨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容