一、socket的定義
Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它是一組接口。在設(shè)計(jì)模式中,Socket其實(shí)就是一個(gè)門(mén)面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對(duì)用戶(hù)來(lái)說(shuō),一組簡(jiǎn)單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議。所以,我們無(wú)需深入理解tcp/udp協(xié)議,socket已經(jīng)為我們封裝好了,我們只需要遵循socket的規(guī)定去編程,寫(xiě)出的程序自然就是遵循tcp/udp標(biāo)準(zhǔn)的。
補(bǔ)充:也有人將socket說(shuō)成ip+port,ip是用來(lái)標(biāo)識(shí)互聯(lián)網(wǎng)中的一臺(tái)主機(jī)的位置,而port是用來(lái)標(biāo)識(shí)這臺(tái)機(jī)器上的一個(gè)應(yīng)用程序,ip地址是配置到網(wǎng)卡上的,而port是應(yīng)用程序開(kāi)啟的,ip與port的綁定就標(biāo)識(shí)了互聯(lián)網(wǎng)中獨(dú)一無(wú)二的一個(gè)應(yīng)用程序,而程序的pid是同一臺(tái)機(jī)器上不同進(jìn)程或者線(xiàn)程的標(biāo)識(shí)
二、套接字發(fā)展史及分類(lèi)
套接字起源于 20 世紀(jì) 70 年代加利福尼亞大學(xué)伯克利分校版本的 Unix,即人們所說(shuō)的 BSD Unix。 因此,有時(shí)人們也把套接字稱(chēng)為“伯克利套接字”或“BSD 套接字”。一開(kāi)始,套接字被設(shè)計(jì)用在同 一臺(tái)主機(jī)上多個(gè)應(yīng)用程序之間的通訊。這也被稱(chēng)進(jìn)程間通訊,或 IPC。套接字有兩種(或者稱(chēng)為有兩個(gè)種族),分別是基于文件型的和基于網(wǎng)絡(luò)型的。