網(wǎng)絡(luò)協(xié)議
OSI七層結(jié)構(gòu)模型(從上到下)
應(yīng)用層
表示層
會(huì)話層
傳輸層
網(wǎng)絡(luò)層
數(shù)據(jù)鏈路層
物理層
各層協(xié)議
物理層:以太網(wǎng) · 調(diào)制解調(diào)器 · 電力線通信(PLC) · SONET/SDH · G.709 · 光導(dǎo)纖維 · 同軸電纜 · 雙絞線等
數(shù)據(jù)鏈路層:Wi-Fi(IEEE 802.11) · WiMAX(IEEE 802.16) ·ATM · DTM · 令牌環(huán) · 以太網(wǎng) ·FDDI · 幀中繼 · GPRS · EVDO ·HSPA · HDLC · PPP · L2TP ·PPTP · ISDN·STP 等
網(wǎng)絡(luò)層協(xié)議:IP (IPv4 · IPv6) · ICMP· ICMPv6·IGMP ·IS-IS · IPsec · ARP · RARP等
傳輸層協(xié)議:TCP · UDP · TLS · DCCP · SCTP · RSVP · OSPF 等
應(yīng)用層協(xié)議:DHCP ·DNS · FTP · Gopher · HTTP· IMAP4 · IRC · NNTP · XMPP ·POP3 · SIP · SMTP ·SNMP · SSH ·TELNET · RPC · RTCP · RTP ·RTSP· SDP · SOAP · GTP · STUN · NTP· SSDP · BGP · RIP 等
協(xié)議詳情
TCP/IP協(xié)議(Transmission Control Protocol/Internet Protocol):
中譯名為傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議,又名網(wǎng)絡(luò)通訊協(xié)議,是Internet最基本的協(xié)議
不是TCP和IP這兩個(gè)協(xié)議的合稱,而是指因特網(wǎng)整個(gè)TCP/IP協(xié)議族
-
OSI七層參考模型:物理層、數(shù)據(jù)鏈路層(網(wǎng)絡(luò)接口層)、網(wǎng)絡(luò)層(網(wǎng)絡(luò)層)、傳輸層(傳輸層)、會(huì)話層、表示層和應(yīng)用層(應(yīng)用層)。而TCP/IP通訊協(xié)議采用了4層的層級(jí)結(jié)構(gòu):網(wǎng)絡(luò)接口層、網(wǎng)絡(luò)層、傳輸層、應(yīng)用層,每一層都呼叫它的下一層所提供的網(wǎng)絡(luò)來(lái)完成自己的需求。TCP/IP結(jié)構(gòu)
-
常用協(xié)議以及層次關(guān)系各層對(duì)應(yīng)協(xié)議
IP(Internet Protocol)
- Internet層協(xié)議
- Internet協(xié)議,負(fù)責(zé)TCP/IP主機(jī)間提供數(shù)據(jù)報(bào)服務(wù),進(jìn)行數(shù)據(jù)封裝并產(chǎn)生協(xié)議頭,IP數(shù)據(jù)包中含有發(fā)送它的主機(jī)的地址(源地址)和接收它的主機(jī)的地址(目的地址)
ICMP(Internet Control Message Protocol)
- Internet層協(xié)議
- Internet控制報(bào)文協(xié)議。ICMP協(xié)議其實(shí)是IP協(xié)議的的附屬協(xié)議,IP協(xié)議用它來(lái)與其它主機(jī)或路由器交換錯(cuò)誤報(bào)文和其它的一些網(wǎng)絡(luò)情況,在ICMP包中攜帶了控制信息和故障恢復(fù)信息
- PING是最常用的基于ICMP的服務(wù)
ARP(Address Resolution Protocol)
- Internet層協(xié)議
- 地址解析協(xié)議
RARP(Reverse Address Resolution Protocol)
- Internet層協(xié)議
- 逆向地址解析協(xié)議
TCP(Transmission Control Protocol)
傳輸層(主機(jī)-主機(jī)層)協(xié)議
傳輸控制協(xié)議
-
面向連接的可靠通信協(xié)議,通過(guò)三次握手建立連接TCP三次握手
由于TCP是面向連接的所以只能用于端到端的通訊
UDP(User Datagram Protocol)
- 傳輸層(主機(jī)-主機(jī)層)協(xié)議
- 用戶數(shù)據(jù)報(bào)協(xié)議
- 面向無(wú)連接的不可靠通訊協(xié)議
- 由于通訊不需要連接,所以可以實(shí)現(xiàn)廣播發(fā)送
HTTP(HyperText Transfer Protocol)
- 應(yīng)用層協(xié)議
- 超文本傳輸協(xié)議,默認(rèn)端口80
- 是用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議
- 是客戶端瀏覽器或其他程序與Web服務(wù)器之間的應(yīng)用層通信協(xié)議
- HTTP連接最顯著的特點(diǎn)是客戶端發(fā)送的每次請(qǐng)求都需要服務(wù)器回送響應(yīng),在請(qǐng)求結(jié)束后,會(huì)主動(dòng)釋放連接。從建立連接到關(guān)閉連接的過(guò)程稱為“一次連接”“短連接”。
FTP(File Transfer Protocol)
- 應(yīng)用層協(xié)議
- 文件傳輸協(xié)議
其他重點(diǎn)
socket(套接字)
- 計(jì)算機(jī)專業(yè)術(shù)語(yǔ),本身并不是協(xié)議,而是一個(gè)調(diào)用接口(API),Socket的出現(xiàn)只是使得程序員更方便地使用TCP/IP協(xié)議棧而已
- 網(wǎng)絡(luò)上的兩個(gè)程序通過(guò)一個(gè)雙向的通信連接實(shí)現(xiàn)數(shù)據(jù)的交換,這個(gè)連接的一端稱為一個(gè)socket
- 建立網(wǎng)絡(luò)通信連接至少要一對(duì)端口號(hào)(socket)
- 套接字(socket)是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本操作單元。它是網(wǎng)絡(luò)通信過(guò)程中端點(diǎn)的抽象表示,包含進(jìn)行網(wǎng)絡(luò)通信必須的五種信息:連接使用的協(xié)議,本地主機(jī)的IP地址,本地進(jìn)程的協(xié)議端口,遠(yuǎn)地主機(jī)的IP地址,遠(yuǎn)地進(jìn)程的協(xié)議端口
- 創(chuàng)建Socket連接時(shí),可以指定使用的傳輸層協(xié)議,Socket可以支持不同的傳輸層協(xié)議(TCP或UDP),當(dāng)使用TCP協(xié)議進(jìn)行連接時(shí),該Socket連接就是一個(gè)TCP連接
- 通常情況下socket連接就是TCP連接,socket本質(zhì)是編程接口(API),對(duì)TCP/IP的封裝,TCP/IP也要提供可供程序員做網(wǎng)絡(luò)開(kāi)發(fā)所用的接口,這就是Socket編程接口
- 用于描述IP地址和端口,是一個(gè)通信鏈的句柄,可以用來(lái)實(shí)現(xiàn)不同虛擬機(jī)或不同計(jì)算機(jī)之間的通信。在Internet上的主機(jī)一般運(yùn)行了多個(gè)服務(wù)軟件,同時(shí)提供幾種服務(wù)。每種服務(wù)都打開(kāi)一個(gè)Socket,并綁定到一個(gè)端口上,不同的端口對(duì)應(yīng)于不同的服務(wù)。
- 根據(jù)連接啟動(dòng)的方式以及本地套接字要連接的目標(biāo),套接字之間的連接過(guò)程可以分為三個(gè)步驟:服務(wù)器監(jiān)聽(tīng),客戶端請(qǐng)求,連接確認(rèn)
SOCKET連接與TCP連接
- 創(chuàng)建Socket連接時(shí),可以指定使用的傳輸層協(xié)議,Socket可以支持不同的傳輸層協(xié)議(TCP或UDP),當(dāng)使用TCP協(xié)議進(jìn)行連接時(shí),該Socket連接就是一個(gè)TCP連接
Socket連接與HTTP連接(此段有點(diǎn)難以理解)
由于通常情況下Socket連接就是TCP連接,因此Socket連接一旦建立,通信雙方即可開(kāi)始相互發(fā)送數(shù)據(jù)內(nèi)容,直到雙方連接斷開(kāi)。
但在實(shí)際網(wǎng)絡(luò)應(yīng)用中,客戶端到服務(wù)器之間的通信往往需要穿越多個(gè)中間節(jié)點(diǎn),例如路由器、網(wǎng)關(guān)、防火墻等,大部分防火墻默認(rèn)會(huì)關(guān)閉長(zhǎng)時(shí)間處于非活躍狀態(tài)的連接而導(dǎo) 致 Socket 連接斷連,因此需要通過(guò)輪詢告訴網(wǎng)絡(luò),該連接處于活躍狀態(tài)。
而HTTP連接使用的是“請(qǐng)求—響應(yīng)”的方式,不僅在請(qǐng)求時(shí)需要先建立連接,而且需要客戶端向服務(wù)器發(fā)出請(qǐng)求后,服務(wù)器端才能回復(fù)數(shù)據(jù)。
很多情況下,需要服務(wù)器端主動(dòng)向客戶端推送數(shù)據(jù),保持客戶端與服務(wù)器數(shù)據(jù)的實(shí)時(shí)與同步。此時(shí)若雙方建立的是Socket連接,服務(wù)器就可以直接將數(shù)據(jù)傳送給客戶端,連接可能已經(jīng)斷開(kāi);若雙方建立的是HTTP連接,則服務(wù)器需要等到客戶端發(fā)送一次請(qǐng)求后才能將數(shù)據(jù)傳回給客戶端,因此,客戶端定時(shí)向服務(wù)器端發(fā)送連接請(qǐng)求,不僅可以保持在線,同時(shí)也是在“詢問(wèn)”服務(wù)器是否有新的數(shù)據(jù),如果有就將數(shù)據(jù)傳給客戶端。
HTTP與TCP
Http協(xié)議是建立在TCP協(xié)議基礎(chǔ)之上的,當(dāng)瀏覽器需要從服務(wù)器獲取網(wǎng)頁(yè)數(shù)據(jù)的時(shí)候,會(huì)發(fā)出一次Http請(qǐng)求。Http會(huì)通過(guò)TCP建立起一個(gè)到服務(wù)器的連接通道,當(dāng)本次請(qǐng)求需要的數(shù)據(jù)完畢后,Http會(huì)立即將TCP連接斷開(kāi),這個(gè)過(guò)程是很短的。所以Http連接是一種短連接,是一種無(wú)狀態(tài)的連接
隨著時(shí)間的推移,html頁(yè)面變得復(fù)雜了,每次都需要建立一次tcp連接就顯得低效了,從HTTP/1.1起,默認(rèn)都開(kāi)啟了Keep-Alive,保持連接特性.簡(jiǎn)單地說(shuō),當(dāng)一個(gè)網(wǎng)頁(yè)打開(kāi)完成后,客戶端和服務(wù)器之間用于傳輸HTTP數(shù)據(jù)的TCP連接不會(huì)關(guān)閉,但是Keep-Alive不會(huì)永久保持連接,它有一個(gè)保持時(shí)間.后來(lái),通過(guò)Session, Cookie等相關(guān)技術(shù),也能保持一些用戶的狀態(tài)。但是還是每次都使用一個(gè)連接,依然是無(wú)狀態(tài)連接。
-
http是應(yīng)用層協(xié)議, tcp是傳輸層。 http使用tcp傳輸文本數(shù)據(jù)http與tcp聯(lián)系
百度百科比喻:HTTP是轎車(chē),提供了封裝或者顯示數(shù)據(jù)的具體形式;Socket是發(fā)動(dòng)機(jī),提供了網(wǎng)絡(luò)通信的能力
https 和 http
https是對(duì)http數(shù)據(jù)進(jìn)行了加密再傳輸; 對(duì)端收到tcp數(shù)據(jù)后, 再進(jìn)行相應(yīng)的解密/驗(yàn)證
雜亂重點(diǎn)
TCP是底層通訊協(xié)議,定義的是數(shù)據(jù)傳輸和連接方式的規(guī)范
HTTP是應(yīng)用層協(xié)議,定義的是傳輸數(shù)據(jù)的內(nèi)容的規(guī)范
HTTP協(xié)議中的數(shù)據(jù)是利用TCP協(xié)議傳輸?shù)?,所以支持HTTP也就一定支持TCP
HTTP支持的是www服務(wù)
而TCP/IP是協(xié)議 它是Internet國(guó)際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ)。TCP/IP是網(wǎng)絡(luò)中使用的基本的通信協(xié)議。
TCP/IP實(shí)際上是一組協(xié)議,它包括上百個(gè)各種功能的協(xié)議,如:遠(yuǎn)程登錄、文件傳輸和電子郵件等,而TCP協(xié)議和IP協(xié)議是保證數(shù)據(jù)完整傳輸?shù)膬蓚€(gè)基本的重要協(xié)議。通常說(shuō)TCP/IP是Internet協(xié)議族,而不單單是TCP和IP。
參考
待補(bǔ)
阿里云服務(wù)器免費(fèi)領(lǐng)了,企業(yè)新用戶:4核-8G-5M,個(gè)人用戶:2核-4G-1M
點(diǎn)擊立即領(lǐng)取
免費(fèi)阿里云服務(wù)器立即領(lǐng)取




