資料整理自網(wǎng)絡(luò)的各個地方
首先 我碰到了一個問題,一個數(shù)據(jù)包從我們的電腦上,經(jīng)過層層的交換機(jī)杀狡、路由器到達(dá)目標(biāo)服務(wù)器的過程中膳凝,數(shù)據(jù)包會有哪些改動,是如何一步步傳遞過去又是如何返回回來的休玩?
先需要了解一些基本的概念
網(wǎng)絡(luò)模型
OSI七層協(xié)議模型
OSI(Open System Interconnection)開放系統(tǒng)互連參考模型是國際標(biāo)準(zhǔn)化組織(ISO)制定的一個用于計算機(jī)或通信系統(tǒng)間互聯(lián)的標(biāo)準(zhǔn)體系著淆。
應(yīng)用層
DHCP · DNS · FTP · Gopher ·GTP · HTTP · IMAP4 · IRC · NNTP · NTP · POP3 · RPC · RTCP · RTP ·RTSP · SIP · SMTP ·SNMP · SSH · SDP · SOAP .STUN. SSDP · TELNET · XMPP
表示層
HTTP/HTML · FTP · Telnet · ASN.1(具有表示層功能)
會話層
ADSP ·ASP ·H.245·ISO-SP ·iSNS ·NetBIOS ·PAP ·RPC·
RTCP ·SMPP ·SCP ·SSH ·ZIP ·SDP(具有會話層功能)
傳輸層
TCP · UDP · TLS · DCCP · SCTP ·RSVP · PPTP
網(wǎng)絡(luò)層
IP (IPv4 · IPv6) · ICMP · ICMPv6 · IGMP ·IS-IS · IPsec · BGP · RIP · OSPF ·ARP · RARP
數(shù)據(jù)鏈路層
Wi-Fi(IEEE 802.11) · WiMAX(IEEE 802.16) ·ATM · DTM · 令牌環(huán) · 以太網(wǎng)路 ·
FDDI · 幀中繼 · GPRS · EVDO · HSPA · HDLC · PPP · L2TP · ISDN ·STP
物理層
以太網(wǎng)路卡 · 調(diào)制解調(diào)器 · 電力線通信(PLC) · SONET/SDH(光同步數(shù)字傳輸網(wǎng)) ·
G.709(光傳輸網(wǎng)絡(luò)) · 光導(dǎo)纖維 · 同軸電纜 · 雙絞線
TCP/IP四層模型
TCP/IP協(xié)議棧是美國國防部高級研究計劃局計算機(jī)網(wǎng)(ARPANET)和其后繼因特網(wǎng)使用的參考模型。ARPANET是由美國國防部贊助的研究網(wǎng)絡(luò)拴疤。最初永部,它只連接了美國境內(nèi)的四所大學(xué)。隨后的幾年中呐矾,它通過租用的電話線連接了數(shù)百所大學(xué)和政府部門愧薛。最終ARPANET發(fā)展成為全球規(guī)模最大的互連網(wǎng)絡(luò)-因特網(wǎng)。最初的ARPANET于1990年永久性地關(guān)閉趾疚。
ISO制定的OSI參考模型的過于龐大、復(fù)雜招致了許多批評。與此對照,由技術(shù)人員自己開發(fā)的TCP/IP協(xié)議棧獲得了更為廣泛的應(yīng)用桩皿。
應(yīng)用層
- DHCP(動態(tài)主機(jī)分配協(xié)議)
- DNS (域名解析)
- FTP(File Transfer Protocol)文件傳輸協(xié)議
- Gopher (英文原義:The Internet Gopher Protocol 中文釋義:(RFC-1436)網(wǎng)際Gopher協(xié)議)
- HTTP (Hypertext Transfer Protocol)超文本傳輸協(xié)議
- IMAP4 (Internet Message Access Protocol 4) 即 Internet信息訪問協(xié)議的第4版本
- IRC (Internet Relay Chat )網(wǎng)絡(luò)聊天協(xié)議
- NNTP (Network News Transport Protocol)RFC-977)網(wǎng)絡(luò)新聞傳輸協(xié)議
- XMPP 可擴(kuò)展消息處理現(xiàn)場協(xié)議
- POP3 (Post Office Protocol 3)即郵局協(xié)議的第3個版本
- SIP 信令控制協(xié)議
- SMTP (Simple Mail Transfer Protocol)即簡單郵件傳輸協(xié)議
- SNMP (Simple Network Management Protocol,簡單網(wǎng)絡(luò)管理協(xié)議)
- SSH (Secure Shell)安全外殼協(xié)議
- SSL: 安全套接字層協(xié)議苞氮;
- TELNET 遠(yuǎn)程登錄協(xié)議
- RPC (Remote Procedure Call Protocol)(RFC-1831)遠(yuǎn)程過程調(diào)用協(xié)議
- RTCP (RTP Control Protocol)RTP 控制協(xié)議
- RTSP (Real Time Streaming Protocol)實時流傳輸協(xié)議
- TLS (Transport Layer Security Protocol)傳輸層安全協(xié)議
- SDP( Session Description Protocol)會話描述協(xié)議
- SOAP (Simple Object Access Protocol)簡單對象訪問協(xié)議
- GTP 通用數(shù)據(jù)傳輸平臺
- STUN (Simple Traversal of UDP over NATs,NAT 的UDP簡單穿越)是一種網(wǎng)絡(luò)協(xié)議
- NTP (Network Time Protocol)網(wǎng)絡(luò)校時協(xié)議
傳輸層 - TCP(Transmission Control Protocol)傳輸控制協(xié)議
- UDP (User Datagram Protocol)用戶數(shù)據(jù)報協(xié)議
- DCCP (Datagram Congestion Control Protocol)數(shù)據(jù)報擁塞控制協(xié)議
- SCTP(STREAM CONTROL TRANSMISSION PROTOCOL)流控制傳輸協(xié)議
- RTP(Real-time Transport Protocol或簡寫RTP)實時傳送協(xié)議
- RSVP (Resource ReSer Vation Protocol)資源預(yù)留協(xié)議
- PPTP ( Point to Point Tunneling Protocol)點對點隧道協(xié)議
網(wǎng)絡(luò)層 - IP:(IPv4 · IPv6) Internet Protocol(網(wǎng)絡(luò)之間互連的協(xié)議)
- ARP:Address Resolution Protocol即地址解析協(xié)議,實現(xiàn)通過IP地址得知其物理地址绽慈。
- RARP :Reverse Address Resolution Protocol 反向地址轉(zhuǎn)換協(xié)議允許局域網(wǎng)的物理機(jī)器從網(wǎng)關(guān)服務(wù)器的 ARP 表或者緩存上請求其 IP 地址。
- ICMP:(Internet Control Message Protocol)Internet控制報文協(xié)議锌介。它是TCP/IP協(xié)議族的一個子協(xié)議尊浪,用于在IP主機(jī)、路由器之間傳遞控制消息慢哈。
- ICMPv6:
- IGMP:Internet 組管理協(xié)議(IGMP)是因特網(wǎng)協(xié)議家族中的一個組播協(xié)議斋泄,用于IP 主機(jī)向任一個直接相鄰的路由器報告他們的組成員情況嘉汰。
- RIP:路由信息協(xié)議(RIP)是一種在網(wǎng)關(guān)與主機(jī)之間交換路由選擇信息的標(biāo)準(zhǔn)邓梅。
- OSPF:(Open Shortest Path First開放式最短路徑優(yōu)先).
- BGP:(Border Gateway Protocol )邊界網(wǎng)關(guān)協(xié)議,用來連接Internet上獨立系統(tǒng)的路由選擇協(xié)議
- IS-IS:(Intermediate System to Intermediate System Routing Protocol)中間系統(tǒng)到中間系統(tǒng)的路由選擇協(xié)議.
- IPsec:“Internet 協(xié)議安全性”是一種開放標(biāo)準(zhǔn)的框架結(jié)構(gòu)特石,通過使用加密的安全服務(wù)以確保在Internet 協(xié)議 (IP) 網(wǎng)絡(luò)上進(jìn)行保密而安全的通訊狂秦。
數(shù)據(jù)鏈路層
802.11 · 802.16 · Wi-Fi · WiMAX · ATM · DTM · 令牌環(huán) · 以太網(wǎng) · FDDI · 幀中繼 · GPRS · EVDO · HSPA · HDLC · PPP · L2TP · ISDN
物理層
以太網(wǎng)物理層 · 調(diào)制解調(diào)器 · PLC · SONET/SDH · G.709 · 光導(dǎo)纖維 · 同軸電纜 · 雙絞線
OSI七層和TCP/IP四層的關(guān)系
- OSI引進(jìn)了服務(wù)符喝、接口嘹狞、協(xié)議娘赴、分層的概念,TCP/IP借鑒了OSI的這些概念建立TCP/IP模型跟啤。
- OSI先有模型诽表,后有協(xié)議,先有標(biāo)準(zhǔn)隅肥,后進(jìn)行實踐竿奏;而TCP/IP則相反,先有協(xié)議和應(yīng)用腥放,再提出了模型泛啸,且是參照OSI模型。
- OSI是一種理論下的模型秃症,而TCP/IP已經(jīng)被廣泛應(yīng)用候址,稱為網(wǎng)絡(luò)互聯(lián)實施上的標(biāo)準(zhǔn)。
數(shù)據(jù)包的封裝與解析
封包
應(yīng)用程序產(chǎn)生并發(fā)送數(shù)據(jù)种柑,數(shù)據(jù)經(jīng)過層層包裝岗仑,最后數(shù)據(jù)將封裝成以太網(wǎng)幀,再從鏈路中發(fā)送出去聚请。
通信過程中荠雕,每層協(xié)議都要加上一個數(shù)據(jù)首部(header),稱為封裝(Encapsulation)
解包
數(shù)據(jù)包到達(dá)目標(biāo)機(jī)器后經(jīng)過相反的過程,最終被目標(biāo)程序接收
各層的數(shù)據(jù)報文結(jié)構(gòu)
TCP數(shù)據(jù)報
Wireshark 抓包數(shù)據(jù)
IP數(shù)據(jù)報
Wireshark 抓包數(shù)據(jù)
以太網(wǎng)數(shù)據(jù)幀
Preamble 前導(dǎo)碼,序言:7byte或56bits的長度,為交替的0和1瞳浦,來進(jìn)行時鐘同步。
Start frame delimiter (SFD)幀開始符號: 該符號 (1 byte: 10101011)表示了下面就是數(shù)據(jù)了损趋,不能繼續(xù)用來時鐘同步了。10101011與preamble的1結(jié)尾相連接椅寺,形成2個1作為標(biāo)志浑槽。
Destination address 和source address 就是源mac和目的mac地址
Type類型: 此字段定義包封裝在其中的上層協(xié)議的框架。該協(xié)議可以是IP返帕、ARP桐玻、OSPF等。
Data:數(shù)據(jù)來源于上一層荆萤,大小應(yīng)在46到1500byte之間镊靴,如果小于46,則會自動補0链韭,反之需要分割
CRC錯誤檢測:檢測源和目的mac地址與數(shù)據(jù)的和偏竟,如果發(fā)現(xiàn)錯誤,則該幀丟棄敞峭。
Wireshark 抓包數(shù)據(jù)
數(shù)據(jù)包的傳輸
傳輸示意圖
以太網(wǎng)幀在數(shù)據(jù)鏈路層傳輸
TCP數(shù)據(jù)傳輸過程
TCP的三次握手和四次揮手
建立連接
第一次握手:客戶端發(fā)送一個TCP的SYN標(biāo)志位置1的包指明客戶打算連接的服務(wù)器的端口踊谋,以及初始序號X,保存在包頭的序列號(Sequence Number)字段里。
第二次握手:服務(wù)器發(fā)回確認(rèn)包(ACK)應(yīng)答旋讹。即SYN標(biāo)志位和ACK標(biāo)志位均為1同時殖蚕,將確認(rèn)序號(Acknowledgement Number)設(shè)置為客戶的ISN加1以.即X+1。
第三次握手:客戶端再次發(fā)送確認(rèn)包(ACK) SYN標(biāo)志位為0,ACK標(biāo)志位為1.并且把服務(wù)器發(fā)來ACK的序號字段+1,放在確定字段中發(fā)送給對方.并且在數(shù)據(jù)段放寫ISN的+1沉迹。
斷開連接
第一次揮手:客戶端發(fā)送一個FIN睦疫,用來關(guān)閉服務(wù)端到Server的數(shù)據(jù)傳送,客戶端進(jìn)入FIN_WAIT_1狀態(tài)鞭呕。
第二次揮手:服務(wù)端 收到FIN后蛤育,發(fā)送一個ACK給Client,確認(rèn)序號為收到序號+1(與SYN相同葫松,一個FIN占用一個序號)瓦糕,服務(wù)端進(jìn)入CLOSE_WAIT狀態(tài)
第三次揮手:服務(wù)端發(fā)送一個FIN,用來關(guān)閉Server到Client的數(shù)據(jù)傳送进宝,服務(wù)端進(jìn)入LAST_ACK狀態(tài)刻坊。
第四次揮手:客服端收到FIN后,服務(wù)端進(jìn)入TIME_WAIT狀態(tài)党晋,接著發(fā)送一個ACK給服務(wù)端,確認(rèn)序號為收到序號+1,Server進(jìn)入CLOSED狀態(tài)未玻,完成四次揮手
網(wǎng)絡(luò)設(shè)備與網(wǎng)絡(luò)結(jié)構(gòu)
首先大概知道什么是交換機(jī)灾而、路由器和網(wǎng)關(guān)設(shè)備等,以及常見的網(wǎng)絡(luò)結(jié)構(gòu)
交換機(jī)
這里指以太網(wǎng)交換機(jī)扳剿,以太網(wǎng)交換機(jī)的結(jié)構(gòu)是每個端口都直接與主機(jī)相連旁趟,并且一般都工作在全雙工方式。交換機(jī)能同時連通許多對端口庇绽,使每一對相互通信的主機(jī)都能像獨占通信媒體那樣锡搜,進(jìn)行無沖突地傳輸數(shù)據(jù)。
以太網(wǎng)交換機(jī)工作于OSI網(wǎng)絡(luò)參考模型的第二層(即數(shù)據(jù)鏈路層)瞧掺,是一種基于MAC(Media Access Control耕餐,介質(zhì)訪問控制)地址識別、完成以太網(wǎng)數(shù)據(jù)幀轉(zhuǎn)發(fā)的網(wǎng)絡(luò)設(shè)備辟狈。
交換機(jī)在端口上接受計算機(jī)發(fā)送過來的數(shù)據(jù)幀肠缔,根據(jù)幀頭的目的MAC地址查找MAC地址表然后將該數(shù)據(jù)幀從對應(yīng)端口上轉(zhuǎn)發(fā)出去,從而實現(xiàn)數(shù)據(jù)交換哼转。
路由器
路由器是連接兩個或多個網(wǎng)絡(luò)的硬件設(shè)備明未,在網(wǎng)絡(luò)間起網(wǎng)關(guān)的作用,是讀取每一個數(shù)據(jù)包中的地址然后決定如何傳送的專用智能性的網(wǎng)絡(luò)設(shè)備壹蔓。
路由器又可以稱之為網(wǎng)關(guān)設(shè)備趟妥。工作于OSI網(wǎng)絡(luò)參考模型的第三層(即網(wǎng)絡(luò)層),對不同的網(wǎng)絡(luò)之間的數(shù)據(jù)包進(jìn)行存儲佣蓉、分組轉(zhuǎn)發(fā)處理煮纵,而數(shù)據(jù)在一個子網(wǎng)中傳輸?shù)搅硪粋€子網(wǎng)中,可以通過路由器的路由功能進(jìn)行處理偏螺。在網(wǎng)絡(luò)通信中行疏,路由器具有判斷網(wǎng)絡(luò)地址以及選擇IP路徑的作用,可以在多個網(wǎng)絡(luò)環(huán)境中套像,構(gòu)建靈活的鏈接系統(tǒng)酿联,通過不同的數(shù)據(jù)分組以及介質(zhì)訪問方式對各個子網(wǎng)進(jìn)行鏈接。路由器在操作中僅接受源站或者其他相關(guān)路由器傳遞的信息夺巩,是一種基于網(wǎng)絡(luò)層的互聯(lián)設(shè)備贞让。
路由器只能根據(jù)具體的IP地址來轉(zhuǎn)發(fā)數(shù)據(jù),IP地址由網(wǎng)絡(luò)地址和主機(jī)地址兩部分組成柳譬。計算機(jī)之間的通信只能在具有相同網(wǎng)絡(luò)地址的IP地址之間進(jìn)行喳张,如果想要與其他網(wǎng)段的計算機(jī)進(jìn)行通信,則必須經(jīng)過路由器轉(zhuǎn)發(fā)出去美澳。
路由器的多個端口可以連接多個網(wǎng)段销部,每個端口的IP地址的網(wǎng)絡(luò)地址都必須與所連接的網(wǎng)段的網(wǎng)絡(luò)地址一致摸航。不同的端口它的網(wǎng)絡(luò)地址是不同的,所對應(yīng)的網(wǎng)段也是不同的舅桩,這樣才能使各個網(wǎng)段中的主機(jī)通過自己網(wǎng)段的IP地址把數(shù)據(jù)發(fā)送到路由器上酱虎。
對于每一個接收到的數(shù)據(jù)包,路由器都會重新計算其校驗值擂涛,并寫入新的物理地址读串。
路由器的主要工作就是為經(jīng)過路由器的每個數(shù)據(jù)幀尋找一條最佳傳輸路徑,并將該數(shù)據(jù)有效地傳送到目的站點撒妈。
網(wǎng)關(guān)
網(wǎng)關(guān)(Gateway)又稱網(wǎng)間連接器恢暖、協(xié)議轉(zhuǎn)換器。默認(rèn)網(wǎng)關(guān)在【網(wǎng)絡(luò)層】上以實現(xiàn)網(wǎng)絡(luò)互連狰右,是最復(fù)雜的網(wǎng)絡(luò)互連設(shè)備杰捂,僅用于兩個高層協(xié)議不同的網(wǎng)絡(luò)互連。網(wǎng)關(guān)的結(jié)構(gòu)也和路由器類似挟阻,不同的是互連層琼娘。網(wǎng)關(guān)既可以用于廣域網(wǎng)互連,也可以用于局域網(wǎng)互連附鸽。
【說明:由于歷史的原因脱拼,許多有關(guān)TCP/IP的文獻(xiàn)曾經(jīng)把網(wǎng)絡(luò)層使用的路由器稱為網(wǎng)關(guān),在今天很多局域網(wǎng)采用都是路由來接入網(wǎng)絡(luò)坷备,因此通常指的網(wǎng)關(guān)就是路由器的IP熄浓!】
那么網(wǎng)關(guān)到底是什么呢?網(wǎng)關(guān)實質(zhì)上是一個網(wǎng)絡(luò)通向其他網(wǎng)絡(luò)的IP地址省撑。比如有網(wǎng)絡(luò)A和網(wǎng)絡(luò)B赌蔑,網(wǎng)絡(luò)A的IP地址范圍為“192.168.1.1~192. 168.1.254”,子網(wǎng)掩碼為255.255.255.0竟秫;網(wǎng)絡(luò)B的IP地址范圍為“192.168.2.1~192.168.2.254”娃惯,子網(wǎng)掩碼為255.255.255.0。在沒有路由器的情況下肥败,兩個網(wǎng)絡(luò)之間是不能進(jìn)行TCP/IP通信的趾浅,即使是兩個網(wǎng)絡(luò)連接在同一臺交換機(jī)(或集線器)上,TCP/IP協(xié)議也會根據(jù)子網(wǎng)掩碼(255.255.255.0)判定兩個網(wǎng)絡(luò)中的主機(jī)處在不同的網(wǎng)絡(luò)里馒稍。而要實現(xiàn)這兩個網(wǎng)絡(luò)之間的通信皿哨,則必須通過網(wǎng)關(guān)。如果網(wǎng)絡(luò)A中的主機(jī)發(fā)現(xiàn)數(shù)據(jù)包的目的主機(jī)不在本地網(wǎng)絡(luò)中纽谒,就把數(shù)據(jù)包轉(zhuǎn)發(fā)給它自己的網(wǎng)關(guān)证膨,再由網(wǎng)關(guān)轉(zhuǎn)發(fā)給網(wǎng)絡(luò)B的網(wǎng)關(guān),網(wǎng)絡(luò)B的網(wǎng)關(guān)再轉(zhuǎn)發(fā)給網(wǎng)絡(luò)B的某個主機(jī)
只有設(shè)置好網(wǎng)關(guān)的IP地址鼓黔,TCP/IP協(xié)議才能實現(xiàn)不同網(wǎng)絡(luò)之間的相互通信央勒。那么這個IP地址是哪臺機(jī)器的IP地址呢不见?網(wǎng)關(guān)的IP地址是具有路由功能的設(shè)備的IP地址,具有路由功能的設(shè)備有路由器订歪、啟用了路由協(xié)議的服務(wù)器(實質(zhì)上相當(dāng)于一臺路由器)脖祈、代理服務(wù)器(也相當(dāng)于一臺路由器)肆捕。
網(wǎng)關(guān)和路由器的區(qū)別
首先‘網(wǎng)關(guān)’一個大概念刷晋,不具體特指一類產(chǎn)品,只要連接兩個不同的網(wǎng)絡(luò)的設(shè)備都可以叫網(wǎng)關(guān)慎陵;而‘路由器’么一般特指能夠?qū)崿F(xiàn)路由尋找和轉(zhuǎn)發(fā)的特定類產(chǎn)品眼虱,路由器很顯然能夠?qū)崿F(xiàn)網(wǎng)關(guān)的功能。
我們在PC上設(shè)置的默認(rèn)網(wǎng)關(guān)是什么席纽,默認(rèn)網(wǎng)關(guān)事實上不是一個產(chǎn)品而是一個網(wǎng)絡(luò)層的概念捏悬,PC本身不具備路由尋址能力,所以PC要把所有的IP包發(fā)送到一個默認(rèn)的中轉(zhuǎn)地址上面進(jìn)行轉(zhuǎn)發(fā)润梯,也就是默認(rèn)網(wǎng)關(guān)过牙。這個網(wǎng)關(guān)可以在路由器上,可以在三層交換機(jī)上纺铭,可以在防火墻上寇钉,可以在服務(wù)器上,所以和物理的設(shè)備無關(guān)舶赔。
家用路由器
家用路由器 = 路由器 + 防火墻 + 交換機(jī) = 防火墻 + 交換機(jī) + NAT
防火墻:路由器在許多方面扮演著基本防火墻的角色扫倡,包括自動拒絕不屬于網(wǎng)絡(luò)內(nèi)的計算機(jī)與外部世界之間正在進(jìn)行的交換的一部分的傳入數(shù)據(jù)。另一方面竟纳,如果來自未知地址的端口探測突然出現(xiàn)撵溃,你的路由器就會充當(dāng)保鏢,拒絕請求锥累,有效地隱藏你的計算機(jī)缘挑。
網(wǎng)關(guān):家庭路由器還充當(dāng)網(wǎng)絡(luò)交換機(jī)。網(wǎng)絡(luò)交換機(jī)是一種硬件桶略,它可以促進(jìn)內(nèi)部網(wǎng)絡(luò)上計算機(jī)之間的通信语淘。如果沒有交換功能,這些設(shè)備可以通過路由器與更大的互聯(lián)網(wǎng)通信删性,但不能相互通信亏娜。
NAT:我們都知道,一臺家用路由器可以允許多臺設(shè)備同時連接上網(wǎng)蹬挺,那么當(dāng)設(shè)備通過家用路由器向網(wǎng)絡(luò)發(fā)送請求后维贺,返回的響應(yīng)到達(dá)路由器時,路由器必須要知道該響應(yīng)對應(yīng)的是哪臺設(shè)備發(fā)送的請求巴帮。我們向網(wǎng)絡(luò)供應(yīng)商(ISP)申請網(wǎng)絡(luò)訪問權(quán)限時溯泣,ISP會給路由器分配一個公網(wǎng)ip虐秋,路由器內(nèi)部的設(shè)備只能使用內(nèi)網(wǎng)ip。NAT的作用就是實現(xiàn)公網(wǎng)/內(nèi)網(wǎng)ip以及端口的轉(zhuǎn)換垃沦。為此客给,需要一張表,用于記錄內(nèi)外ip和端口的映射關(guān)系肢簿。
假設(shè)內(nèi)網(wǎng)中有兩臺設(shè)備A和B靶剑,同時訪問同一個外網(wǎng)ip的相同端口。那么在路由器處就會記錄如下映射關(guān)系:
(remote ip_r : port_r)--(local ip_a : a_port)
(remote ip_r : port_r)--(local ip_b : b_port)
假設(shè)恰好a_port和b_port的值相同池充,那么來自遠(yuǎn)端的響應(yīng)數(shù)據(jù)到達(dá)路由器時桩引,路由器就無法確定該請求應(yīng)該給A還是給B。對于這種情況收夸,NAT采用一個三元組來進(jìn)行區(qū)分:(remote ip_r : port_r)(nat port)(local ip_a : a_port)坑匠,即通過增加nat port來進(jìn)行區(qū)分。當(dāng)A和B請求到來時卧惜,為兩個請求生成兩個尚未使用的端口:a_port和b_port厘灼,并記錄如下關(guān)系:
(remote ip_r : port_r)(nat a_port)(local ip_a : same_port)
(remote ip_r : port_r)(nat b_port)(local ip_b : same_port)
即當(dāng)A請求到達(dá)路由器時,路由器將請求的源ip換成ISP分配的公網(wǎng)ip咽瓷,并將源端口換成a_port设凹;而當(dāng)請求B到達(dá)路由器時,路由器將請求的源ip換成ISP分配的公網(wǎng)ip忱详,并將源端口換成b_port围来。當(dāng)A和B的請求返回時,根據(jù)返回的目的端口(返回的目的端口就是請求的源端口)是a_port還是b_port即可確定該將響應(yīng)給A還是B匈睁。
Modem
通過電話線上網(wǎng)的時代监透,我們通過貓來連接互聯(lián)網(wǎng)。現(xiàn)在運營商都升級成了光纖了航唆,所以原來的貓換成光貓胀蛮。
貓
調(diào)制解調(diào)器(英文名Modem),俗稱“貓”糯钙,是一種計算機(jī)硬件粪狼。
它能把計算機(jī)的數(shù)字信號翻譯成可沿普通電話線傳送的脈沖信號,而這些脈沖信號又可被線路另一端的另一個調(diào)制解調(diào)器接收任岸,并譯成計算機(jī)可懂的語言再榄。
計算機(jī)內(nèi)的信息是由“0”和“1”組成數(shù)字信號,而在電話線上傳遞的卻只能是模擬電信號享潜。于是困鸥,當(dāng)兩臺計算機(jī)要通過電話線進(jìn)行數(shù)據(jù)傳輸時,就需要一個設(shè)備負(fù)責(zé)數(shù)模的轉(zhuǎn)換剑按。
光貓
光貓和上面說的貓也是一樣的疾就,只是將傳輸脈沖信號變成了傳輸光信號澜术。
現(xiàn)在一般的光貓外形都是和無線路由器相似,并且光貓上的天線也是可以發(fā)射無線信號的猬腰,這種能夠自帶路由器功能的鸟废,并且還能內(nèi)置wifi功能的光貓,是一種集合光貓和路由一體的機(jī)器姑荷。
目前盒延,家庭上網(wǎng)基本上都實現(xiàn)了FTTH,也就是光纖入戶厢拭。 寬帶上網(wǎng)兰英、IPTV撇叁、電話均通過一根光纖接入供鸠,實現(xiàn)了“三網(wǎng)融合”。
生活中陨闹,我們使用手電筒時楞捂,可以通過明暗的變化傳遞信息,光纖傳輸信息跟這個差不多趋厉。
在網(wǎng)絡(luò)世界里寨闹,只有0和1,數(shù)字信號不能直接變成光信號君账,需要將數(shù)字信號轉(zhuǎn)換成電信號繁堡,比如1用高壓表示,0用低壓表示乡数。將這些電信號輸入到激光椭蹄、二極管等光源,光源根據(jù)信號電壓變化而發(fā)光净赴,比如高電壓發(fā)光亮绳矩,低電壓發(fā)光暗。 光信號到達(dá)對端時玖翅,通過光敏元件根據(jù)光的亮度產(chǎn)生不同的電壓翼馆,轉(zhuǎn)換成電信號,最后將電信號轉(zhuǎn)換成數(shù)字信號金度,這樣我們就收到信號了应媚。
常見的網(wǎng)絡(luò)結(jié)構(gòu)
只是在網(wǎng)上隨便找的示例
家庭
學(xué)校
公司
最終結(jié)論
1、當(dāng)發(fā)送的目的地在局域網(wǎng)時猜极,通過IP和子網(wǎng)掩碼可以判斷中姜,然后根據(jù)本地的(IP地址 - 物理地址)映射表(arp協(xié)議),就能找到目標(biāo)的mac直接發(fā)送數(shù)據(jù)包了魔吐。
2扎筒、當(dāng)發(fā)送的目標(biāo)地不在局域網(wǎng)中時莱找,數(shù)據(jù)包會發(fā)送到網(wǎng)關(guān)(一般就是路由器)
1、從內(nèi)網(wǎng)發(fā)到公網(wǎng)的數(shù)據(jù)包嗜桌,在經(jīng)過網(wǎng)關(guān)后奥溺,利用NAT,會被轉(zhuǎn)換成網(wǎng)關(guān)的MAC骨宠,IP層地址被替換成公網(wǎng)真實IP浮定。網(wǎng)關(guān)處會有一個映射關(guān)系表,這樣返回的數(shù)據(jù)就會根據(jù)此映射關(guān)系做相應(yīng)數(shù)據(jù)轉(zhuǎn)發(fā)层亿。
2桦卒、數(shù)據(jù)包在經(jīng)過交換機(jī)時不會修改數(shù)據(jù),直接轉(zhuǎn)發(fā)匿又。
3方灾、數(shù)據(jù)包在經(jīng)過中間路由器之后 源mac 和 目標(biāo)mac 都是要改變,源mac改成路由器出網(wǎng)卡的mac碌更,目標(biāo)mac改成下一跳的mac裕偿,當(dāng)然還會重新計算以太網(wǎng)幀的CRC等
NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換方法)
NAT(Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)是1994年提出的痛单。當(dāng)在專用網(wǎng)內(nèi)部的一些主機(jī)本來已經(jīng)分配到了本地IP地址(即僅在本專用網(wǎng)內(nèi)使用的專用地址)嘿棘,但現(xiàn)在又想和因特網(wǎng)上的主機(jī)通信(并不需要加密)時,可使用NAT方法旭绒。
這種方法需要在專用網(wǎng)連接到因特網(wǎng)的路由器上安裝NAT軟件鸟妙。裝有NAT軟件的路由器叫做NAT路由器,它至少有一個有效的外部全球IP地址挥吵。這樣重父,所有使用本地地址的主機(jī)在和外界通信時,都要在NAT路由器上將其本地地址轉(zhuǎn)換成全球IP地址蔫劣,才能和因特網(wǎng)連接坪郭。
NAT的幾種實現(xiàn)方式
靜態(tài)轉(zhuǎn)換:是指將內(nèi)部網(wǎng)絡(luò)的私有IP地址轉(zhuǎn)換為公有IP地址,IP地址對是一對一的脉幢,是一成不變的歪沃,某個私有IP地址只轉(zhuǎn)換為某個公有IP地址。借助于靜態(tài)轉(zhuǎn)換嫌松,可以實現(xiàn)外部網(wǎng)絡(luò)對內(nèi)部網(wǎng)絡(luò)中某些特定設(shè)備(如服務(wù)器)的訪問沪曙。
動態(tài)轉(zhuǎn)換:是指將內(nèi)部網(wǎng)絡(luò)的私有IP地址轉(zhuǎn)換為公用IP地址時,IP地址是不確定的萎羔,是隨機(jī)的液走,所有被授權(quán)訪問上Internet的私有IP地址可隨機(jī)轉(zhuǎn)換為任何指定的合法IP地址。也就是說,只要指定哪些內(nèi)部地址可以進(jìn)行轉(zhuǎn)換缘眶,以及用哪些合法地址作為外部地址時嘱根,就可以進(jìn)行動態(tài)轉(zhuǎn)換。動態(tài)轉(zhuǎn)換可以使用多個合法外部地址集巷懈。當(dāng)ISP提供的合法IP地址略少于網(wǎng)絡(luò)內(nèi)部的計算機(jī)數(shù)量時该抒。可以采用動態(tài)轉(zhuǎn)換的方式顶燕。
端口多路復(fù)用(Port address Translation,PAT):是指改變外出數(shù)據(jù)包的源端口并進(jìn)行端口轉(zhuǎn)換凑保,即端口地址轉(zhuǎn)換(PAT,Port Address Translation).采用端口多路復(fù)用方式涌攻。內(nèi)部網(wǎng)絡(luò)的所有主機(jī)均可共享一個合法外部IP地址實現(xiàn)對Internet的訪問欧引,從而可以最大限度地節(jié)約IP地址資源。同時恳谎,又可隱藏網(wǎng)絡(luò)內(nèi)部的所有主機(jī)芝此,有效避免來自internet的攻擊。因此惠爽,目前網(wǎng)絡(luò)中應(yīng)用最多的就是端口多路復(fù)用方式癌蓖。
ALG(Application Level Gateway):即應(yīng)用程序級網(wǎng)關(guān)技術(shù):傳統(tǒng)的NAT技術(shù)只對IP層和傳輸層頭部進(jìn)行轉(zhuǎn)換處理,但是一些應(yīng)用層協(xié)議婚肆,在協(xié)議數(shù)據(jù)報文中包含了地址信息。為了使得這些應(yīng)用也能透明地完成NAT轉(zhuǎn)換坐慰,NAT使用一種稱作ALG的技術(shù)较性,它能對這些應(yīng)用程序在通信時所包含的地址信息也進(jìn)行相應(yīng)的NAT轉(zhuǎn)換。例如:對于FTP協(xié)議的PORT/PASV命令结胀、DNS協(xié)議的 "A" 和 "PTR" queries命令和部分ICMP消息類型等都需要相應(yīng)的ALG來支持赞咙。
NAPT
NAPT(Network Address Port Translation),即網(wǎng)絡(luò)地址端口轉(zhuǎn)換糟港,可將多個內(nèi)部地址映射為一個合法公網(wǎng)地址攀操,但以不同的協(xié)議端口號與不同的內(nèi)部地址相對應(yīng),也就是<內(nèi)部地址+內(nèi)部端口>與<外部地址+外部端口>之間的轉(zhuǎn)換秸抚。NAPT普遍用于接入設(shè)備中速和,它可以將中小型的網(wǎng)絡(luò)隱藏在一個合法的IP地址后面。NAPT也被稱為“多對一”的NAT剥汤,或者叫PAT(Port Address Translations颠放,端口地址轉(zhuǎn)換)、地址超載(address overloading)吭敢。
NAPT與動態(tài)地址NAT不同碰凶,它將內(nèi)部連接映射到外部網(wǎng)絡(luò)中的一個單獨的IP地址上,同時在該地址上加上一個由NAT設(shè)備選定的TCP端口號。NAPT算得上是一種較流行的NAT變體欲低,通過轉(zhuǎn)換TCP或UDP協(xié)議端口號以及地址來提供并發(fā)性辕宏。除了一對源和目的IP地址以外,這個表還包括一對源和目的協(xié)議端口號砾莱,以及NAT盒使用的一個協(xié)議端口號匾效。
NAPT的主要優(yōu)勢在于,能夠使用一個全球有效IP地址獲得通用性恤磷。主要缺點在于其通信僅限于TCP或UDP面哼。當(dāng)所有通信都采用TCP或UDP,NAPT允許一臺內(nèi)部計算機(jī)訪問多臺外部計算機(jī)扫步,并允許多臺內(nèi)部主機(jī)訪問同一臺外部計算機(jī)魔策,相互之間不會發(fā)生沖突。
內(nèi)網(wǎng)上網(wǎng)方案
內(nèi)網(wǎng)實現(xiàn)上網(wǎng)的方案一般就是Nat 和 Proxy
其他
查看地址解析協(xié)議(ARP)使用的“IP 到物理”地址轉(zhuǎn)換表
c:>arp -a
查路由表
c:>route print
追蹤路由
c:>tracert baidu.com
抓包
Wireshark