網(wǎng)絡(luò)層(IP)和傳輸層(TCP、UDP剧劝、SSH)負(fù)責(zé)數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸
應(yīng)用層(HTTP橄登、FTP、SSH讥此、MQTT拢锹、AMQP、RTSP)負(fù)責(zé)數(shù)據(jù)的封裝和解析
上述應(yīng)用層協(xié)議都建立在TCP/IP之上
TCP/IP協(xié)議
即傳輸控制/網(wǎng)絡(luò)協(xié)議萄喳,也叫作網(wǎng)絡(luò)通訊協(xié)議面褐。不僅僅包括TCP 和IP兩個(gè)協(xié)議,而是指一個(gè)由FTP取胎、SMTP、TCP湃窍、UDP闻蛀、IP等協(xié)議構(gòu)成的協(xié)議簇
IP(Internet Protocol)
- 網(wǎng)絡(luò)層。為主機(jī)提供一種無(wú)連接您市、不可靠的觉痛、盡力而為的數(shù)據(jù)報(bào)傳輸服務(wù)。
TCP(Transmission Control Protocol)
- 建立在IP協(xié)議之上的傳輸層協(xié)議茵休,定義數(shù)據(jù)傳輸和連接的方式
- 在兩臺(tái)計(jì)算機(jī)之間經(jīng)過(guò)"三次握手"建立可靠連接薪棒,握手成功后才開(kāi)始傳輸數(shù)據(jù)。TCP協(xié)議會(huì)對(duì)每個(gè)IP包編號(hào)榕莺,確保對(duì)方按順序收到俐芯,如果包丟掉了,就自動(dòng)重發(fā)钉鸯。理論上TCP連接一旦建立吧史,在通信雙方中的任何一方主動(dòng)發(fā)起并通過(guò)"四次揮手"關(guān)閉連接之前,TCP 連接都將被一直保持下去唠雕。
- WebSocket是建立在TCP協(xié)議上的贸营,用于代替輪詢吨述。通過(guò)保持連接狀態(tài)以減少開(kāi)銷,且加快響應(yīng)速度
UDP(User Data Protocol钞脂,用戶數(shù)據(jù)協(xié)議)
- 傳輸層協(xié)議揣云,消耗資源比TCP少,傳輸數(shù)據(jù)之前源端和終端不建立連接冰啃, 需要傳送時(shí)就直接發(fā)出邓夕,源端不需要接收來(lái)自終端的消息
- 不保證終端可收到包
- 不保證終端收到包的順序
Socket(套接字)
為了方便程序員調(diào)用TCP/IP協(xié)議(包括TCP和UDP),而抽象出來(lái)一組接口亿笤。
Socket 和 WebSocket無(wú)關(guān)翎迁。
HTTP
HTTP(Hypertext Transfer Protocol 超文本傳輸協(xié)議)是應(yīng)用層協(xié)議,定義傳輸數(shù)據(jù)的內(nèi)容的規(guī)范,基于TCP/IP協(xié)議
HTTP協(xié)議由請(qǐng)求和響應(yīng)構(gòu)成净薛,且是無(wú)狀態(tài)的( 無(wú)狀態(tài)是指兩次連接通信之間是沒(méi)有任何關(guān)系的汪榔,每次都是一個(gè)新的連接,服務(wù)端不會(huì)記錄前后的請(qǐng)求信息肃拜。)
URL構(gòu)成
http://www.baidu.com/index.html?id=10
http
協(xié)議 protocol
www.baidu.com
主機(jī) host
index.html
路徑 path
id=10
參數(shù) query string
常見(jiàn)請(qǐng)求頭
- If-Modified-Since 值為上一次服務(wù)器返回的last-modified值,用于確定資源是否更改過(guò),若未更改則從緩存中讀取(304)
- User-Agent 操作系統(tǒng)(OS)和瀏覽器的版本信息
- Referfer 發(fā)起請(qǐng)求的地址
- Authorization 一般用于設(shè)置身份請(qǐng)求信息
常見(jiàn)響應(yīng)頭
- last-modified 資源上次修改時(shí)間
- Date 服務(wù)器日期
- Server 服務(wù)器信息
- Transfer-Encoding: 一般為chunked,出現(xiàn)在Content-Length不確定的情況下,表示服務(wù)器不知道響應(yīng)體的具體大小
狀態(tài)碼
成功的狀態(tài)碼:
- 200 – 服務(wù)器成功返回網(wǎng)頁(yè)
- 304 – 頁(yè)面未修改
失敗的狀態(tài)碼:
- 404 – 請(qǐng)求的網(wǎng)頁(yè)不存在
- 500 – 服務(wù)器內(nèi)部錯(cuò)誤
- 503 – 服務(wù)器暫時(shí)不可用
- 400(錯(cuò)誤請(qǐng)求) 服務(wù)器不理解請(qǐng)求的語(yǔ)法痴腌。
- 401(未授權(quán)) 請(qǐng)求要求進(jìn)行身份驗(yàn)證。登錄后燃领,服務(wù)器可能會(huì)返回對(duì)頁(yè)面的此響應(yīng)士聪。
- 403(已禁止) 服務(wù)器拒絕請(qǐng)求。
- 408(請(qǐng)求超時(shí)) 服務(wù)器等候請(qǐng)求時(shí)超時(shí)猛蔽。
其他:
- 100(Continue繼續(xù)) 請(qǐng)求者應(yīng)當(dāng)繼續(xù)提出請(qǐng)求剥悟。服務(wù)器返回此代碼則意味著,服務(wù)器已收到了請(qǐng)求的第一部分曼库,現(xiàn)正在等待接收其余部分区岗。
HTTPS
在 應(yīng)用層HTTP 和 傳輸層TCP 之間,加入了一個(gè)安全層SSL/TLS毁枯,用于對(duì)發(fā)出的HTTP數(shù)據(jù)加密慈缔,對(duì)收到的HTTP數(shù)據(jù)解密
- SSL全稱“Secure Sockets Layer”,安全套接層种玛。
后來(lái)更名為TLS藐鹤,“Transport Layer Security”,傳輸層安全協(xié)議赂韵。 - 默認(rèn)端口為443
- 通過(guò)證書(shū)(公私鑰對(duì))進(jìn)行加密和解密操作
證書(shū)由CA(Certificate Authority娱节,證書(shū)授權(quán)中心)頒發(fā)。
原理演化
- 對(duì)稱加密(單鑰匙鎖)
AB端均持有密鑰a右锨,在一端用密鑰a加密消息括堤,在另一端通過(guò)密鑰a解密。
不安全,產(chǎn)生密鑰的一方需要將密鑰傳給對(duì)方悄窃,可能會(huì)被中間人攔截 - 非對(duì)稱加密(雙鑰匙鎖)
A端持有公鑰a讥电,B端持有私鑰b,公鑰的加密只能由私鑰解密轧抗,私鑰的加密只能由公鑰解密恩敌。
不安全横媚,產(chǎn)生密鑰的一方需要將公鑰傳給對(duì)方纠炮,該過(guò)程同樣可能會(huì)被中間人攔截 - 對(duì)稱加密 + 非對(duì)稱加密
客戶端擁有秘鑰A,服務(wù)器擁有公鑰B和私鑰C灯蝴,首先恢口,客戶端向服務(wù)器發(fā)送請(qǐng)求,服務(wù)器響應(yīng)請(qǐng)求并返回公鑰B穷躁,客戶端用公鑰B加密秘鑰A傳給服務(wù)器耕肩。然后客戶端和服務(wù)器的通信就可以通過(guò)秘鑰A來(lái)進(jìn)行加密解密,這樣就保證了數(shù)據(jù)傳輸過(guò)程中的加密問(wèn)題问潭。
不安全猿诸,在第一次請(qǐng)求時(shí),中間人可以攔截服務(wù)器返回的公鑰B狡忙,并換成偽造的公鑰 - 對(duì)稱加密 + 非對(duì)稱加密 + CA數(shù)字證書(shū)(HTTPS采用的方式)
數(shù)字證書(shū)由可信任的第三方頒發(fā)梳虽,相當(dāng)于一個(gè)身份證,可以驗(yàn)證服務(wù)器的身份灾茁。
數(shù)字證書(shū)包含了證書(shū)持有者信息窜觉、公鑰信息、CA信息北专、通過(guò)CA私鑰加密的以上明文信息的簽名竖螃。客戶端初次請(qǐng)求會(huì)從服務(wù)器端獲取該證書(shū)逗余,通過(guò)CA的公鑰解密簽名并和明文比對(duì),以此確保
MQTT(Message Queue Telemetry Transport)
遙測(cè)傳輸協(xié)議
基于TCP/IP協(xié)議季惩,是一種低開(kāi)銷录粱、低帶寬占用的應(yīng)用層即時(shí)通訊協(xié)議。
適用于計(jì)算能力有限画拾、網(wǎng)絡(luò)帶寬低啥繁、信號(hào)不穩(wěn)定的遠(yuǎn)程設(shè)備。
使用發(fā)布/訂閱模式青抛,提供一對(duì)多的消息發(fā)布旗闽,但不會(huì)收到訂閱者的反饋。
有三種消息發(fā)布的服務(wù)質(zhì)量:
- “最多一次”,消息發(fā)布完全依賴底層 TCP/IP 網(wǎng)絡(luò)适室。分發(fā)的消息可能丟失或重復(fù)嫡意。例如可用于給APP推送消息
- “至少一次”,確保消息可以到達(dá)捣辆,但消息可能會(huì)重復(fù)蔬螟。
- “只有一次”,確保消息只到達(dá)一次汽畴。例如旧巾,這個(gè)等級(jí)可用在一個(gè)計(jì)費(fèi)系統(tǒng)中,這里如果消息重復(fù)或丟失會(huì)導(dǎo)致不正確的收費(fèi)忍些。
AMQP(Advanced Message Queue Protocol)
高級(jí)消息隊(duì)列協(xié)議
也是基于TCP/IP的應(yīng)用層通訊協(xié)議鲁猩。
比起MQTT,適用于網(wǎng)絡(luò)狀況較好罢坝,機(jī)器性能較強(qiáng)的場(chǎng)景廓握。
RabbitMQ是實(shí)現(xiàn)了AMQP的消息中間件(也可以通過(guò)插件支持MQTT)。
SSH(Secure Shell)
SSH是建立在應(yīng)用層和傳輸層基礎(chǔ)上的安全協(xié)議
默認(rèn)端口號(hào)22
SSH除了作為安全協(xié)議以外炸客,有時(shí)還被作為一種應(yīng)用疾棵,對(duì)于開(kāi)啟SSH服務(wù)的設(shè)備或系統(tǒng),可能在終端通過(guò)SSH客戶端軟件進(jìn)行連接痹仙,如:SecureCRT是尔、ssh secure shell client、PuTTY
FTP(File Transfer Protocol)與 SFTP
- FTP占用兩個(gè)端口开仰,通常控制端口為21拟枚,數(shù)據(jù)傳輸端口為20。
- FTP在控制連接方面可以通過(guò)SSL加密众弓,但數(shù)據(jù)端口傳輸數(shù)據(jù)時(shí)不加密恩溅。
SFTP比FTP傳輸慢,但更安全谓娃。 - 通過(guò)在數(shù)據(jù)端口使用SSH加密脚乡,變?yōu)镾FTP協(xié)議,此時(shí)控制端口為22(同SSH)滨达。
- 支持主動(dòng)和被動(dòng)兩種傳輸方式奶稠。
為Win10啟用FTP
-
控制面板--》程序--》啟用或關(guān)閉windows功能
Internet information service(信息服務(wù)),并選中“FTP服務(wù)”捡遍、“FTP擴(kuò)展性”和“IIS管理控制臺(tái)”前的復(fù)選框锌订,點(diǎn)擊“確定”
-
控制面板--》系統(tǒng)和安全--》管理工具--》Internet Information Services (IIS)管理器
右擊選擇添加FTP站點(diǎn),并選擇物理目錄画株,輸入本機(jī)IP辆飘,無(wú)SSL證書(shū)
- 關(guān)閉防火墻啦辐,或控制面板--》所有控制面板項(xiàng)--》Windows 防火墻--》允許的應(yīng)用
添加C:\Windows\System32\svchost.exe
,會(huì)產(chǎn)生windows服務(wù)主進(jìn)程
此時(shí)通過(guò)ftp:// ip
或者 ftp:// ip:21
即可訪問(wèn)
IP地址
IP 地址是一個(gè)網(wǎng)卡在網(wǎng)絡(luò)世界中的通訊地址蜈项,一個(gè)網(wǎng)卡在同一時(shí)段只能有一個(gè) IP 地址芹关,一臺(tái)機(jī)器可以有多個(gè) IP 地址。
IPv4
實(shí)際上是一個(gè)32位整數(shù)战得,以字符串表示的IP地址如192.168.0.1實(shí)際上是把32位整數(shù)按8位分組后的數(shù)字表示充边。IPv6
實(shí)際上是一個(gè)128位整數(shù),它是IPv4的升級(jí)版常侦,以字符串表示類似于2001:0db8:85a3:0042:1000:8a2e:0370:7334浇冰。固定IP
固定IP地址是長(zhǎng)期固定分配給一臺(tái)計(jì)算機(jī)使用的IP地址,一般是特殊的服務(wù)器才擁有固定IP地址聋亡。動(dòng)態(tài)IP
因?yàn)镮P地址資源非常短缺肘习,通過(guò)電話撥號(hào)上網(wǎng)或普通寬帶上網(wǎng)用戶一般不具備固定IP地址,而是由ISP動(dòng)態(tài)分配暫時(shí)的一個(gè)IP地址坡倔。公網(wǎng)IP
由Inter NIC(Internet Network Information Center 因特網(wǎng)信息中心)負(fù)責(zé)赡译。這些IP地址分配給注冊(cè)并向Inter NIC提出申請(qǐng)的組織機(jī)構(gòu)雇盖。
公網(wǎng)IP是在因特網(wǎng)上可以直接被其他人訪問(wèn)的地址。
公網(wǎng)IP在全球內(nèi)是唯一的。私有IP
Internet 上的保留地址成畦,內(nèi)網(wǎng)的多臺(tái)計(jì)算機(jī)以 NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)協(xié)議蜒什,通過(guò)一個(gè)公共的網(wǎng)關(guān)轉(zhuǎn)向一個(gè)公共的公網(wǎng)IP訪問(wèn)Internet管毙。
內(nèi)網(wǎng)的計(jì)算機(jī)可向Internet上的其他計(jì)算機(jī)發(fā)送連接請(qǐng)求背桐,但I(xiàn)nternet上其他的計(jì)算機(jī)無(wú)法向內(nèi)網(wǎng)的計(jì)算機(jī)發(fā)送連接請(qǐng)求。
私網(wǎng)IP可以重復(fù)佃蚜,但是在一個(gè)局域網(wǎng)內(nèi)不能重復(fù)庸娱。
IP地址分為三類
在很早的時(shí)候就預(yù)料到了ipv4可能不足,所以在每一類的ip地址中都預(yù)留了一部分地址作為私有ip:
類型 | ip范圍 | 私有地址范圍 |
---|---|---|
A | 1.0.0.0~126.255.255.255 | 10.0.0.0~10.255.255.255 |
B | 128.0.0.0~191.255.255.255 | 172.16.0.0~172.31.255.255 |
C | 192.0.0.0~223.255.255.255 | 192.168.0.0~192.168.255.255 |
其中還有 127.x.x.x 段地址空間是被保留的回環(huán)地址
具體的上網(wǎng)流程
比如在一個(gè)小區(qū)內(nèi)的電信用戶的公網(wǎng)ip都是相同的谐算,所以我們將數(shù)據(jù)發(fā)送給路由器熟尉,然后路由器通過(guò)公網(wǎng)ip訪問(wèn)互聯(lián)網(wǎng)查詢到數(shù)據(jù),然后路由器再將查詢到的數(shù)據(jù)傳遞到私有ip地址洲脂。
子網(wǎng)掩碼
子網(wǎng)掩碼不能單獨(dú)存在斤儿,它必須結(jié)合IP地址一起使用。
子網(wǎng)掩碼用于將某個(gè)IP地址劃分成網(wǎng)絡(luò)地址和主機(jī)地址兩部分恐锦。
不是某個(gè)IP的網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)決定子網(wǎng)掩碼是什么雇毫,而是子網(wǎng)掩碼決定了某個(gè)IP地址的網(wǎng)絡(luò)號(hào)與主機(jī)號(hào)是什么
常用的子網(wǎng)掩碼有數(shù)百種,以下為最常用的兩種子網(wǎng)掩碼:
- 255.255.255.0
最后面一個(gè)數(shù)字可以在0~255范圍內(nèi)任意變化踩蔚,因此可以提供256個(gè)IP地址。但是實(shí)際可用的IP地址數(shù)量是256-2枚粘,即254個(gè)馅闽,因?yàn)橹鳈C(jī)號(hào)不能全是“0”或全是“1”。 - 255.255.0.0
后面兩個(gè)數(shù)字可以在0~255范圍內(nèi)任意變化,可以提供2552個(gè)IP地址福也。但是實(shí)際可用的IP地址數(shù)量是255*255-2局骤,即65023個(gè)。
IP地址的子網(wǎng)掩碼設(shè)置不是任意的暴凑。如果將子網(wǎng)掩碼設(shè)置過(guò)大峦甩,容易超時(shí)并導(dǎo)致網(wǎng)絡(luò)傳輸錯(cuò)誤。因此现喳,如果一個(gè)網(wǎng)絡(luò)的規(guī)模不超過(guò)254臺(tái)電腦凯傲,采用“255.255.255.0”作為子網(wǎng)掩碼就可以了。
局域網(wǎng)最常使用的IP地址“192.168.x.y”默認(rèn)的子網(wǎng)掩碼是“255.255.255.0”嗦篱。即x
相同冰单,y
不同的設(shè)備屬于一個(gè)掩碼為“255.255.255.0”的同一子網(wǎng)中,俗稱屬于同一網(wǎng)段灸促。
網(wǎng)關(guān)
網(wǎng)關(guān)實(shí)質(zhì)上是一個(gè)網(wǎng)絡(luò)通向其他網(wǎng)絡(luò)的IP地址(即內(nèi)網(wǎng)通向外部的橋梁)诫欠,既可以用于廣域網(wǎng)互連,也可以用于局域網(wǎng)互連浴栽。
網(wǎng)關(guān)地址總是與計(jì)算機(jī)IP地址是同一網(wǎng)段的荒叼。不同網(wǎng)段的設(shè)備必須通過(guò)網(wǎng)關(guān)通訊。
通常默認(rèn)網(wǎng)關(guān)即為路由器地址典鸡。
比如有網(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。而要實(shí)現(xiàn)這兩個(gè)網(wǎng)絡(luò)之間的通信间护,則必須通過(guò)網(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的某個(gè)主機(jī)。
網(wǎng)關(guān)的IP地址是具有路由功能的設(shè)備的IP地址痴突,具有路由功能的設(shè)備有路由器搂蜓、啟用了路由協(xié)議的服務(wù)器(實(shí)質(zhì)上相當(dāng)于一臺(tái)路由器)、代理服務(wù)器(也相當(dāng)于一臺(tái)路由器)辽装。
Windows固定IP
-
cmd
中輸入ipconfig /all
查看當(dāng)前IP和DNS - WiFi=>WLAN=>更改適配器選項(xiàng)=>屬性=>WLAN屬性=>IPV4
查看指定域名的ip地址
ping
解析順序是系統(tǒng)緩存--hosts--緩存服務(wù)器--主服務(wù)器--輔服務(wù)器
查到則直接返回帮碰,因此只會(huì)返回一條數(shù)據(jù)
nslookup
直奔dns進(jìn)行查詢,可以查到該域名所有對(duì)應(yīng)的ip(可能多個(gè))