博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
net网络编程的基本概念
阅读量:5797 次
发布时间:2019-06-18

本文共 1544 字,大约阅读时间需要 5 分钟。

概念性的知识

 

基本简介

在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区别

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

原文地址:

 

物理层: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类时,也许我上面的话会过时

转载于:https://www.cnblogs.com/hailan2012/archive/2012/03/05/2380982.html

你可能感兴趣的文章
百度编辑器ueditor 光标位置的坐标
查看>>
DEV-C++ 调试方法简明图文教程(转)
查看>>
Sublime Text 2 技巧
查看>>
参加婚礼
查看>>
刚毕业从事java开发需要掌握的技术
查看>>
vim
查看>>
Java重写equals方法和hashCode方法
查看>>
Spark API编程动手实战-07-join操作深入实战
查看>>
H3C-路由策略
查看>>
EasyUI基础入门之Easyloader(载入器)
查看>>
java中ArrayList 、LinkList区别
查看>>
Spring ’14 Wave Update: Installing Dynamics CRM on Tablets for Windows 8.1
查看>>
利用rand7()构造rand10()
查看>>
MySQL 备份与恢复
查看>>
吃午饭前,按书上的代码写会儿--Hunt the Wumpus第一个版本
查看>>
easyui中combobox的值改变onchang事件
查看>>
TEST
查看>>
PAT A1037
查看>>
ReactiveSwift源码解析(三) Signal代码的基本实现
查看>>
(六)Oracle学习笔记—— 约束
查看>>