TCP和UDP和IP和HTTP和socket
一、計算機網(wǎng)絡(luò)的兩種模型
在計算機網(wǎng)絡(luò)里,有兩種常見的參考模型即:OSI參考模型和TCP/IP參考模型。TCP本身是傳輸層的協(xié)議, 而TCP/IP是一種網(wǎng)絡(luò)參考模型。
1.?OSI七層參考模型:
? ? ? 主要是用來清晰的了解網(wǎng)絡(luò)結(jié)構(gòu)的分層。這一模型和相關(guān)的協(xié)議并沒有被使用, 但它具有普遍的意義就是對于討論網(wǎng)絡(luò)的體系結(jié)構(gòu)中的每一層的功能。它將服務(wù),接口和協(xié)議的概念區(qū)分開來。每一層的接口都告訴它上面的進程如何訪問本層。而且每層用到的對等協(xié)議是本層自己內(nèi)部的事情,不影響上層。它同時支持面向連接和無連接的通信,但是傳輸層只支持面向連接的通信。
2.?TCP/IP?模型:
? ? ? 分為四層協(xié)議,分別為鏈路層,網(wǎng)絡(luò)層,傳輸層,應(yīng)用層。它對服務(wù),接口和協(xié)議沒有明確的區(qū)分,下圖也是人們對它進行了改進,使它更像OSI。它的網(wǎng)絡(luò)層只支持一種面向無連接的服務(wù), 但傳輸層同時支持TCP(面向連接)和UDP(面向無連接)兩種通信模式。
二、TCP和UDP的區(qū)別和聯(lián)系
1. 從理論看區(qū)別:
TCP是面向連接的,在傳輸數(shù)據(jù)前必須建立連接,傳輸完成后必須關(guān)閉連接。且連接建立需要經(jīng)過3次握手, 連接斷開需要4次揮手。連接方式是點對點的, 無法做到多播。
UDP面向無連接,當(dāng)一端需要發(fā)送報文時, 通過UDP套接字發(fā)送報文,UDP不保證有序, 不保證一定被接收端收到,且沒有擁塞的控制。
2. 從編碼上區(qū)別:
?
二、TCP和IP的區(qū)別和聯(lián)系
1. TCP協(xié)議:
傳輸控制協(xié)議(Transmission Control Protocal),是一種基于IP協(xié)議的傳輸層協(xié)議。主要特點是3次握手建立連接,4次揮手?jǐn)嚅_連接。
2. IP協(xié)議:
因特網(wǎng)協(xié)議(Internet Protocol),位于網(wǎng)絡(luò)層,IP協(xié)議規(guī)定了數(shù)據(jù)傳輸時的基本單元(數(shù)據(jù)包)和格式,IP協(xié)議還定義了數(shù)據(jù)包的遞交辦法和路由選擇。
總結(jié):整個網(wǎng)絡(luò)中的傳輸流程是,IP層接收由更低層(網(wǎng)絡(luò)接口層例如以太網(wǎng)設(shè)備驅(qū)動程序)發(fā)來的數(shù)據(jù)包,并把該數(shù)據(jù)包發(fā)送到更高層—TCP層;相反,IP層也把從TCP接收來的數(shù)據(jù)包傳送到更低層。也就是,IP提供基本的數(shù)據(jù)傳送,而高層的TCP對這些數(shù)據(jù)包做進一步加工,如提供端口號等等。
三、HTTP和socket
1. HTTP協(xié)議:
HTTP協(xié)議是應(yīng)用層協(xié)議,HTTP協(xié)議是hypertexttransferprotocol(超文本傳輸協(xié)議)的簡寫。它是建立在TCP/IP協(xié)議之上的一種應(yīng)用協(xié)議。
用于定義WEB瀏覽器和服務(wù)器之間交換數(shù)據(jù)的過程,客戶端連上web服務(wù)器后,若想獲得web服務(wù)器中的某個資源,需遵守一定的通訊格式,HTTP協(xié)議用于定義客戶端與web服務(wù)器通訊的格式。
2. socket:
? ? ? 套接字(socket)是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本操作單元。它是網(wǎng)絡(luò)通信過程中端點的抽象表示,包含進行網(wǎng)絡(luò)通信必須的五種信息:連接使用的協(xié)議,本地主機的IP地址,本地進程的協(xié)議端口,遠地主機的IP地址,遠地進程的協(xié)議端口。?
? ? ??創(chuàng)建Socket連接時,可以指定使用的傳輸層協(xié)議,Socket可以支持不同的傳輸層協(xié)議(TCP或UDP)。
? ? ?
3. 區(qū)分:?
? ? ?Socket只是操作系統(tǒng)提供給應(yīng)用程序進行網(wǎng)絡(luò)通信的抽象API。Socket是對TCP/IP協(xié)議的封裝,Socket本身并不是協(xié)議,而是一個調(diào)用接口(API),通過Socket,我們才能使用TCP/IP協(xié)議。Socket連接中,點對點的兩方是平等的,服務(wù)器也可以主動直接將數(shù)據(jù)傳送給客戶端。就是所謂的長連接,理論上客戶端和服務(wù)器端一旦建立起連接,在通信雙方中的任何一方主動關(guān)閉連接之前,不會主動斷掉。
? ? ?HTTP是基于TCP的應(yīng)用層協(xié)議。大部分情況下,一次HTTP請求的完成經(jīng)過了建立TCP鏈接->客戶端發(fā)送報文->服務(wù)端返回報文->服務(wù)端或客戶端關(guān)閉此連接這個過程,由于每次都要建立連接,并在完成一次請求響應(yīng)后關(guān)閉連接,所以大家稱為“短連接”。若雙方建立的是HTTP連接,則服務(wù)器需要等到客戶端發(fā)送一次請求后才能將數(shù)據(jù)傳回給客戶端,因此,客戶端定時向服務(wù)器端發(fā)送連接請求,不僅可以保持在線,同時也是在“詢問”服務(wù)器是否有新的數(shù)據(jù),如果有就將數(shù)據(jù)傳給客戶端。
HTTP是轎車,提供了封裝或者顯示數(shù)據(jù)的形式,是一種格式;socket是發(fā)動機,提供了網(wǎng)絡(luò)通信的能力,是一套接口。
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/kikis/p/10710959.html
《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的TCP和UDP和IP和HTTP和socket的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。