百科解釋
套接字,簡(jiǎn)單的說(shuō)就是通信的兩方的一種約定,用套接字中的相關(guān)函數(shù)來(lái)完成通信過(guò)程 應(yīng)用層通過(guò)傳輸層進(jìn)行數(shù)據(jù)通信時(shí),TCP和UDP會(huì)遇到同時(shí)為多個(gè)應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問(wèn)題。多個(gè)TCP連接或多個(gè)應(yīng)用程序進(jìn)程可能需要通過(guò)同一個(gè) TCP協(xié)議端口傳輸數(shù)據(jù)。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與TCP/IP協(xié)議交互提供了稱(chēng)為套接字(Socket)的接口。 區(qū)分不同應(yīng)用程序進(jìn)程間的網(wǎng)絡(luò)通信和連接,主要有3個(gè)參數(shù):通信的目的IP地址、使用的傳輸層協(xié)議(TCP或UDP)和使用的端口號(hào)。Socket原意是 “插座”。通過(guò)將這3個(gè)參數(shù)結(jié)合起來(lái),與一個(gè)“插座”Socket綁定,應(yīng)用層就可以和傳輸層通過(guò)套接字接口,區(qū)分來(lái)自不同應(yīng)用程序進(jìn)程或網(wǎng)絡(luò)連接的通信,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)牟l(fā)服務(wù)。 Socket可以看成在兩個(gè)程序進(jìn)行通訊連接中的一個(gè)端點(diǎn),一個(gè)程序?qū)⒁欢涡畔?xiě)入Socket中,該Socket將這段信息發(fā)送給另外一個(gè)Socket中,使這段信息能傳送到其他程序中。如圖1: 我們來(lái)分析一下圖1,Host A上的程序A將一段信息寫(xiě)入Socket中,Socket的內(nèi)容被Host A的網(wǎng)絡(luò)管理軟件訪問(wèn),并將這段信息通過(guò)Host A的網(wǎng)絡(luò)接口卡發(fā)送到Host B,Host B的網(wǎng)絡(luò)接口卡接收到這段信息后,傳送給Host B的網(wǎng)絡(luò)管理軟件,網(wǎng)絡(luò)管理軟件將這段信息保存在Host B的Socket中,然后程序B才能在Socket中閱讀這段信息。 假設(shè)在圖1的網(wǎng)絡(luò)中添加第三個(gè)主機(jī)Host C,那么Host A怎么知道信息被正確傳送到Host B而不是被傳送到Host C中了呢?基于TCP/IP網(wǎng)絡(luò)中的每一個(gè)主機(jī)均被賦予了一個(gè)唯一的IP地址,IP地址是一個(gè)32位的無(wú)符號(hào)整數(shù),由于沒(méi)有轉(zhuǎn)變成二進(jìn)制,因此通常以小數(shù)點(diǎn)分隔,如:198.163.227.6,正如所見(jiàn)IP地址均由四個(gè)部分組成,每個(gè)部分的范圍都是0-255,以表示8位地址。 值得注意的是IP地址都是32位地址,這是IP協(xié)議版本4(簡(jiǎn)稱(chēng)Ipv4)規(guī)定的,目前由于IPv4地址已近耗盡,所以IPv6地址正逐漸代替Ipv4地址,Ipv6地址則是128位無(wú)符號(hào)整數(shù)。 假設(shè)第二個(gè)程序被加入圖1的網(wǎng)絡(luò)的Host B中,那么由Host A傳來(lái)的信息如何能被正確的傳給程序B而不是傳給新加入的程序呢?這是因?yàn)槊恳粋(gè)基于TCP/IP網(wǎng)絡(luò)通訊的程序都被賦予了唯一的端口和端口號(hào),端口是一個(gè)信息緩沖區(qū),用于保留Socket中的輸入/輸出信息,端口號(hào)是一個(gè)16位無(wú)符號(hào)整數(shù),范圍是0-65535,以區(qū)別主機(jī)上的每一個(gè)程序(端口號(hào)就像房屋中的房間號(hào)),低于256的短口號(hào)保留給標(biāo)準(zhǔn)應(yīng)用程序,比如pop3的端口號(hào)就是110,每一個(gè)套接字都組合進(jìn)了IP地址、端口、端口號(hào),這樣形成的整體就可以區(qū)別每一個(gè)套接字。
移動(dòng)通信網(wǎng) | 通信人才網(wǎng) | 更新日志 | 團(tuán)隊(duì)博客 | 免責(zé)聲明 | 關(guān)于詞典 | 幫助