c#网络编程学习笔记00_补上一些基础概念

/*前言:学软件也有段时间了,慢慢的有了种一通百通的感觉,学做游戏想做个联网的,网络通信必备,在进入编程之前,简单了解下网络编程的常识和一些概念,内容不需要强记,了解了解,记录在此*/

一.什么是网络编程

1.网络编程的概念:

实现进程(线程)相互之间的通信和基本的网络应用原理性(协议)功能的程序。

2.网络编程的层次:

简单了解下就好

从底层到高层:

                  网络接口层-》网际层ip-》传输层(tcp或者udp)-》应用层(各种应用协议,比如http,ftp,pop3等等)。

二.网络通讯机制

       1.我学习后的理解

用一个小事例说明一个简单的通讯过程:

       目的:主机A发送一段字符串给主机B,实现通讯。

       过程:主机A中的程序段运行,发送一段字符串给主机A中的socket,该socket通过网络接口卡(不用在意这是个什么东西,没什么卵用)相连的介质(理解为网线),发往主机B中的socket,然后主机B中的某个程序调用主机B的socket,完成通讯。所以,处理网络通讯,就是处理Socket(套接字)的接受和发送,socket不是硬件,是通讯过程中使用的一些缓冲区和相关的数据结构。

       2.为了满足不同程序对通讯质量和性能的要求,一般网络系统提供了三种不同类型的嵌套字:

       1) 流式嵌套字:可靠的,面向连接的双向数据传输服务。实现了数据无差错,无重复的发送,内设流量控制,被传输的数据被看做无记录边界的字节流。当用户要求发送大量数据,或者对数据传输的可靠性要求较高的时候使用流式嵌套字。

       2)数据报套接字:无连接,不可靠的双向数据传输报务。数据以独立的包形式发送,保留了记录边界,,不提高可靠性保证。数据在传输过程中可能会丢失或者重复,并且不能保证数据在接受短和发送都的顺序相同。

       3)原始套接字:一般用于tcp/ip核心协议的编程,不做讨论。

三.TCP/IP协议栈

       分为四类,从高到低:

1.      应用层:

             应用层包含了很多我们常见的协议,比如远程登陆协议Telnet,文件传输协议FTP,超文本传输协议HTTP,域名系统(DNS),简单网络管理协议(SNMP),简单邮件传输协议(SMTP),邮局协议(POP3),即使通讯协议(QICQ)等。

             网络应用开发的本质是:遵循应用层上的一种或者集中协议的规范去编写Socket通信程序的过程。

             尽管提供了多种协议,在很多时候,我们需要定义自己的协议。

2.      传输层

             传输层在应用层之下,完成两台主机之间的通信,其本质是两台主机上对应的应用进程之间的通信(我们知道的简单Socket程序所实现的正式这种通信),也叫端到端的通信,他屏蔽了IP层的路由选择和物理网络等细节。

             在实际中,根据实际要求不同,传输层的协议分为两种:

1)      TCP:可靠,但是要消耗更多的开销。

2)      UDP:不能保证可靠性,但是高效。

3.      网际层、

             可以将其称为最重要的一层,因为他管理的是IP,网络层的主要功能是吧源主机上的分组按照需要,发送到互联网中的目标主机,当然发送信息的源主机必须知道目标主机的地址。

             源主机和目标主机可以在同一个网络中,也可以不再同一个网络中,当不再同一个网络红,可能有多条通路项链,而网际层的一个重要功能就是“路由选择”。

4.      网络接口层

             最底层,负责将上层的数据(IP数据报),发送到其下的物理网络。不需要过多了解。

四.我们要做的

       应用层中,并不稳定,不能把应用层作为网络应用开发的通用平台。

       底层也不可以。

       只有传输层和网际层有最稳定的规范,TCP/UDP/IP是互联网的核心协议,这就是我们日常说的TCP/IP协议。

       很多公司对众多的协议都有很好的封装,比如.NET中大多封装在System.NET命名中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章