網(wǎng)絡(luò)基礎(chǔ)

一.IP和端口簡單介紹

????? IP:

????? 網(wǎng)絡(luò)中的設(shè)備的標(biāo)示;

??? ? IP:127.0.0.1(本機(jī)回環(huán)地址)? localhost

??? 端口號:

????? 用于標(biāo)示進(jìn)程的邏輯地址,不同的進(jìn)程的標(biāo)示;

????? 有效端口:0 ~ 65535, 其中 0~1024為系統(tǒng)端口或保留端口



二.數(shù)據(jù)傳輸示意圖

OSI網(wǎng)絡(luò)模型(7層模型)

【1】物理層:主要定義物理設(shè)備標(biāo)準(zhǔn),如網(wǎng)線的接口類型、光纖的接口類型、各種傳輸介質(zhì)的傳輸速率等。它的主要作用是傳輸比特流(就是由1、0轉(zhuǎn)化為電流強(qiáng)弱來進(jìn)行傳輸,到達(dá)目的地后在轉(zhuǎn)化為1、0,也就是我們常說的數(shù)模轉(zhuǎn)換與模數(shù)轉(zhuǎn)換),這一層的數(shù)據(jù)叫做比特。

【2】數(shù)據(jù)鏈路層:定義了如何讓格式化數(shù)據(jù)以進(jìn)行傳輸,以及如何讓控制對物理介質(zhì)的訪問,這一層通常還提供錯誤檢測和糾正,以確保數(shù)據(jù)的可靠傳輸。

【3】網(wǎng)絡(luò)層:在位于不同地理位置的網(wǎng)絡(luò)中的兩個主機(jī)系統(tǒng)之間提供連接和路徑選擇,Internet的發(fā)展使得從世界各站點(diǎn)訪問信息的用戶數(shù)大大增加,而網(wǎng)絡(luò)層正是管理這種連接的層。

【4】傳輸層:定義了一些傳輸數(shù)據(jù)的協(xié)議和端口號(WWW端口80等),如:TCP(傳輸控制協(xié)議,傳輸效率低,可靠性強(qiáng),用于傳輸可靠性要求高,數(shù)據(jù)量大的數(shù)據(jù)),UDP(用戶數(shù)據(jù)報協(xié)議,與TCP特性恰恰相反,用于傳輸可靠性要求不高,數(shù)據(jù)量小的數(shù)據(jù),如QQ聊天數(shù)據(jù)就是通過這種方式傳輸?shù)模?主要是將從下層接收的數(shù)據(jù)進(jìn)行分段和傳輸,到達(dá)目的地址后再進(jìn)行重組,常常把這一層數(shù)據(jù)叫做段。

【5】會話層:通過傳輸層(端口號:傳輸端口與接收端口)建立數(shù)據(jù)傳輸?shù)耐?,主要在你的系統(tǒng)之間發(fā)起會話或者接受會話請求(設(shè)備之間需要互相認(rèn)識可以是IP也可以是MAC或者是主機(jī)名)。

?【6】表示層:可確保一個系統(tǒng)的應(yīng)用層所發(fā)送的信息可以被另一個系統(tǒng)的應(yīng)用層讀取。例如,PC程序與另一臺計算機(jī)進(jìn)行通信,其中一臺計算機(jī)使用擴(kuò)展二一十進(jìn)制交換碼(EBCDIC),而另一臺則使用美國信息交換標(biāo)準(zhǔn)碼(ASCII)來表示相同的字符。如有必要,表示層會通過使用一種通格式來實(shí)現(xiàn)多種數(shù)據(jù)格式之間的轉(zhuǎn)換。

【7】應(yīng)用層: 是最靠 近用戶的OSI層,這一層為用戶的應(yīng)用程序(例如電子郵件、文件傳輸和終端仿真)提供網(wǎng)絡(luò)服務(wù)。


與tcp/ip5層模型的轉(zhuǎn)換



三.傳輸層協(xié)議UDP/TCP

? ? 1.UDP(不可靠傳輸協(xié)議 /用戶數(shù)據(jù)報協(xié)議) <可以類比為:發(fā)短信>

? ?? 特點(diǎn): 1).只管發(fā)送,不確認(rèn)對方是否接收的到;

????????????? 2).將數(shù)據(jù)源和目標(biāo)封裝成數(shù)據(jù)包中,不需要建立連接;

????????????? 3).每個數(shù)據(jù)包的大小限制在64k之內(nèi);

????????????? 4).因?yàn)椴恍枰⑦B接,所以數(shù)度快,同時也更容易丟包,不可靠;


??? 2.TCP(可靠傳輸協(xié)議 /傳輸控制協(xié)議) <可以類比為:打電話>

????? 特點(diǎn):1).建立連接,形成傳輸數(shù)據(jù)通道;

???????????????? 2).在連接中進(jìn)行大數(shù)據(jù)傳輸(數(shù)據(jù)大小不受限制);

???????????????? 3).通過三次握手完成連接,是可靠協(xié)議,安全送達(dá);

???????????????? 4).因?yàn)楸仨毥⑦B接,所以效率會稍低;


