代码改变世界

net网络编程的基本概念

2012-03-05 21:21  海不是蓝  阅读(534)  评论(0编辑  收藏  举报

概念性的知识

 

基本简介

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

 

第一次握手:

建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

 

第二次握手:

服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

 

第三次握手:

客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。   完成三次握手,客户端与服务器开始传送数据

 

 

TCP的特点:

关于TCP第二个需要了解的,就是它是全双工的。意思是说如果两个主机上的进程(比如进程A、进程B),一旦建立好连接,那么数据就既可以由A流向B,也可以由B流向A。除此以外,它还是点对点的,意思是说一个TCP连接总是两者之间的,在发送中,通过一个连接将数据发给多个接收方是不可能的。TCP还有一个特性,就是称为可靠的数据传输,意思是连接建立后,数据的发送一定能够到达,并且是有序的,就是说发的时候你发了ABC,那么收的一方收到的也一定是ABC,而不会是BCA或者别的什么。

 

 

TCP与UDP区别

  

   TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

 

    UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

 

 UDP 与 TCP 的主要区别在于 UDP 不一定提供可靠的数据传输

 

 

Socket和TcpClient区别


网上找了个资料,说的不错!

原文地址:

http://wxwinter.spaces.live.com/blog/cns!C36588978AFC344A!322.entry

 

物理层:HUB,网线

链路层:MAC,ARP,交换机

网络层:IP,ICMP,IGMP,路由器

传输层:TCP,UDP

会话层:HTTP,SMTP,FTP,POP3

表示层:SOAP,SSL

应用层:WebService的Method

-------------------------------

Socket是对网络层操作

TcpClient是对传输层操作

ASP.NET是对会话层操作

你可以用Socket访问IIS中的ASP.NET的页面,不过传输层,会话层的转换就要你自已用代码实现了

-------------------------------------------------------------------

Socket:网络层

TcpClient:传输层

当你只考虑:主机,端口,数据传输时,用TcpClient,或UdpClient

当你要考虑:IP封包,路由,IP数据包时,用Socket

还有NET中的Socket类提供了一些对Socket操作的高级封装,但同时无法实现一些Socket底部操作。

目前在NET中不建议使用Socket,就如现在不建议使用NET开发DirectX一样,虽然可以做到

等路由器,交换机都使用Win CE,集成Net类时,也许我上面的话会过时