iis5.1發(fā)布網(wǎng)站建設(shè)一個(gè)網(wǎng)站的具體步驟
典型的TCP/IP四層模型的通信過程。
發(fā)送方、接收方依賴IP:Port來標(biāo)識,即將本地的socket綁定到對應(yīng)的IP端口上,發(fā)送數(shù)據(jù)時(shí),指定對方的IP端口,經(jīng)過Internet,可以根據(jù)此IP端口最終找到接收方;接收數(shù)據(jù)時(shí),可以從數(shù)據(jù)包中獲取到發(fā)送方的IP端口。
發(fā)送方通過系統(tǒng)調(diào)用send()將原始數(shù)據(jù)發(fā)送到操作系統(tǒng)內(nèi)核緩沖區(qū)中。內(nèi)核緩沖區(qū)從上到下依次經(jīng)過TCP層、IP層、鏈路層的編碼,分別添加對應(yīng)的頭部信息,經(jīng)過網(wǎng)卡將一個(gè)數(shù)據(jù)包發(fā)送到網(wǎng)絡(luò)中。經(jīng)過網(wǎng)絡(luò)路由到接收方的網(wǎng)卡。網(wǎng)卡通過系統(tǒng)中斷將數(shù)據(jù)包通知到接收方的操作系統(tǒng),再沿著發(fā)送方編碼的反方向進(jìn)行解碼,即依次經(jīng)過鏈路層、IP層、TCP層去除頭部、檢查校驗(yàn)等,最終將原始數(shù)據(jù)上報(bào)到接收方進(jìn)程。
?
2.??AF_UNIX域socket通信過程
典型的本地IPC,類似于管道,依賴路徑名標(biāo)識發(fā)送方和接收方。即發(fā)送數(shù)據(jù)時(shí),指定接收方綁定的路徑名,操作系統(tǒng)根據(jù)該路徑名可以直接找到對應(yīng)的接收方,并將原始數(shù)據(jù)直接拷貝到接收方的內(nèi)核緩沖區(qū)中,并上報(bào)給接收方進(jìn)程進(jìn)行處理。同樣的接收方可以從收到的數(shù)據(jù)包中獲取到發(fā)送方的路徑名,并通過此路徑名向其發(fā)送數(shù)據(jù)。
?
3.??相同點(diǎn)
操作系統(tǒng)提供的接口socket(),bind(),connect(),accept(),send(),recv(),以及用來對其進(jìn)行多路復(fù)用事件檢測的select(),poll(),epoll()都是完全相同的。收發(fā)數(shù)據(jù)的過程中,上層應(yīng)用感知不到底層的差別。
?
4.??不同點(diǎn)
1 建立socket傳遞的地址域,及bind()的地址結(jié)構(gòu)稍有區(qū)別:
socket() 分別傳遞不同的域AF_INET和AF_UNIX
bind()的地址結(jié)構(gòu)分別為sockaddr_in(制定IP端口)和sockaddr_un(指定路徑名)
2 AF_INET需經(jīng)過多個(gè)協(xié)議層的編解碼,消耗系統(tǒng)cpu,并且數(shù)據(jù)傳輸需要經(jīng)過網(wǎng)卡,受到網(wǎng)卡帶寬的限制。AF_UNIX數(shù)據(jù)到達(dá)內(nèi)核緩沖區(qū)后,由內(nèi)核根據(jù)指定路徑名找到接收方socket對應(yīng)的內(nèi)核緩沖區(qū),直接將數(shù)據(jù)拷貝過去,不經(jīng)過協(xié)議層編解碼,節(jié)省系統(tǒng)cpu,并且不經(jīng)過網(wǎng)卡,因此不受網(wǎng)卡帶寬的限制。
3 AF_UNIX的傳輸速率遠(yuǎn)遠(yuǎn)大于AF_INET
3 AF_INET不僅可以用作本機(jī)的跨進(jìn)程通信,同樣的可以用于不同機(jī)器之間的通信,其就是為了在不同機(jī)器之間進(jìn)行網(wǎng)絡(luò)互聯(lián)傳遞數(shù)據(jù)而生。而AF_UNIX則只能用于本機(jī)內(nèi)進(jìn)程之間的通信。
?
5.??使用場景
AF_UNIX由于其對系統(tǒng)cpu的較少消耗,不受限于網(wǎng)卡帶寬,及高效的傳遞速率,本機(jī)通信則首選AF_UNIX域。
不用多說,AF_INET則用于跨機(jī)器之間的通信。
http://blog.csdn.net/sandware/article/details/40923491