net網(wǎng)絡(luò)編程的基本概念
2012-03-05 21:21 海不是藍(lán) 閱讀(547) 評(píng)論(0) 收藏 舉報(bào)|
概念性的知識(shí) |
基本簡(jiǎn)介
在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務(wù),采用三次握手建立一個(gè)連接。
第一次握手:
建立連接時(shí),客戶(hù)端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn);SYN:同步序列編號(hào)(Synchronize Sequence Numbers)。
第二次握手:
服務(wù)器收到syn包,必須確認(rèn)客戶(hù)的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);
第三次握手:
客戶(hù)端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶(hù)端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。 完成三次握手,客戶(hù)端與服務(wù)器開(kāi)始傳送數(shù)據(jù)
TCP的特點(diǎn):
關(guān)于TCP第二個(gè)需要了解的,就是它是全雙工的。意思是說(shuō)如果兩個(gè)主機(jī)上的進(jìn)程(比如進(jìn)程A、進(jìn)程B),一旦建立好連接,那么數(shù)據(jù)就既可以由A流向B,也可以由B流向A。除此以外,它還是點(diǎn)對(duì)點(diǎn)的,意思是說(shuō)一個(gè)TCP連接總是兩者之間的,在發(fā)送中,通過(guò)一個(gè)連接將數(shù)據(jù)發(fā)給多個(gè)接收方是不可能的。TCP還有一個(gè)特性,就是稱(chēng)為可靠的數(shù)據(jù)傳輸,意思是連接建立后,數(shù)據(jù)的發(fā)送一定能夠到達(dá),并且是有序的,就是說(shuō)發(fā)的時(shí)候你發(fā)了ABC,那么收的一方收到的也一定是ABC,而不會(huì)是BCA或者別的什么。
|
TCP與UDP區(qū)別 |
TCP---傳輸控制協(xié)議,提供的是面向連接、可靠的字節(jié)流服務(wù)。當(dāng)客戶(hù)和服務(wù)器彼此交換數(shù)據(jù)前,必須先在雙方之間建立一個(gè)TCP連接,之后才能傳輸數(shù)據(jù)。TCP提供超時(shí)重發(fā),丟棄重復(fù)數(shù)據(jù),檢驗(yàn)數(shù)據(jù),流量控制等功能,保證數(shù)據(jù)能從一端傳到另一端。
UDP---用戶(hù)數(shù)據(jù)報(bào)協(xié)議,是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的運(yùn)輸層協(xié)議。UDP不提供可靠性,它只是把應(yīng)用程序傳給IP層的數(shù)據(jù)報(bào)發(fā)送出去,但是并不能保證它們能到達(dá)目的地。由于UDP在傳輸數(shù)據(jù)報(bào)前不用在客戶(hù)和服務(wù)器之間建立一個(gè)連接,且沒(méi)有超時(shí)重發(fā)等機(jī)制,故而傳輸速度很快。
UDP 與 TCP 的主要區(qū)別在于 UDP 不一定提供可靠的數(shù)據(jù)傳輸。
|
Socket和TcpClient區(qū)別 |
網(wǎng)上找了個(gè)資料,說(shuō)的不錯(cuò)!
原文地址:
http://wxwinter.spaces.live.com/blog/cns!C36588978AFC344A!322.entry
物理層:HUB,網(wǎng)線(xiàn)
鏈路層:MAC,ARP,交換機(jī)
網(wǎng)絡(luò)層:IP,ICMP,IGMP,路由器
傳輸層:TCP,UDP
會(huì)話(huà)層:HTTP,SMTP,FTP,POP3
表示層:SOAP,SSL
應(yīng)用層:WebService的Method
-------------------------------
Socket是對(duì)網(wǎng)絡(luò)層操作
TcpClient是對(duì)傳輸層操作
ASP.NET是對(duì)會(huì)話(huà)層操作
你可以用Socket訪(fǎng)問(wèn)IIS中的ASP.NET的頁(yè)面,不過(guò)傳輸層,會(huì)話(huà)層的轉(zhuǎn)換就要你自已用代碼實(shí)現(xiàn)了
-------------------------------------------------------------------
Socket:網(wǎng)絡(luò)層
TcpClient:傳輸層
當(dāng)你只考慮:主機(jī),端口,數(shù)據(jù)傳輸時(shí),用TcpClient,或UdpClient
當(dāng)你要考慮:IP封包,路由,IP數(shù)據(jù)包時(shí),用Socket
還有NET中的Socket類(lèi)提供了一些對(duì)Socket操作的高級(jí)封裝,但同時(shí)無(wú)法實(shí)現(xiàn)一些Socket底部操作。
目前在NET中不建議使用Socket,就如現(xiàn)在不建議使用NET開(kāi)發(fā)DirectX一樣,雖然可以做到
等路由器,交換機(jī)都使用Win CE,集成Net類(lèi)時(shí),也許我上面的話(huà)會(huì)過(guò)時(shí)
浙公網(wǎng)安備 33010602011771號(hào)