常見的網(wǎng)絡(luò)連接方式
- LAN連接:局域網(wǎng)(Local Area Network,LAN)是在一定區(qū)域存在的網(wǎng)絡(luò),可以通過局域網(wǎng)接入Internet。
- 無線網(wǎng)絡(luò):無線網(wǎng)絡(luò)的安全協(xié)議上,WPA已經(jīng)取代了WEP成為無限網(wǎng)絡(luò)的主流技術(shù)。
- 有線寬帶:數(shù)字用戶線路(Digital Subscriber Line,DSL)使用普通電話線傳輸數(shù)據(jù),使用DSL需要到電信公司申請,電信公司提供一個"機(jī)盒"。國內(nèi)主要使用的DSL技術(shù)為ADSL(Asymmetric,非對稱),簡單來說就是上傳和下載速度不同。
- 撥號:這種方式需要調(diào)制解調(diào)器設(shè)備將電話的模擬信號轉(zhuǎn)變?yōu)橛嬎銠C(jī)可以理解的數(shù)字信號,我們把這個設(shè)備稱為"貓",隨著互聯(lián)時代的數(shù)據(jù)爆炸式增長,這種方式也逐漸淡出人們的視野。
OSI七層模型
- 應(yīng)用層
- 表示層
- 會話層
- 傳輸層
- 網(wǎng)絡(luò)層
- 數(shù)據(jù)鏈路層
- 物理層
TCP/IP四層模型
- 應(yīng)用層(1~3):FTP、Telnet、DNS、SMTP
- 傳輸層(4):傳輸控制協(xié)議(TCP)(可靠面向連接的協(xié)議)、用戶數(shù)據(jù)報協(xié)議(UDP)(不可靠面向無連接的協(xié)議)
- 網(wǎng)際互聯(lián)層(5):網(wǎng)際協(xié)議(IP)、互聯(lián)網(wǎng)組管理協(xié)議(IGMP)、互聯(lián)網(wǎng)控制報文協(xié)議(ICMP)(ping)
- 網(wǎng)絡(luò)接口層(6~7):地址解析協(xié)議(ARP)可以講IP地址轉(zhuǎn)換為物理地址,在LAN中使用物理地址傳遞數(shù)據(jù)
TCP/IP的三次握手

- SYN:同步序列編號(Synchronize Sequence Numbers)
- ACK:確認(rèn)字符(Acknowledge character)
數(shù)據(jù)封裝過程

