TCP/IP 概述
簡(jiǎn)介:本系列文章搔驼,主要對(duì)TCP/IP協(xié)議族進(jìn)行概述签赃,其實(shí)對(duì)于整個(gè)計(jì)算機(jī)網(wǎng)絡(luò)來說痪欲,TCP/IP只是屬于其中的一個(gè)或者兩個(gè)層級(jí)里面的內(nèi)容咬腋;
1.1 分層
網(wǎng)絡(luò)協(xié)議通常分不同的層次進(jìn)行開發(fā),每一層分別負(fù)責(zé)不同的通信功能向瓷。TCP/IP通常被認(rèn)為是一個(gè)四層的協(xié)議系統(tǒng)肠套,如下圖1-1所示。
1.1.1 各層簡(jiǎn)介
- 鏈路層猖任,又稱為數(shù)據(jù)鏈路層你稚,主要負(fù)責(zé)設(shè)備驅(qū)動(dòng)系統(tǒng)與計(jì)算機(jī)對(duì)應(yīng)的網(wǎng)絡(luò)接口;
- 網(wǎng)絡(luò)層朱躺,主要負(fù)責(zé)處理分組在計(jì)算機(jī)網(wǎng)絡(luò)中的活動(dòng)刁赖,代表為IP協(xié)議;
- 運(yùn)輸層长搀, 主要為兩臺(tái)主機(jī)的應(yīng)用程序宇弛,提供端到端的通信,包括 TCP 協(xié)議和UDP協(xié)議;
- 應(yīng)用層源请,負(fù)責(zé)處理特定的應(yīng)用程序細(xì)節(jié)涯肩,包括 FTP議 和 SMTP 協(xié)議
1.2 TCP/IP的分層
在TCP/IP協(xié)議族中,有很多協(xié)議巢钓,下圖1-2給出了主要協(xié)議:
TCP與UDP是兩個(gè)主要的運(yùn)輸層協(xié)議,它們都使用IP協(xié)議作為網(wǎng)絡(luò)層的協(xié)議疗垛;其中TCP提供可靠的運(yùn)輸層服務(wù)症汹,它具有超時(shí)重傳等特點(diǎn),而UDP協(xié)議贷腕,提供非可靠的運(yùn)輸層服務(wù)背镇。
關(guān)于兩者的詳細(xì)咬展,在以后的文章中體現(xiàn);
1.3 互聯(lián)網(wǎng)的地址(此處主要為IPV4)
互聯(lián)網(wǎng)的每個(gè)接口都必須有一個(gè)唯一的Internet
地址瞒斩,也成為IP地址破婆。其長(zhǎng)度為32bit
。IP地址具有五類不同的互聯(lián)網(wǎng)地址格式胸囱,如下圖所示:
類型 | 范圍 |
---|---|
A |
0.0.0.0 TO 127.255.255.255
|
B |
128.0.0.0 TO 191.255.255.255
|
C |
192.0.0.0 TO 223.255.255.255
|
D |
224.0.0.0 TO 239.255.255.255
|
E |
240.0.0.0 TO 247.255.255.255
|
此32為地址祷舀,被分成四個(gè)十進(jìn)制的數(shù),其中每一個(gè)整數(shù)代表為一個(gè)字節(jié),此種方法被稱為:點(diǎn)分十進(jìn)制表示法 (Dotted decimal notation)烹笔,故其各個(gè)IP地址的范圍為:
類型 | 范圍 |
---|---|
A |
0.0.0.0 TO 127.255.255.255
|
B |
128.0.0.0 TO 191.255.255.255
|
C |
192.0.0.0 TO 223.255.255.255
|
D |
224.0.0.0 TO 239.255.255.255
|
E |
240.0.0.0 TO 247.255.255.255
|
1.4 域名系統(tǒng)DNS
為了網(wǎng)站訪問的方便以及易記性裳扯,設(shè)計(jì)了一種IP與主機(jī)名之間映射信息的系統(tǒng),即DNS域名系統(tǒng)谤职,它是一個(gè)分布式的數(shù)據(jù)庫饰豺;任何應(yīng)用系統(tǒng)都可以調(diào)用一個(gè)標(biāo)準(zhǔn)的庫函數(shù)來查看給定民稱主機(jī)的IP地址,反之亦然允蜈;
1.5 分裝
當(dāng)應(yīng)用程序使用TCP傳送數(shù)據(jù)時(shí)冤吨,數(shù)據(jù)會(huì)被放入到協(xié)議棧中,然后逐層通過直到被當(dāng)作一串比特流送入網(wǎng)絡(luò)(數(shù)據(jù)鏈路層)饶套。其中漩蟆,每一層對(duì)接受的數(shù)據(jù)都要增加一些首部信息(有時(shí)也會(huì)增加尾部信息),進(jìn)行區(qū)分凤跑,該過程如下圖所示爆安。
在信息傳遞過程中,由于TCP仔引、UDP等都像IP傳送數(shù)據(jù)扔仓,因此IP會(huì)在IP首部中加入一個(gè)長(zhǎng)度為8bit的數(shù)值,稱作協(xié)議域咖耘。1代表ICMP協(xié)議翘簇,6代表TCP協(xié)議,17代表UDP協(xié)議儿倒;
類似的在應(yīng)用程序采用TCP或者UDP傳輸數(shù)據(jù)時(shí)版保,也會(huì)在TCP首部使用一個(gè)16bit的數(shù)值來表示不同的應(yīng)用程序,成為端口號(hào)夫否;比較常用的1--1023彻犁,80,3036等凰慈;
鏈路層在發(fā)送和接收IP汞幢、ARP和RARP數(shù)據(jù),同樣需要再以太網(wǎng)的幀首部加入某些形式的標(biāo)識(shí)微谓,已表明生成數(shù)據(jù)的網(wǎng)絡(luò)層協(xié)議森篷。為此输钩,以太網(wǎng)幀首部加入了一個(gè)16bit的幀類型域;
1.6 分用
當(dāng)目的主機(jī)收到一個(gè)以太網(wǎng)數(shù)據(jù)幀時(shí)仲智,數(shù)需要從協(xié)議棧中取出(有底向上升)买乃,同時(shí)去掉個(gè)協(xié)議層的加上的報(bào)文首部。每層協(xié)議盒都要去檢查報(bào)文首部的協(xié)議標(biāo)識(shí)钓辆,已確定接受數(shù)據(jù)的上層協(xié)議剪验,這個(gè)過程就是分用;
其圖示標(biāo)識(shí)方式如下:
1.7 客戶-服務(wù)器模型
大部分網(wǎng)絡(luò)應(yīng)用程序在編寫時(shí)都假設(shè)一段為客戶岩馍,另一端為服務(wù)器碉咆,其目的是為了讓服務(wù)器為客戶提供一些特定的服務(wù);
這種服務(wù)蛀恩,可以分為兩種:重復(fù)型和并發(fā)型疫铜;
重復(fù)型交互方式如下:
- 等待一個(gè)客戶的請(qǐng)求
- 處理客戶的請(qǐng)求
- 返回響應(yīng)給發(fā)送請(qǐng)求的客戶
- 返回第1步;
其主要問題在與第2步双谆,此時(shí)壳咕,其它請(qǐng)求無法被處理,只能夠等待顽馋;
而并發(fā)型服務(wù)器交互方式如下:
- 等待一個(gè)客戶的請(qǐng)求
- 啟動(dòng)一個(gè)新的服務(wù)器處理來自此客戶的請(qǐng)求谓厘,在此期間可能產(chǎn)生一個(gè)新的進(jìn)程、任務(wù)或者線程寸谜,并依賴底層操作系統(tǒng)的支持竟稳;且請(qǐng)求處理完畢后,終止新服務(wù)器熊痴;
- 返回第1步他爸;
并發(fā)型的主要優(yōu)點(diǎn)是,利用生產(chǎn)其他服務(wù)器來處理別的請(qǐng)求果善≌矬裕可以同時(shí)為多個(gè)用戶服務(wù);
一般來說巾陕,TCP服務(wù)器是并發(fā)的讨跟,UDP服務(wù)器是重復(fù)的;
1.8 端口號(hào)
在1.5中鄙煤,我們已經(jīng)直到晾匠,TCP/UDP采用16bit的端口號(hào)來識(shí)別應(yīng)用程序;
一般梯刚,F(xiàn)TP服務(wù)器的端口號(hào)為21混聊,Telnet服務(wù)器的端口號(hào)圍毆23...,大多數(shù)知名端口都分布在1--255之間,而256--1023通常被Unix系統(tǒng)占用句喜,以提供一些特定的服務(wù)。
因此沟于,大多數(shù)TCP/IP實(shí)現(xiàn)給臨時(shí)端口分配1024--5000之間的端口號(hào)咳胃,大于5000的端口號(hào)為其他服務(wù)器預(yù)留;
1.9 應(yīng)用編程接口
使用TCP/IP協(xié)議的應(yīng)用程序通常采用兩種應(yīng)用編程接口(API):socket 和 TLI旷太;
這些會(huì)在以后的學(xué)習(xí)中遇到展懈;