TCP/IP網絡基礎

1、TCP/IP概述;

TCP/IP實際上並不是一個協議,而是一組協議,它包括IP、TCP、UDP、ICMP、ARP等;

1.1 什麼是IP、ARP、ICMP、UDP;

IP (Internet Protocol),網際協議;IP是TCP/IP 的最底層,高層協議都要轉化爲IP包,IP包含了源地址和目的地址,路由決策也發生在IP層;

ARP (Address Resolution Protocol) ,地址解析協方,把IP地址轉換爲硬件物理地址,比如我們所用的網卡的物理地址,類似aa:bb:cc:dd:ee:ff。

ARP Short for Address Resolution Protocol, a network layer protocol used to convert an IP address into a physical address (called a DLC address), such as an Ethernet address. A host wishing to obtain a physical address broadcasts an ARP request onto the TCP/IP network. The host on the network that has the IP address in the request then replies with its physical hardware address.

There is also Reverse ARP (RARP) which can be used by a host to discover its IP address. In this case, the host broadcasts its physical address and a RARP server replies with the host's IP address.

ICMP (Internet Control Message Protocol),網際報文協議;它包括了數據包的錯誤、控制等相關信息。比如ping 命令就是利用ICMP來測試一個網絡的連接情況的工具;

Short for Internet Control Message Protocol, an extension to the Internet Protocol (IP) defined by RFC 792. ICMP supports packets containing error, control, and informational messages. The PING command, for example, uses ICMP to test an Internet connection

TCP (Transmission Control Protocol),傳輸控制協議。TCP運行在IP之上,是基於數據流連接和麪向的協議,應用程序把數據要經過TCP/IP的分割成若干包,這樣數據就以字節流發送和接收,到達目的地後,TCP/IP 再按順序進行組裝。TCP/IP 要保證機器與機器之間的連接的可靠性,還要有糾錯。TCP是否被選擇,取決於應用程序或服務;

TCP is one of the main protocols in TCP/IP networks. Whereas the IP protocol deals only with packets, TCP enables two hosts to establish a connection and exchange streams of data. TCP guarantees delivery of data and also guarantees that packets will be delivered in the same order in which they were sent.

UDP (User Datagram Protocol) ,用戶數據報協議 ,象TCP一樣運行在IP之上,是基於數據報或分組的協議,UDP/IP 可以直接發送和接收數據報文,而不必做驗證,這一點與TCP/IP 不同。TCP是否被選擇,取決於應用程序或服務;

Abbreviated UDP, a connectionless protocol that, like TCP, runs on top of IP networks. Unlike TCP/IP, UDP/IP provides very few error recovery services, offering instead a direct way to send and receive datagrams over an IP network. It's used primarily for broadcasting messages over a network.

1.2 TCP/IP 網絡模型;

TCP/IP 的網絡模型是如圖所示;

 2、IP地址、網絡類型、網絡切割;

TCP/IP 網絡的每臺計算機都至少有一個(一個計算機有多個網卡是存在的)合法的IP地址,IP地址把此計算機和網絡的其它計算機區別開來。由於IP地址分爲兩部份,一部份代表網絡,另一部份代表主機。如果想把一個網絡和另一個網絡區分開來,就涉及到網絡切割。

2.1 IP 地址概說;

IP地址是標識主機在網絡中的位置,象是一個門牌號一樣。所有IP都經過 Internet Assigned Numbers Authority (IANA)分配。IP地址是由四個字節組成,格式 爲A:B:C:D,比如 192.168.1.1 。LinuxSir.Org 的IP是多少?ping LinuxSir.Org 就知道了。

IP都經過 Internet Assigned Numbers Authority (IANA)分配。一般的情況下,IANA只和各國政府機構、學會、ISP、或IDC公司交涉。咱們用的IP地址,都是IDC或ISP提供的。比如LinuxSir.Org 的地址是由網通提供的。我用的ADSL,是鐵通提供的。

IP 地址是由四個字節組成,格式 A.B.C.D,每個字節又是由8位二進制數字組成,也就是這樣的格式 xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx 。在A:B:C:D中,前1到3位,可以用來識別網絡,其餘部份就用來表示網絡上的主機。

         A       .          B       .        C        .       D   
	xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx

地址中哪幾位用來識別網絡,哪幾位用來識別主機,是通過網絡掩碼來實現的。網絡掩碼也是一個四字節的數,如果換算成二進制的數字,對應網絡部份爲1,而主機部份爲0。

比如掩碼爲 255.255.255.0 ,換算成二進制就是 11111111.11111111.11111111.11111111.00000000 。

      A .        B .  C  . D
  255  .      255 . 255 .     0 
11111111.11111111.11111111.00000000
|-----網絡部份----|主機部份|

這表示的意思是網絡中的所有主機的IP地址的前三位必須是相同的,也就是A.B.C是相同的,最後一位是主機位,主機位的不同,就把網絡中的計算機區分開來。比如 192.168.1.1 和192.168.1.2 是不同的主機。