擴(kuò)展:

TCP建立連接三次握手流程:

? ? ? ? ? (1) 建立連接時,客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器確認(rèn);SYN:同步序列編號(Synchronize Sequence Numbers)。(客戶端告訴服務(wù)端:我要連接你)。

? ? ? ? ? (2)? 第二次握手服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1),同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包,此時服務(wù)器進(jìn)入SYN_RECV狀態(tài)。(服務(wù)端告訴客戶端:可以,你連接吧)。

? ? ? ???? (3)? 第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED(TCP連接成功)狀態(tài),完成三次握手。? (客戶端告訴服務(wù)端:好的,那我開始連接你了)。

????????? 完成三次握手,客戶端與服務(wù)器開始傳送數(shù)據(jù)。

TCP 3次握手示意圖

tcp為什么要三次握手?

注意: HTTP是基于TCP協(xié)議的,所以每次都是客戶端發(fā)送請求,服務(wù)器應(yīng)答,但是TCP還可以給其他應(yīng)用層提供服務(wù),即可能A、B在建立鏈接之后,誰都可能先開始通信。

  1.如果兩次,那么B無法確定B的信息A是否能收到,所以如果B先說話,可能后面的A都收不到,會出現(xiàn)問題 。

  2.如果四次,那么就造成了浪費(fèi),因?yàn)樵谌谓Y(jié)束之后,就已經(jīng)可以保證A可以給B發(fā)信息,A可以收到B的信息; B可以給A發(fā)信息,B可以收到A的信息。



TCP斷開連接四次揮手流程:

(1)客戶端A發(fā)送一個FIN,用來關(guān)閉客戶A到服務(wù)器B的數(shù)據(jù)傳送(報文段4)。(客戶端告訴服務(wù)端:沒有數(shù)據(jù)要發(fā)給你了)。

(2)服務(wù)器B收到這個FIN,它發(fā)回一個ACK,確認(rèn)序號為收到的序號加1。和SYN一樣,一個FIN將占用一個序號。(服務(wù)端告訴客戶端: 你的請求我收到了,但是我還沒準(zhǔn)備好,請繼續(xù)你等我的消息,服務(wù)端可能還有數(shù)據(jù)沒發(fā)完,所以這里不能夠直接關(guān)閉)。

(3)服務(wù)器B關(guān)閉與客戶端A的連接,發(fā)送一個FIN給客戶端A。(服務(wù)端告訴客戶端: 我的數(shù)據(jù)都發(fā)完了,準(zhǔn)備好關(guān)閉連接了)。

(4)客戶端A發(fā)回ACK報文確認(rèn),并將確認(rèn)序號設(shè)置為收到序號加1。(客戶端告訴服務(wù)端:我收到了,那我斷開了,拜拜)。


https://blog.csdn.net/qzcsu/article/details/72861891(4次揮手)

1.為什么建立連接協(xié)議是三次握手,而關(guān)閉連接卻是四次握手呢?

???????? 這是因?yàn)榉?wù)端的LISTEN狀態(tài)下的SOCKET當(dāng)收到SYN報文的連接請求后,它可以把ACK和SYN(ACK起應(yīng)答作用,而SYN起同步作用)放在一個報文里來發(fā)送。但關(guān)閉連接時,當(dāng)收到對方的FIN報文通知時,它僅僅表示對方?jīng)]有數(shù)據(jù)發(fā)送給你了;但未必你所有的數(shù)據(jù)都全部發(fā)送給對方了,所以你可能未必會馬上會關(guān)閉SOCKET,也即你可能還需要發(fā)送一些數(shù)據(jù)給對方之后,再發(fā)送FIN報文給對方來表示你同意現(xiàn)在可以關(guān)閉連接了,所以它這里的ACK報文和FIN報文多數(shù)情況下都是分開發(fā)送的。


四.Socket(套接字層/插座)

??????? 官方解釋:網(wǎng)絡(luò)上的兩個程序通過一個雙向的通信連接實(shí)現(xiàn)數(shù)據(jù)的交換,這個連接的一端稱為一個socket。(什么鬼?不理解?)

????? ? 自己的理解:? 所謂套接字層,由于在OSI網(wǎng)絡(luò)7層模型中找不到scoket的位置,socket應(yīng)該是居于應(yīng)用層和傳輸層之間, socket就是兩個程序間的通訊管道( ip+ 端口 == socket)。



socket通訊示意圖


五.TCP/UDP ,HTTP, Socket區(qū)別

三者從本質(zhì)上來說沒有可比性,只是很多人概念模糊,區(qū)分不開。

TPC/IP協(xié)議是傳輸層協(xié)議,主要解決數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸;

socket則是建立通訊管道,對TCP/IP協(xié)議的封裝和應(yīng)用,有了通訊管道,我們才能使用TCP/IP協(xié)議;

HTTP是應(yīng)用層協(xié)議,主要解決如何包裝數(shù)據(jù),HTTP協(xié)議是建立在TCP協(xié)議之上的一種應(yīng)用層協(xié)議。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容