一、網(wǎng)絡(luò)互聯(lián)模型
成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、黃驊網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場景定制、成都商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為黃驊等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。因特網(wǎng)在剛面世時,只有同一制造商生產(chǎn)的計算機才能彼此通信,制定網(wǎng)絡(luò)互聯(lián)模型的目的就是為異種的計算機互連提供一個共同的基礎(chǔ)和標(biāo)準框架,并為保持相關(guān)標(biāo)準的一致性和兼容性提供共同的參考。
互聯(lián)參考模型:
OSI七層模型(Open System Interconnect):應(yīng)用層、表示層、會話層、傳輸層、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層、物理層
DoD四層模型:是OSI七層模型的濃縮版,包括 進程/應(yīng)用層、主機到主機層、因特網(wǎng)層、網(wǎng)絡(luò)接入層
以上兩種模型是層次型的,分層模型的優(yōu)點主要在于:
①將網(wǎng)絡(luò)通信過程劃分為更小、更簡單的組件,這有助于組件的開發(fā)、設(shè)計和故障的排除
②定義了模型每層執(zhí)行的功能,從而鼓勵了行業(yè)標(biāo)準化
③讓不同類型的網(wǎng)絡(luò)硬件和軟件能夠彼此通信
④避免對一層的修改而影響其它層
二、傳輸層協(xié)議
目前主流的傳輸層協(xié)議有TCP和UDP。SCTP是TCP的改進版,DCCP是一個用來取代UDP的新的非可靠傳輸協(xié)議
1、UDP(User Data Protocol,用戶數(shù)據(jù)報協(xié)議):一種無連接的協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù),不建立會話,不對數(shù)據(jù)分段,不編號不排序,也就是說,當(dāng)報文發(fā)送之后,是無法得知其是否安全完整到達的。但正因為UDP協(xié)議的控制選項較少,在數(shù)據(jù)傳輸過程中延遲小、數(shù)據(jù)傳輸效率高,適合對可靠性要求不高的應(yīng)用程序,或者可以保障可靠性的應(yīng)用程序
常用的UDP端口號有:DNS 53,TFTP 69,SNMP 161
2、TCP(Transmission Control Protocol,傳輸控制協(xié)議):一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議。
TCP實現(xiàn)可靠性的機制:
①以通信雙方之間建立連接
②TCP把數(shù)據(jù)流分割為適當(dāng)長度的報文段(通常受該計算機連接的網(wǎng)絡(luò)的數(shù)據(jù)鏈路層的大傳輸單元(MTU)的限制)。
③TCP為了保證不發(fā)生丟包,就給每個報文段一個序號,同時序號也保證了接收端的按序接收。TCP報文段的到達也可能會失序,如有必要,TCP將對收到的報文段進行重新排序,將收到的數(shù)據(jù)以正確的順序交給應(yīng)用層
④接收端對已成功收到的包發(fā)回一個相應(yīng)的確認(ACK);如果發(fā)送端在合理的往返時延(RTT)內(nèi)未收到確認,那么對應(yīng)的數(shù)據(jù)包就被假設(shè)為已丟失將會被進行重傳。
⑤TCP用校驗和函數(shù)來檢驗報文段是否有錯誤,在發(fā)送和接收時都要計算校驗和,接收端若發(fā)現(xiàn)校驗和有差錯,將丟棄這個報文段和不確認收到此報文段。
⑥TCP還能提供流量控制:緩沖區(qū)(發(fā)送緩沖區(qū)、接收緩沖區(qū))和滑動窗口
⑦在擁塞控制上,采用慢啟動和擁塞避免算法
▲TCP在正式傳輸數(shù)據(jù)前需要經(jīng)過三次握手建立連接,其過程如下:
①客戶端發(fā)送SYN(SEQ=x)報文給服務(wù)器端,進入SYN_SEND狀態(tài)。
②服務(wù)器端收到SYN報文,回應(yīng)一個SYN(SEQ=y)ACK(ACK=x+1)報文,進入SYN_RECV狀態(tài)。
③客戶端收到服務(wù)器端的SYN報文,回應(yīng)一個ACK(ACK=y+1)報文,進入Established狀態(tài)。
▲在數(shù)據(jù)傳輸完畢后需要經(jīng)過四次握手終止連接,其過程如下:
①某個應(yīng)用進程首先調(diào)用close(),稱該端執(zhí)行“主動關(guān)閉”(active close)。該端的TCP于是發(fā)送一個FIN分節(jié)(文件結(jié)束符),表示數(shù)據(jù)發(fā)送完畢。
②接收到這個FIN的對端執(zhí)行 “被動關(guān)閉”(passive close),這個FIN由TCP確認。
注意:FIN的接收也作為一個文件結(jié)束符(end-of-file)傳遞給接收端應(yīng)用進程,放在已排隊等候該應(yīng)用進程接收的任何其他數(shù)據(jù)之后,因為,F(xiàn)IN的接收意味著接收端應(yīng)用進程在相應(yīng)連接上再無額外數(shù)據(jù)可接收。
③一段時間后,接收到這個文件結(jié)束符的應(yīng)用進程將調(diào)用close關(guān)閉它的套接字,這導(dǎo)致它的TCP也發(fā)送一個FIN。
④接收這個最終FIN的原發(fā)送端TCP(即執(zhí)行主動關(guān)閉的那一端)確認這個FIN。
▲TCP協(xié)議通過tcp狀態(tài)來標(biāo)記當(dāng)前處于通信過程的哪個階段:
CLOSED, LISTEN, SYN_SENT(主動打開), SYN_RECV, ESTABLISHED, FIN_WAIT1, CLOSE_WAIT, FIN_WAIT2, LAST_ACK, TIME_WAIT, CLOSED
三、套接字
1、套接字(socket):應(yīng)用層通過傳輸層進行數(shù)據(jù)通信時,TCP和UDP會遇到同時會多個應(yīng)用程序進程提供并發(fā)服務(wù)的問題。區(qū)分不同的應(yīng)用程序進程間的網(wǎng)絡(luò)通信和連接,主要有三個參數(shù):通信的目標(biāo)IP地址、使用的傳輸層協(xié)議(TCP或UDP)、目標(biāo)端口號,這種組合稱為套接字。
session:ip:port<==>ip:port
端口分類:
眾所周知的端口:0~1023,管理員才有權(quán)限使用,永久地分配給某應(yīng)用使用;
注冊端口:1024~41951:只有一部分被注冊,分配原則上非特別嚴格;
動態(tài)端口或私有端口:41952+
/proc/sys/net/ipv4/ip_local_port_range:定義兩個數(shù)字,表示可以做為臨時端口的起始數(shù)字和結(jié)束數(shù)字
2、套接字類型:
tcp socket(流式)
udp socket(數(shù)據(jù)報式)
raw socket(不使用TCP或UDP協(xié)議,應(yīng)用層的應(yīng)用程序直接通達IP層)
3、socket通信在domain中實現(xiàn),不同domain的socket地址格式不同,在unix domain中是一個文件路徑名,在ipv4 domain中是ipv4地址加端口號,在ipv6 domain中是ipv6地址加端口號
domain:
Unix domain:基于socket機制實現(xiàn)同一主機不同進程間通信的一種方式;AF_UNIX,AF_LOCAL
IPv4 domain:AF_INET,基于socket機制借助于ipv4協(xié)議實現(xiàn)不同主機(也可是同一主機)上的進程間的通信
IPv6 domain:AF_INET6
▲雖然IPv4 domain能實現(xiàn)不同或同一主機進程間通信,但是對于同一主機進程間的通信應(yīng)盡量使用Unix domain,socket在Unix domain中實現(xiàn)通信的方式就是在內(nèi)存中創(chuàng)建一個可讀寫的文件作為進程間交互的中介,這種方式繞過了網(wǎng)絡(luò)協(xié)議棧,節(jié)省了系統(tǒng)資源,提高了通信效率。
4、tcp socket通信相關(guān)的系統(tǒng)調(diào)用
socket():創(chuàng)建一個新的socket
bind():綁定于一個套接字地址上(服務(wù)器端會用到)
listen():監(jiān)聽套接字
accept():接收連接請求
connect():發(fā)起連接請求
close():關(guān)閉連接
read()和write():recv(), send(), recvfrom(), sendto()
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
本文標(biāo)題:TCP及socket通信原理-創(chuàng)新互聯(lián)
文章URL:http://www.rwnh.cn/article12/ccsgdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、用戶體驗、靜態(tài)網(wǎng)站、網(wǎng)站收錄、商城網(wǎng)站、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容