1.ARP/RARP協(xié)議
地址解析協(xié)議,即ARP(Address Resolution Protocol),是根據(jù)IP地址獲取物理地址的一個TCP/IP協(xié)議。主機發(fā)送信息時將包含目標(biāo)IP地址的ARP請求廣播到網(wǎng)絡(luò)上的所有主機,并接收返回消息盛末,以此確定目標(biāo)的物理地址;收到返回消息后將該IP地址和物理地址存入本機ARP緩存中并保留一定時間否淤,下次請求時直接查詢ARP緩存以節(jié)約資源悄但。地址解析協(xié)議是建立在網(wǎng)絡(luò)中各個主機互相信任的基礎(chǔ)上的,網(wǎng)絡(luò)上的主機可以自主發(fā)送ARP應(yīng)答消息石抡,其他主機收到應(yīng)答報文時不會檢測該報文的真實性就會將其記入本機ARP緩存檐嚣;由此攻擊者就可以向某一主機發(fā)送偽ARP應(yīng)答報文,使其發(fā)送的信息無法到達預(yù)期的主機或到達錯誤的主機啰扛,這就構(gòu)成了一個ARP欺騙嚎京。ARP命令可用于查詢本機ARP緩存中IP地址和MAC地址的對應(yīng)關(guān)系嗡贺、添加或刪除靜態(tài)對應(yīng)關(guān)系等。
ARP工作流程舉例:
主機A的IP地址為192.168.1.1鞍帝,MAC地址為0A-11-22-33-44-01诫睬;
主機B的IP地址為192.168.1.2,MAC地址為0A-11-22-33-44-02帕涌;
當(dāng)主機A要與主機B通信時摄凡,地址解析協(xié)議可以將主機B的IP地址(192.168.1.2)解析成主機B的MAC地址,以下為工作流程:
◎韭(1)根據(jù)主機A上的路由表內(nèi)容亲澡,IP確定用于訪問主機B的轉(zhuǎn)發(fā)IP地址是192.168.1.2。然后A主機在自己的本地ARP緩存中檢查主機B的匹配MAC地址纫版。
」瓤邸(2)如果主機A在ARP緩存中沒有找到映射,它將詢問192.168.1.2的硬件地址捎琐,從而將ARP請求幀廣播到本地網(wǎng)絡(luò)上的所有主機。源主機A的IP地址和MAC地址都包括在ARP請求中裹匙。本地網(wǎng)絡(luò)上的每臺主機都接收到ARP請求并且檢查是否與自己的IP地址匹配瑞凑。如果主機發(fā)現(xiàn)請求的IP地址與自己的IP地址不匹配,它將丟棄ARP請求概页。
(3)主機B確定ARP請求中的IP地址與自己的IP地址匹配,則將主機A的IP地址和MAC地址映射添加到本地ARP緩存中更胖。
≡で选(4)主機B將包含其MAC地址的ARP回復(fù)消息直接發(fā)送回主機A。
∠罟怼(5)當(dāng)主機A收到從主機B發(fā)來的ARP回復(fù)消息時哑梳,會用主機B的IP和MAC地址映射更新ARP緩存。本機緩存是有生存期的绘盟,生存期結(jié)束后鸠真,將再次重復(fù)上面的過程。主機B的MAC地址一旦確定龄毡,主機A就能向主機B發(fā)送IP通信了吠卷。
逆地址解析協(xié)議,即RARP沦零,功能和ARP協(xié)議相對祭隔,其將局域網(wǎng)中某個主機的物理地址轉(zhuǎn)換為IP地址,比如局域網(wǎng)中有一臺主機只知道物理地址而不知道IP地址路操,那么可以通過RARP協(xié)議發(fā)出征求自身IP地址的廣播請求疾渴,然后由RARP服務(wù)器負責(zé)回答千贯。
RARP協(xié)議工作流程:
(1)給主機發(fā)送一個本地的RARP廣播,在此廣播包中程奠,聲明自己的MAC地址并且請求任何收到此請求的RARP服務(wù)器分配一個IP地址丈牢;
(2)本地網(wǎng)段上的RARP服務(wù)器收到此請求后,檢查其RARP列表瞄沙,查找該MAC地址對應(yīng)的IP地址己沛;
(3)如果存在,RARP服務(wù)器就給源主機發(fā)送一個響應(yīng)數(shù)據(jù)包并將此IP地址提供給對方主機使用距境;
∩昴帷(4)如果不存在,RARP服務(wù)器對此不做任何的響應(yīng)垫桂;
∈δ弧(5)源主機收到從RARP服務(wù)器的響應(yīng)信息,就利用得到的IP地址進行通訊诬滩;如果一直沒有收到RARP服務(wù)器的響應(yīng)信息霹粥,表示初始化失敗。
2.路由選擇協(xié)議
常見的路由選擇協(xié)議有:RIP協(xié)議疼鸟、OSPF協(xié)議后控。
RIP協(xié)議 :底層是貝爾曼福特算法,它選擇路由的度量標(biāo)準(zhǔn)(metric)是跳數(shù)空镜,最大跳數(shù)是15跳浩淘,如果大于15跳,它就會丟棄數(shù)據(jù)包吴攒。
OSPF協(xié)議 :Open Shortest Path First開放式最短路徑優(yōu)先张抄,底層是迪杰斯特拉算法,是鏈路狀態(tài)路由選擇協(xié)議洼怔,它選擇路由的度量標(biāo)準(zhǔn)是帶寬署惯,延遲。
OSPF通過路由器之間通告網(wǎng)絡(luò)接口的狀態(tài)來建立鏈路狀態(tài)數(shù)據(jù)庫镣隶,生成最短路徑樹泽台,每個OSPF路由器使用這些最短路徑構(gòu)造路由表。
附:-
OSPF協(xié)議和RIP協(xié)議的比較:
1)向本自治系統(tǒng)中所有路由器發(fā)送信息矾缓,OSPF是使用的方法是洪泛式怀酷,這樣,最終整個區(qū)域中所有的路由器都得到了這個信息的一個副本嗜闻。而RIP協(xié)議僅僅向自己相鄰的幾個路由器發(fā)送信息蜕依。
2)發(fā)送的信息就是與本路由器相鄰的所有路由器的鏈路狀態(tài)。鏈路狀態(tài)就是說明本路由器都和哪些路由器相鄰,以及該鏈路的“度量”样眠。OSPF把費用友瘤、距離、時延檐束、帶寬等等表示為度量辫秧。而RIP協(xié)議發(fā)送的信息是:“到所有網(wǎng)絡(luò)的距離和下一跳路由器”
3)OSPF只有當(dāng)鏈路狀態(tài)發(fā)生變化時,路由器才用洪泛式向所有路由器發(fā)送信息被丧,而RIP不管網(wǎng)絡(luò)拓撲有沒有發(fā)生變化盟戏,路由器之間都定期交換路由器表的信息。
3.TCP/IP協(xié)議
TCP/IP協(xié)議是Internet最基本的協(xié)議甥桂、Internet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ)柿究,由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成。通俗而言:TCP負責(zé)發(fā)現(xiàn)傳輸?shù)膯栴}黄选,一有問題就發(fā)出信號蝇摸,要求重新傳輸,直到所有數(shù)據(jù)安全正確地傳輸?shù)侥康牡匕煜荨6鳬P是給因特網(wǎng)的每一臺聯(lián)網(wǎng)設(shè)備規(guī)定一個地址貌夕。
IP層接收由更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)備驅(qū)動程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層---TCP或UDP層民镜;相反啡专,IP層也把從TCP或UDP層接收來的數(shù)據(jù)包傳送到更低層。IP數(shù)據(jù)包是不可靠的殃恒,因為IP并沒有做任何事情來確認數(shù)據(jù)包是否按順序發(fā)送的或者有沒有被破壞,IP數(shù)據(jù)包中含有發(fā)送它的主機的地址(源地址)和接收它的主機的地址(目的地址)辱揭。
TCP是面向連接的通信協(xié)議离唐,通過三次握手建立連接,通訊完成時要拆除連接问窃,由于TCP是面向連接的所以只能用于端到端的通訊亥鬓。TCP提供的是一種可靠的數(shù)據(jù)流服務(wù),采用“帶重傳的肯定確認”技術(shù)來實現(xiàn)傳輸?shù)目煽啃杂虮印CP還采用一種稱為“滑動窗口”的方式進行流量控制嵌戈,所謂窗口實際表示接收能力,用以限制發(fā)送方的發(fā)送速度听皿。
TCP報文首部格式:
TCP協(xié)議的三次握手和四次揮手:
ACK:"acknowledge"確認標(biāo)志"熟呛;FIN:"Finally"結(jié)束標(biāo)志。
TCP連接建立過程:首先Client端發(fā)送連接請求報文尉姨,Server段接受連接后回復(fù)ACK報文庵朝,并為這次連接分配資源。Client端接收到ACK報文后也向Server段發(fā)生ACK報文,并分配資源九府,這樣TCP連接就建立了椎瘟。
TCP連接斷開過程:假設(shè)Client端發(fā)起中斷連接請求侄旬,也就是發(fā)送FIN報文肺蔚。Server端接到FIN報文后,意思是說"我Client端沒有數(shù)據(jù)要發(fā)給你了"儡羔,但是如果你還有數(shù)據(jù)沒有發(fā)送完成宣羊,則不必急著關(guān)閉Socket,可以繼續(xù)發(fā)送數(shù)據(jù)笔链。所以你先發(fā)送ACK段只,"告訴Client端,你的請求我收到了鉴扫,但是我還沒準(zhǔn)備好赞枕,請繼續(xù)你等我的消息"。這個時候Client端就進入FIN_WAIT狀態(tài)坪创,繼續(xù)等待Server端的FIN報文炕婶。當(dāng)Server端確定數(shù)據(jù)已發(fā)送完成,則向Client端發(fā)送FIN報文莱预,"告訴Client端柠掂,好了,我這邊數(shù)據(jù)發(fā)完了依沮,準(zhǔn)備好關(guān)閉連接了"涯贞。Client端收到FIN報文后,"就知道可以關(guān)閉連接了危喉,但是他還是不相信網(wǎng)絡(luò)宋渔,怕Server端不知道要關(guān)閉,所以發(fā)送ACK后進入TIME_WAIT狀態(tài)辜限,如果Server端沒有收到ACK則可以重傳皇拣。“薄嫡,Server端收到ACK后氧急,"就知道可以斷開連接了"。Client端等待了2MSL后依然沒有收到回復(fù)毫深,則證明Server端已正常關(guān)閉吩坝,那好,我Client端也可以關(guān)閉連接了哑蔫。Ok钾恢,TCP連接就這樣關(guān)閉了手素!
使用TCP的協(xié)議:FTP(文件傳輸協(xié)議)、Telnet(遠程登錄協(xié)議)瘩蚪、SMTP(簡單郵件傳輸協(xié)議)泉懦、POP3(和SMTP相對,用于接收郵件)疹瘦、HTTP協(xié)議等崩哩。
4.UDP協(xié)議
UDP用戶數(shù)據(jù)報協(xié)議,是面向無連接的通訊協(xié)議言沐,UDP數(shù)據(jù)包括目的端口號和源端口號信息邓嘹,由于通訊不需要連接,所以可以實現(xiàn)廣播發(fā)送险胰。UDP通訊時不需要接收方確認汹押,屬于不可靠的傳輸,可能會出現(xiàn)丟包現(xiàn)象起便,實際應(yīng)用中要求程序員編程驗證棚贾。
UDP與TCP位于同一層,但它不管數(shù)據(jù)包的順序榆综、錯誤或重發(fā)妙痹。因此,UDP不被應(yīng)用于那些使用虛電路的面向連接的服務(wù)鼻疮,UDP主要用于那些面向查詢---應(yīng)答的服務(wù)怯伊,例如NFS。相對于FTP或Telnet判沟,這些服務(wù)需要交換的信息量較小耿芹。
每個UDP報文分UDP報頭和UDP數(shù)據(jù)區(qū)兩部分。報頭由四個16位長(2字節(jié))字段組成挪哄,分別說明該報文的源端口吧秕、目的端口、報文長度以及校驗值中燥。UDP報頭由4個域組成寇甸,其中每個域各占用2個字節(jié)塘偎,具體如下:
- 源端口號疗涉;
- 目標(biāo)端口號;
- 數(shù)據(jù)報長度吟秩;
- 校驗值咱扣。
使用UDP協(xié)議包括:TFTP(簡單文件傳輸協(xié)議)、SNMP(簡單網(wǎng)絡(luò)管理協(xié)議)涵防、DNS(域名解析協(xié)議)闹伪、NFS、BOOTP。
TCP 與 UDP 的區(qū)別:TCP是面向連接的偏瓤,可靠的字節(jié)流服務(wù)杀怠;UDP是面向無連接的,不可靠的數(shù)據(jù)報服務(wù)厅克。
參考文章:http://www.cnblogs.com/maybe2030/p/4781555.html#_label3