C# .NET网络编程

读书笔记:《Visual C#网络编程技术及实践》 清华大学出版社,梅晓冬 颜烨青编著

 

概述

在网络领域,所谓协议,就是指一套大家都公认的通信规则。不同的协议是工作在不同的层上的,而层与层之间则通过接口来描述。

  • 网络协议:计算机之间的相互通信需要共同遵守一定的规律原则,这些规则就称为网络协议。常见的协议有TCP/IP(传输控制协议/网际协议)、IPX/SPX、NetBEUI等。在局域网中用得比较多的是IPX/SPX,用户如果访问Internet,则必须在网络协议中添加TCP/IP。
  • 接口:两台主机直接的通信是每一个网络层都将数据的控制信息传递到它的下一层,一直传输到最底的传输数据的介质,即物理介质,比如光缆。网络系统的每一个实体中,联系相邻两层的通路就是接口。在接口的规范里,定义了下层向上层该提供哪些网络服务和操作。在对等实体之间通过协议来进行横向通信,在单个实体内每一层通过服务接口来传递信息。
  • 服务:下层向上层提供的服务分为两种形式:面向连接的服务和无连接的服务。虽然面向连接的服务方式提高了通信数据传输的可靠性,但是在实际选择方案时需要考虑通信代价。

TCP/IP网络架构

TCP/IP是Internet的基础协议,也是一种数据打包和寻址的标准方法,在数据传送中,可以理解为有两个信封,TCP信封和IP信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有段号的信息,再将TCP信封塞进IP大信封,发送上网。在接收端,一个TCP软件包负责收集信封,抽出数据,把这些数据按发送前的顺序还原,并加以校验,若发现差错,根据协议,发送“重发该信息”的请求。分为应用层、传输层、互联网层(网络层)和网络接口层,各层的功能:

  1. 网络接口层:控制网络硬件,并发送IP数据报,管理网络介质里的诸多协议,定义如何使用实际网络来传送数据。
  2. 互联网层:将整个网络体系结构贯穿在一起的关键层,负责提供基本的封包传送功能,将信息分组传送到目标端,各个分组相互独立。互联网层定义了正式的分组格式和协议,就是我们所说的IP。
  3. 传输层:提供对等实体间的数据传送服务,确定数据已被送达并接受。主要的协议有TCP和UDP。
  4. 应用层:应用程序间沟通的协议,包含所有的高层协议,如Telnet,FTP,SMTP、HTTP和DNS等。

由于数据包经过不同类型的网络,并且每一种网络所能传输的单元大小不同,因此IP模块需要把资料包重新整成各种规格的数据块,然后才能适应性的网络环境进行传输,此外,IP也定义了网络上每一台主机的地址格式,确保可以正确地抵达目的端主机。

IP协议是TCP/IP的心脏,IP协议能提供基本的封包传送服务,而TCP协议则规范了在网络里不同主机之间的建立连接的方式,这两个协议的相互协议,是TCP/IP网络建立的基础。

 

IP地址和端口

IP地址是网络上标识主机的编号,端口则是标识具体哪一个应用。

计算机的IP地址分为网络号和主机号两部分,IPv4按照网络规模的大小,为了便于存址和层次化的构造网络,被分为A、B、C、D、E五类,商业应用中指用到A、B、C三类.

1、A类IP地址

一个A类IP地址是指, 在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。

如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。

A类IP地址中网络的标识长度为8位,主机标识的长度为24位,A类网络地址数量较少,有126个网络,每个网络可以容纳主机数达1600多万台。
2、B类IP地址

一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。

B类IP地址中网络的标识长度为16位,主机标识的长度为16位,B类网络地址适用于中等规模的网络,有16384个网络,每个网络所能容纳的计算机数为6万多台。

3、C类IP地址

一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。

如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。

C类IP地址中网络的标识长度为24位,主机标识的长度为8位,C类网络地址数量较多,有209万余个网络。适用于小规模的局域网络,每个网络最多只能包含254台计算机。

端口:通过端口号来唯一标记,只有整数,范围是0~65535。TCP和UDP两个协议是独立的,因此各自的端口号也相互独立,即TCP有256端口,UDP也有256端口。

分为知名端口和动态端口,知名端口只家喻户晓的端口号,范围为0~1023,比如21是FTP,25是SMTP,80是HTTP,135是RPC服务等。

C# .NET 网络编程相关类

  1. IPAddress 类,用于表示一个IP地址。
  2. DNS 类,是一种分层次的,基于域的命名方案,并且用于一个分布式数据库系统来实现此命名方案。DNS的主要用途是将主机名和电子邮件目标地址映射成IP地址。
  3. IPHostEntry 类,为Internet主机地址信息提供容器类,将一个域名系统主机名与一组匹配的IP地址关联。
  4. IPEndPoint 类,将网络端点表示为IP地址和端口号,它的对象表示指定的IP地址和端口组合。
  5. Socket 类,为网络通信程序提供了一套丰富的方法和属性,比如TCPClient,TCPListener,UDPClient等。

套接字

多个TCP连接或多个应用程序进程可能遇到通过同一个TCP协议端口传输数据,因此使用套接字用于区分不同应用程序进程间的网络通信和连接,生成套接字包括3个参数,通信的目的IP地址,使用的传输层协议(TCP/UDP)和使用的端口号。

.NET的Socket提供了三种类型套接字:

  • Stream流式套接字,提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送,而且按发送顺序接收。
  • Dgram数据报式套接字,提供一个无连接服务。数据包以独立包形式被发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。
  • Raw原始套接字,允许对较低层协议(如IP、ICMP)直接访问。

线程

Thread,常用方法:启动线程.Start()、终止线程.Abort();挂起线程.Suspend();重新执行挂起的线程.Resume();停止线程5秒.Sleep(5000),单位是毫秒。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值