OSI模型和TCP/IP兩種模型比較
相同點:
- OSI模型和TCP/IP模型都采用了層次結(jié)構(gòu)的特點
- 都能提供面向連接和無連接兩種通信服務(wù)機(jī)制
不同點:
- 兩種模型對可靠性要求不同,TCP/IP要求更高
- OSI模型是在各種協(xié)議開發(fā)之前建立,具有通用性,而TCP/IP模型是在協(xié)議開發(fā)完之后才建立模型,因此只適用于TCP/IP網(wǎng)絡(luò)
- OSI模型只是一個理論模型并沒有實際的產(chǎn)品,而TCP/IP模型已經(jīng)成為了"實際上國際標(biāo)準(zhǔn)"
IP地址
定義
IP(Internet Protocol)地址是IP協(xié)議提供的一種統(tǒng)一的地址格式,IP地址由32個二進(jìn)制位表示并且每8個二進(jìn)制位為一組,其范圍為00000000.00000000.00000000.00000000~11111111.11111111.11111111.11111111,用十進(jìn)制的整數(shù)表示為0.0.0.0~255.255.255.255。
分類
我們將上述定義的IP地址按照特定的方式劃分為以下A、B、C、D、E五類,其中D、E類IP地址非民用不予以討論
| 網(wǎng)絡(luò)類別 | 最大網(wǎng)絡(luò)數(shù) | IP地址范圍 | 最大主機(jī)數(shù) | 私有IP地址 |
|---|---|---|---|---|
| A | 126( |
1.0.0.0~126.255.255.255 | 16777214( |
10.0.0.0~10.255.255.255 |
| B | 16384( |
128.0.0.0~191.255.255.255 | 65536( |
172.16.0.0~172.31.255.255 |
| C | 2097152( |
192.0.0.0~223.255.255.255 | 254( |
192.168.0.0~192.168.255.255 |
注意:
- 最大網(wǎng)絡(luò)數(shù):A類別的每個IP地址的第一組八位二進(jìn)制數(shù)表示當(dāng)前網(wǎng)段,0.0.0.0不表示任何網(wǎng)絡(luò),而127.0.0.1表示本機(jī),所以A類別的最大網(wǎng)絡(luò)數(shù)為
。B類別的前兩組八位二進(jìn)制數(shù)代表當(dāng)前網(wǎng)段,C類別的前三組八位二進(jìn)制數(shù)代表當(dāng)前網(wǎng)段,所以B、C類別最大網(wǎng)絡(luò)數(shù)可以依此計算出。
- 最大主機(jī)數(shù):例如A類別的1.0.0.0表示網(wǎng)絡(luò)地址,而1.255.255.255表示當(dāng)前網(wǎng)絡(luò)的廣播地址,所以A類別最大主機(jī)數(shù)為
,B、C類別依此類推。
- 私有IP地址:由人為規(guī)定的某一段IP地址可以在任意不同的局域網(wǎng)內(nèi)重復(fù)使用,可以減小公有IP地址的數(shù)量。
子網(wǎng)掩碼
我們在前面提到由任意一個IP地址可以推斷出網(wǎng)絡(luò)地址、主機(jī)地址和廣播地址,子網(wǎng)掩碼(subnet mask)的主要作用在于分離出IP地址中的的網(wǎng)絡(luò)地址和主機(jī)地址,同時子網(wǎng)掩碼必須和IP地址同時使用。假如兩臺計算機(jī)要通信則需要判斷兩臺計算機(jī)是否處于同一個網(wǎng)絡(luò)地址,如果網(wǎng)絡(luò)地址相同,表明接受方在本網(wǎng)絡(luò)上,那么可以把數(shù)據(jù)包直接發(fā)送到目標(biāo)主機(jī),否則就需要路由網(wǎng)關(guān)將數(shù)據(jù)包轉(zhuǎn)發(fā)送到目的地。子網(wǎng)掩碼還用于將網(wǎng)絡(luò)進(jìn)一步劃分為若干子網(wǎng),以避免主機(jī)過多而擁堵或過少而IP浪費(fèi)。
表示方法
點分十進(jìn)制表示法:二進(jìn)制轉(zhuǎn)換十進(jìn)制,每8位用點號隔開
例如:子網(wǎng)掩碼二進(jìn)制11111111.11111111.11111111.00000000,表示為255.255.255.0-
CIDR斜線記法:IP地址/“1”的個數(shù)
例1:192.168.1.100/24,其子網(wǎng)掩碼表示為255.255.255.0,二進(jìn)制表示為11111111.11111111.11111111.00000000
例2:172.16.198.12/20,其子網(wǎng)掩碼表示為255.255.240.0,二進(jìn)制表示為11111111.11111111.11110000.00000000
不難發(fā)現(xiàn),例1中共有24個1,例2中共有20個1,1的個數(shù)也代表了網(wǎng)絡(luò)號的長度,運(yùn)營商ISP常用這樣的方法給客戶分配IP地址。
分類
-
缺省子網(wǎng)掩碼(未劃分子網(wǎng)):子網(wǎng)掩碼的32位二進(jìn)制數(shù)與IP地址的32位二進(jìn)制數(shù)對應(yīng),如果某位是網(wǎng)絡(luò)地址,則子網(wǎng)掩碼為1,否則為0。例如A類IP地址,第一節(jié)為網(wǎng)絡(luò)地址,其余三節(jié)為主機(jī)地址,故掩碼為“11111111.00000000.00000000.00000000”
- A類IP地址對應(yīng)的子網(wǎng)掩碼:255.0.0.0,用CIDR表示為/8
- B類IP地址對應(yīng)的子網(wǎng)掩碼:255.255.0.0,用CIDR表示為/16
- C類IP地址對應(yīng)的子網(wǎng)掩碼:255.255.255.0,用CIDR表示為/24
-
自定義子網(wǎng)掩碼(用于劃分子網(wǎng)):將一個網(wǎng)絡(luò)劃分子網(wǎng)后,把原本的主機(jī)號位置的一部分給了子網(wǎng)號,余下的才是給了子網(wǎng)的主機(jī)號。其形式如下:
做子網(wǎng)劃分后的IP地址:網(wǎng)絡(luò)號+子網(wǎng)號+子網(wǎng)主機(jī)號
例如:192.168.1.100/25,其子網(wǎng)掩碼表示:255.255.255.128
意思就是將192.168.1.0這個網(wǎng)段的主機(jī)位的最高1位劃分為了子網(wǎng)。關(guān)于子網(wǎng)劃分這里不做闡述,具體可以參考網(wǎng)絡(luò)上的其他資源。
端口號
我們可以把IP地址比作收件地址,而端口號類比作收件人。所謂的端口就是通過IP地址查找到特定的服務(wù)器上之后,服務(wù)器上有很多的應(yīng)用程序端口,而端口號是指將每個端口進(jìn)行了編號。
查詢端口號命令
基本格式:netstat [選項]
選項:
- -a:查看所有連接和監(jiān)聽端口
- -n:顯示IP地址和端口號,不顯示域名和服務(wù)名
[root@dad panjianqiao]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN #監(jiān)聽
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 192.168.172.146:34914 85.12.30.226:443 ESTABLISHED #存在鏈接
tcp 0 0 192.168.172.146:57976 52.26.43.164:443 ESTABLISHED
tcp 0 0 192.168.172.146:40268 104.27.190.157:443 FIN_WAIT2
tcp 0 0 192.168.172.146:34908 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:54992 39.156.66.14:443 ESTABLISHED
tcp 0 0 192.168.172.146:40168 117.18.237.29:80 ESTABLISHED
tcp 0 0 192.168.172.146:34816 85.12.30.226:443 TIME_WAIT #超時
tcp 0 0 192.168.172.146:56874 203.208.50.95:443 ESTABLISHED
tcp 0 0 192.168.172.146:47874 52.84.44.53:443 ESTABLISHED
tcp 0 0 192.168.172.146:34842 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:46602 23.49.60.160:80 ESTABLISHED
tcp 0 0 192.168.172.146:34912 85.12.30.226:443 TIME_WAIT
tcp 0 0 192.168.172.146:52922 202.202.1.140:80 TIME_WAIT
tcp 0 0 192.168.172.146:34836 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:38628 34.211.94.5:443 ESTABLISHED
tcp 0 0 192.168.172.146:40258 104.27.190.157:443 ESTABLISHED
tcp 0 0 192.168.172.146:34890 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:55468 203.208.39.247:80 ESTABLISHED
tcp 0 0 192.168.172.146:49432 104.19.197.151:443 ESTABLISHED
tcp 0 0 192.168.172.146:47918 52.222.223.94:443 ESTABLISHED
tcp 0 0 192.168.172.146:35766 52.222.223.19:443 ESTABLISHED
tcp 0 0 192.168.172.146:55010 39.156.66.14:443 ESTABLISHED
tcp 0 0 192.168.172.146:34844 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:34904 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:49166 221.180.224.32:443 TIME_WAIT
tcp 0 0 192.168.172.146:39628 117.78.24.34:80 ESTABLISHED
tcp 0 0 192.168.172.146:56870 203.208.50.95:443 TIME_WAIT
tcp 0 0 192.168.172.146:34910 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:34834 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:34852 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:34894 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:55402 203.208.39.247:80 ESTABLISHED
tcp 0 0 192.168.172.146:52924 202.202.1.140:80 TIME_WAIT
tcp 0 0 192.168.172.146:55434 203.208.39.247:80 ESTABLISHED
tcp 0 0 192.168.172.146:34854 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:40206 117.18.237.29:80 ESTABLISHED
tcp 0 0 192.168.172.146:38382 203.208.40.96:443 ESTABLISHED
tcp 0 0 192.168.172.146:34916 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:58028 52.26.43.164:443 ESTABLISHED
tcp 0 0 192.168.172.146:52806 202.202.1.140:80 TIME_WAIT
tcp 0 0 192.168.172.146:52804 202.202.1.140:80 TIME_WAIT
tcp 0 0 192.168.172.146:49402 104.19.197.151:443 ESTABLISHED
tcp 0 0 192.168.172.146:56868 203.208.50.95:443 TIME_WAIT
tcp 0 0 192.168.172.146:56872 203.208.50.95:443 TIME_WAIT
tcp 0 0 192.168.172.146:55434 203.208.41.68:443 ESTABLISHED
tcp 0 0 192.168.172.146:34848 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:54980 39.156.66.14:443 ESTABLISHED
tcp 0 0 192.168.172.146:52808 202.202.1.140:80 TIME_WAIT
tcp 0 0 192.168.172.146:52920 202.202.1.140:80 TIME_WAIT
tcp 0 0 192.168.172.146:55432 203.208.39.247:80 ESTABLISHED
tcp 0 0 192.168.172.146:34832 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:34906 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:34824 85.12.30.226:443 ESTABLISHED
tcp 0 0 192.168.172.146:42554 203.208.41.78:443 ESTABLISHED
tcp 0 0 192.168.172.146:43944 54.186.208.3:443 ESTABLISHED
tcp 0 0 192.168.172.146:57072 151.139.128.14:80 ESTABLISHED
tcp6 0 0 :::111 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
udp 0 0 192.168.122.1:53 0.0.0.0:* #UDP不存在監(jiān)聽
udp 0 0 0.0.0.0:67 0.0.0.0:*
udp 0 0 0.0.0.0:68 0.0.0.0:*
udp 0 0 0.0.0.0:111 0.0.0.0:*
udp 0 0 0.0.0.0:5353 0.0.0.0:*
udp 0 0 192.168.172.146:44354 192.168.172.2:53 ESTABLISHED
udp 0 0 0.0.0.0:880 0.0.0.0:*
udp 0 0 0.0.0.0:43379 0.0.0.0:*
udp6 0 0 :::111 :::*
udp6 0 0 :::880 :::*
raw6 0 0 :::58 :::* 7
常見端口號
FTP:20 21
SSH:22
telnet(不建議使用):23
DNS:53
http:80
SMTP(簡單郵件傳輸協(xié)議):25
POP3(郵局協(xié)議3代):110
DNS
DNS(Domain Name System,域名系統(tǒng),又叫做名稱解析)是把域名指向互聯(lián)網(wǎng)IP地址,人們可以通過域名直接訪問到相應(yīng)的IP地址,例如大連海事大學(xué)的域名為www.dlmu.edu.cn,IP地址為202.118.86.88,我們可以直接通過域名訪問網(wǎng)站,而不需要通過記憶IP地址。
hosts文件
hosts文件將IP和域名關(guān)聯(lián)的文件,例如我在我的筆記本電腦上使用VMware安裝兩臺CentOS虛擬機(jī),一個命名為dad一個命名為son,修改hosts文件使得兩臺虛擬機(jī)可以相互訪問,具體操作如下:
#在第一臺centos虛擬機(jī)下的終端中:
[root@dad panjianqiao]# hostnamectl set-hostname dad #修改主機(jī)名名稱為dad,此命令立即永久生效
[root@dad panjianqiao]# hostname #查看主機(jī)名稱
dad
[root@dad panjianqiao]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.172.146 netmask 255.255.255.0 broadcast 192.168.172.255
#上一行行為dad主機(jī)的IP地址,子網(wǎng)掩碼地址,廣播地址
inet6 fe80::b151:66fa:86a8:77d4 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:5a:b8:48 txqueuelen 1000 (Ethernet)
RX packets 91689 bytes 128904041 (122.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 30004 bytes 2099851 (2.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 801 bytes 72812 (71.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 801 bytes 72812 (71.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:31:2d:b6 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#在第二臺的虛擬機(jī)中執(zhí)行相同的操作,修改主機(jī)名為son,具體操作讀者可以自行完成
#修改hosts文件
[root@dad panjianqiao]# cat /etc/hosts #查看hosts文件
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@dad panjianqiao]# vim /etc/hosts #編輯文件,在hosts文件加入主機(jī)名(也可是域名)和IP地址關(guān)聯(lián)字段
#以下為添加好的文件內(nèi)容,具體vim操作可以查閱相關(guān)資料
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.172.146 dad
192.168.172.145 son
至此,hosts文件修改完畢,使用ping命令測試兩臺虛擬機(jī)是否可以通信
#測試dad
[root@dad panjianqiao]# ping son
PING son (192.168.172.145) 56(84) bytes of data.
64 bytes from son (192.168.172.145): icmp_seq=1 ttl=64 time=0.549 ms
64 bytes from son (192.168.172.145): icmp_seq=2 ttl=64 time=0.661 ms
64 bytes from son (192.168.172.145): icmp_seq=3 ttl=64 time=0.709 ms
64 bytes from son (192.168.172.145): icmp_seq=4 ttl=64 time=0.609 ms
64 bytes from son (192.168.172.145): icmp_seq=5 ttl=64 time=0.636 ms
64 bytes from son (192.168.172.145): icmp_seq=6 ttl=64 time=0.649 ms
64 bytes from son (192.168.172.145): icmp_seq=7 ttl=64 time=0.783 ms
64 bytes from son (192.168.172.145): icmp_seq=8 ttl=64 time=0.911 ms
^Z
[3]+ Stopped ping son
#使用control和z退出ping操作
#測試son
[root@son panjianqiao]# ping dad
PING dad (192.168.172.146) 56(84) bytes of data.
64 bytes from dad (192.168.172.146): icmp_seq=1 ttl=64 time=0.582 ms
64 bytes from dad (192.168.172.146): icmp_seq=2 ttl=64 time=0.831 ms
64 bytes from dad (192.168.172.146): icmp_seq=3 ttl=64 time=0.854 ms
64 bytes from dad (192.168.172.146): icmp_seq=4 ttl=64 time=0.926 ms
64 bytes from dad (192.168.172.146): icmp_seq=5 ttl=64 time=1.03 ms
64 bytes from dad (192.168.172.146): icmp_seq=6 ttl=64 time=0.963 ms
64 bytes from dad (192.168.172.146): icmp_seq=7 ttl=64 time=0.733 ms
64 bytes from dad (192.168.172.146): icmp_seq=8 ttl=64 time=0.929 ms
兩臺虛擬機(jī)可以成功通信!
從hosts文件到DNS
假如我們把所有域名和IP地址都寫入到hosts文件中似乎可以解決通過域名訪問,但是由于所有的IP地址過于龐大,而且hosts文件只針對當(dāng)前主機(jī)文件有效,所以需要DNS服務(wù)對所有域名進(jìn)行解析。
域名
全球域名都有一個管理機(jī)構(gòu)ICANN(Internet Corporation for Assigned Names and Numbers),總部在加州。但是全球的域名數(shù)量眾多,ICANN不會自己去管理所有的域名,而是將域名托管,該域名的所有事項都由托管商負(fù)責(zé),ICANN 只與托管商聯(lián)系。
ICANN的一項主要工作是規(guī)定頂級域名(top level domain,簡寫為 TLD),TLD可以分為一般頂級域名(gTLD),例如.com、.net、.edu、.org等共有700多個,和國別頂級域名(ccTLD),例如.cn、.hk等共有300多個。
由于 ICANN 管理著所有的頂級域名,所以它是最高一級的域名節(jié)點,被稱為根域名(root domain)。在有些場合,www.example.com被寫成www.example.com.,即最后還會多出一個點。這個點就是根域名。理論上,所有域名查詢都必須先查詢根域名,因為只有根域名才能告訴你,某個頂級域名由哪臺服務(wù)器管理。事實上也確實如此,ICANN 維護(hù)著一張列表,里面記載著頂級域名和對應(yīng)的托管商。
域名結(jié)構(gòu)
- 根域名
- 頂級域
- 一般頂級域
- 國別頂級域
- 二級域
- 主機(jī)名
網(wǎng)關(guān)

路由器和交換機(jī)的作用
- 交換機(jī)是不識別IP只能識別MAC地址的局域網(wǎng)內(nèi)連接的設(shè)備
- 路由器是可以在不同局域網(wǎng)之間傳輸數(shù)據(jù)的設(shè)備,路由器可以看作一種網(wǎng)關(guān)
- 網(wǎng)關(guān)可以是一臺路由器,也可以是一臺具有路由功能的服務(wù)器
網(wǎng)關(guān)的作用
- 不同的網(wǎng)絡(luò)之間需要網(wǎng)關(guān)才能進(jìn)行數(shù)據(jù)交換
- 將私有IP地址轉(zhuǎn)換為公網(wǎng)的IP地址