在 255.255.255.0 這個網絡中,從理論上來說,應該有256臺主機,但事實上卻不是這樣。

網絡地址和廣播地址:

每個網絡都有一個網絡地址和廣播地址,網絡地址是把此網區別於彼網的標識,主機部份爲0,(二進制),而廣播地址的主機部份全爲1。

比如192.168.1.0/24的網絡。按理論來說,IP地址應該從192.168.1.0到192.168.1.255 ,網絡最多有主機數應該有256臺,但因爲網絡地址佔用了192.168.1.0,廣播地址佔用了 192.168.1.255 ,所以在192.168.1.0/24的網絡中,最多隻能容納254臺機器。

Address:   192.168.1.0           11000000.10101000.00000001 .00000000
Netmask:   255.255.255.0 = 24    11111111.11111111.11111111 .00000000
Wildcard:  0.0.0.255             00000000.00000000.00000000 .11111111
=>
Network:   192.168.1.0/24        11000000.10101000.00000001 .00000000 (Class C)
Broadcast: 192.168.1.255         11000000.10101000.00000001 .11111111
HostMin:   192.168.1.1           11000000.10101000.00000001 .00000001
HostMax:   192.168.1.254         11000000.10101000.00000001 .11111110
Hosts/Net: 254                   (Private Internet RFC 1918)

2.2 網絡分類;

IANA把網絡進行分類,分類如下:

2.21 A類網絡:

A類網絡部份爲8位(二進制),主機部份爲24位(二進制)。

         A       .           B     .             C    .     D
	xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
	|>網絡部份<|---->主機部份<--------------|

地址的第一個字節,範圍從1到127 ;比如 IP地址 126.1.12.0 就歸屬於A類網絡的地址。

2.22 B類網絡:

B類網絡部份爲16位(二進制),主機部份爲16位(二進制)。

         A       .         B        .        C        .   D    
	xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
	|---->網絡部份<-----|-----主機部份<-----|

地址的第一個字節,範圍是128-191 ;比如 IP地址 129.13.1.0 就歸屬於B類網絡。

2.23 C類網絡:

C類網絡部份爲24位(二進制),主機部份爲8位(二進制)。

         A       .         B        .        C        .   D    
	xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx
	|----------網絡部份---------| -主機部份 -|

地址的第一個字節,範圍是192-223;比如 IP地址193.1.21.0 就歸屬於C類網絡。

爲了簡單一點,我們用表格列出:

IP地址的第一個字節       歸屬網絡

1-127					 A類
128-191				 B類
192-223				 C類

2.24 保留地址;

爲了保證一些網絡能有永遠不能接上Internet 上(或通過NAT才能接到Internet),這些地址用於私有網絡,比如我們所用的本地網地址 192.168.1.0/24網絡就是。下面的一些網絡地址是私有的,只能通過NAT轉換爲公網地址才能訪問Internet 。

地址範圍  						網絡類

10.0.0.0-10.255.255.255  	 			A類
172.16.0.0-172.31.255.255				B類
192.168.0.0-192.168.255.255 				C類
127.0.0.1-127.255.255.255				迴環地址

其中回地址表示數據包的發送和接收都在同一臺主機,如果想讓一個程序只能在本機上運行,就用這個地址。迴環地址一般是用127.0.0.1 。在Linux中,用ifconfig lo就能看到了。

2.3 網絡切割;

大型網絡可以劃分爲幾個小的網絡,這些小的網絡被稱爲子網。劃分大型網絡地址塊爲一些小的子網,可以從主機部份進行切分,這樣就能形成一個一個的子網。子網掩碼可以用來構建超網,例如:192.168.1.2 掩碼: 255.255.254.0,也可寫成192.168.0.0/23,23代表子網掩碼中連續“1”的個數。還可以進行子網劃分,例如: 192.168.1.130 掩碼: 255.255.255.240,也可寫成192.168.1.130/28網絡,即:網絡ID爲192.168.1.128,主機ID爲2。

切割網絡還要知道十進制到二進制的相互換算,這是比較麻煩的。用筆來算是有點難爲人。不過我們可以用一個腳本工具來算。

網絡切割腳本下載 ,請點擊: 網絡切割計算器

下載後要解壓;

#tar zxvf ipcalclinuxsir.pl.tar.gz
# chmod 755 ipcalc.pl
# ./ipcalc.pl

可以指定單個IP和掩碼來判斷網絡,比如:

[root@localhost ~]# ./ipcalc.pl 192.168.1.4/255.255.255.0

Address:   192.168.1.4           11000000.10101000.00000001 .00000100
Netmask:   255.255.255.0 = 24    11111111.11111111.11111111 .00000000
Wildcard:  0.0.0.255             00000000.00000000.00000000 .11111111
=>
Network:   192.168.1.0/24        11000000.10101000.00000001 .00000000 (Class C)
Broadcast: 192.168.1.255         11000000.10101000.00000001 .11111111
HostMin:   192.168.1.1           11000000.10101000.00000001 .00000001
HostMax:   192.168.1.254         11000000.10101000.00000001 .11111110
Hosts/Net: 254                   (Private Internet RFC 1918)

