這一章主要是講了網(wǎng)絡(luò)編程的一些概念碗旅,如計算機網(wǎng)絡(luò)渡处、客戶端與服務端、協(xié)議等祟辟。
計算機網(wǎng)絡(luò)医瘫、分組報文和協(xié)議
- 計算機網(wǎng)絡(luò)是由通過信道連接起來的主機和路由器組成。這些信道可以提供字節(jié)的傳輸旧困,比如無線wifi醇份,有線以太網(wǎng)。路由器一般不會運行應用程序吼具,而是提供一種路由功能(上面有路由表)僚纷,將信息路由轉(zhuǎn)發(fā)到不同主機上。我們每天在網(wǎng)上沖浪拗盒,就是在這種巨大的網(wǎng)路上傳遞信息怖竭。
- 在信道進行信息的傳輸,這些信息稱為分組報文陡蝇。網(wǎng)絡(luò)的傳輸是有基本單位的痊臭,大的報文需要進行拆分成多個小的分組哮肚,進行分組交換。與分組交換傳輸相對的是電路交換广匙,電路交換是一種連接式地傳輸允趟,是沿襲著打電話而來,在進行傳輸時占用整個信道鸦致,效率極低潮剪,所以現(xiàn)在一般都是用分組交換方式。分組交換的方式不連接蹋凝,所以在報文上就需要一些額外的信息鲁纠,確認雙方的身份,比如說IP地址鳍寂、端口、使用的協(xié)議等情龄。
- 協(xié)議迄汛,類似于人們交流的時候語言要統(tǒng)一的方式。只有當兩端的人語言統(tǒng)一了骤视,不同主機才能正常通信鞍爱。它規(guī)定了分組報文的交換方式和包含的意義。TCP/IP是目前主流的一套協(xié)議专酗,TCP/IP是一種網(wǎng)絡(luò)分層模型睹逃,它將網(wǎng)絡(luò)分成了應用層、傳輸層祷肯、網(wǎng)絡(luò)層沉填、數(shù)據(jù)鏈路層、物理層等佑笋,這種分層主要是為了將復雜的網(wǎng)絡(luò)簡單化翼闹,每一層提供相應的服務,并且相互解耦蒋纬,不同的網(wǎng)絡(luò)層使用不同的協(xié)議猎荠。
地址
網(wǎng)絡(luò)的地址,也就是主機的IP地址蜀备,標識了不同的主機关摇。就像送快遞一樣,每個人都要有一個地址碾阁。IP地址有32位的IPv4地址和128位的IPv6地址输虱,IPv6的出現(xiàn)主要是因為IPv4的地址不夠用了。當然我們在上網(wǎng)的時候瓷蛙,不是對一些特定的IP地址發(fā)起請求悼瓮,比如說192.168.2.1戈毒,而是像www.bai.com這樣的域名。作用其實就是方便記憶横堡。就像人們都記不住一個人的身份證號碼一樣埋市。
客戶端和服務端
客戶端和服務端本質(zhì)都是主機嘛,但是功能卻不同命贴,服務端可以提高數(shù)據(jù)庫等服務道宅,客戶端向服務端發(fā)起請求,請求數(shù)據(jù)胸蛛。在TCP的三次握手中污茵,就要一個主機作為客戶端,另一個主機作為服務端葬项。通常來說服務端根據(jù)不同的端口來提供不同的服務泞当,比如說HTTP的端口默認為80,F(xiàn)TP的端口默認為21民珍,而客戶端發(fā)起請求的時候襟士,它的端口是隨機的。
套接字
套接字就是IP+端口嚷量,對應著操作系統(tǒng)分配的一些資源陋桂。當報文到達主機的時候,需要通過套接字來進入相應的應用程序蝶溶;當主機中從不同應用收集數(shù)據(jù)嗜历,并為每個數(shù)據(jù)塊封裝上首部信息從而生成報文段,然后將報文段傳遞到網(wǎng)絡(luò)層中去時也需要套接字抖所。也就是提供了多路分解和多路復用的功能