值得注意的是:同一個IP地址,由於掩碼不同,此IP地址可能屬於不同的網絡。所以掩碼的設置對於主機來說十分重要。

IP地址:192.168.1.2 掩碼: 255.255.254.0,屬於192.168.0.0/23網絡;

Address:   192.168.1.2           11000000.10101000.0000000 1.00000010
Netmask:   255.255.254.0 = 23    11111111.11111111.1111111 0.00000000
Wildcard:  0.0.1.255             00000000.00000000.0000000 1.11111111
=>
Network:   192.168.0.0/23        11000000.10101000.0000000 0.00000000 (Class C)
Broadcast: 192.168.1.255         11000000.10101000.0000000 1.11111111
HostMin:   192.168.0.1           11000000.10101000.0000000 0.00000001
HostMax:   192.168.1.254         11000000.10101000.0000000 1.11111110
Hosts/Net: 510                   (Private Internet RFC 1918)

IP地址:192.168.1.2 掩碼: 255.255.255.0,屬於192.168.1.0/24網絡;

Address:   192.168.1.2           11000000.10101000.00000001 .00000010
Netmask:   255.255.255.0 = 24    11111111.11111111.11111111 .00000000
Wildcard:  0.0.0.255             00000000.00000000.00000000 .11111111
=>
Network:   192.168.1.0/24        11000000.10101000.00000001 .00000000 (Class C)
Broadcast: 192.168.1.255         11000000.10101000.00000001 .11111111
HostMin:   192.168.1.1           11000000.10101000.00000001 .00000001
HostMax:   192.168.1.254         11000000.10101000.00000001 .11111110
Hosts/Net: 254                   (Private Internet RFC 1918)

3、 路由和網關;

3.1 路由,此網和彼網溝通的紐帶

在同一個網段之間(網絡ID相同),主機可以互相通訊,比如同一網段的主機相互溝通不需要路由,比如 192.168.1.2和192.168.1.3之間的溝通就不需要路由。如果兩個不同的網絡(網絡ID不同)需要通訊,比如 192.168.1.0/24網絡的主機和192.168.2.0/24內的主機 相互溝通,那麼需要路由器(或者網關)來指明數據包的“傳輸路徑”來實現這一目的。

常用的做法是用一臺多穴主機來作網關(多個網絡接口,分別連着外網與內網),使得內網計算機通過網關訪問Internet。在linux裏面一般用 iptables做NAT(網絡地址轉換)來實現網關功能,如果充當網關的機器有一個固定IP,我們可以使用SNAT(源網絡地址轉換);如果充當網關的機器是撥號上網,也就是IP不固定,那麼一般我們用MASQUERADE,它可以動態的識別網關的地址。當然,固定ip也是可以用MASQUERADE 的,但是系統資源要耗費大一些。

比如LinuxSir.Org 服務器託管在IDC機房中,機房要爲我們提供IP地址、掩碼、網關。

在Linux 中,查看本地機的路由是通過route命令來實現的,比如: 

[root@localhost ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0

此主機的默認路由就是192.168.1.1 ,至於更多的配置路由的細節,我們將在以後的章節加以討論。

網關;

4 、服務和端口;

在一臺計算機運行的操作系統,如果這臺計算機是連接在網絡中的,它一定得有一個IP地址。在網絡上使用 ip 來標示一個點, 也可以理解爲標示一臺主機。如果您的計算機分配了兩個ip 比如你啓用了兩塊網卡, 在網絡上就認爲這是不同的兩個主機。在這臺計算機上可能運行着很多的服務。

端口則是用來標示特定主機的特定服務,比如linuxsir的 www 服務要用 ip:80 來標示。

比如 LinuxSir.Org 的服務器上有FTP、SSH、WWW、IRC等服務,這些服務都用的是一個IP地址。爲了能把這些服務運行起來,我們指定了WWW服務器用的是80端口。FTP服務器用的是 21端口等。這塊好象不難理解。

查看Linux服務和端口的字典文件位於 /etc/services ,它 是一個字典文件, 並不用來分配端口。其內容有如下類似的:

ftp 20/tcp 注:傳輸命令
ftp 21/tcp 注:傳輸數據
ssh 22/tcp
telnet 23/tcp

有些服務一般是採用默認端口,比如 ftp服務器默認端口是21,ssh服務器端認端口是22,telnet默認端口是23 。當然您可以改變服務的默認端口,以增強系統的安全性;我們在以後的教程中,會涉及到此方面的內容。

5、套接字接口;


本文轉自:http://blog.csdn.net/fengyv/article/details/967850

發佈了28 篇原創文章 · 獲贊 40 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章