VC++之网络编程一 概述

  • Post author:
  • Post category:其他


网络编程概述

这里只作网络编程涉及到的基本网络知识介绍,更详细的内容,参考其它网络书籍.

1.OSI参考模型

具体内容,从上至下排列:

应用层

表示层

会话层

传输层

网络层

数据链路层

物理层

通信实体的对等层之间不允许直接通信

各层之间是严格单向依赖

上层使用下层的服务–Service user

下层向上层提供服务–Service provider

对等层通信的实质:

对等层实体之间虚拟通信;

下层向上层提供服务,实际通信在最底层完成.

2.OSI各层使用的协议:

应用层:

Telnet,FTP,HTTP,DNS,SMTD,POP3等;

传输层:

TCP:面向连接的可靠传输协议.对数据完整性要求高的,如网上下载程序等.

UDP:无连接的,不可靠的传输协议.但它不需要建立连接,没有数据确认与重传的机制,时效性较高,对视频会议,视频点播,即时语音通讯,即时聊天等就可以用UDP来实现.

网络层:

IP:网际协议.

ICMP:Internet控制报文协议.

IGMP:Internet组管理协议.

3.数据封装

数据要进行传输,必须打包,在数据前加上特定的协议头部进行打包的过程称为封装.

1)OSI参考模型中,对等层协议之间交换的信息单元统称为协议数据单元(PDU,Protocal Data Unit).

2)OSI参考模型中,上层必须依赖下层提供的服务.

3)OSI参考模型中,下层把上层的PDU作为本层的封装对象,加入本层的头部(尾部,如果有),头部(尾部)中有数据传输所需的控制信息.

4)数据在OSI参考模型自上而下递交的过程实际上就是不断封装的过程.到达目的地后自下而上递交的过程就是不断拆封的过程.所以数据一定是在物理层进行传递,在其它层进行加上包头(包尾)封装.

5)在拆封过程中,OSI参考模型的某一层只能识别对等层封装的包头(包尾),对拆封了包头(包尾)后的数据只提交给上一层进行处理,本层不对数据作任何处理.

4.TCP/IP模型

层次:

应用层

传输层

网络层

网络接口

与OSI模型的对应关系

应用层   ——————>    应用层

表示层   ——————>    应用层

会话层   ——————>    应用层

传输层   ——————>    传输层

网络层   ——————>    网络层

数据链路层   ————>    网络接口

物理层   ——————>    网络接口

5.端口

端口是一种抽象软件结构,包括一些数据结构和I/O缓冲区.端口用一个16位的数字(整数型标识符)来表示,即端口号,它的范围是0~65535,其中1024以下的端口号保留给预定义的服务.(HTTP 80,FTP 21/20)

1)在OSI参考模型中,传输层提供进程(应用程序)通信的能力.TCP/IP协议采用协议端口(protocol port)来标识通信实体中进行通信的进程(应用程序).

2)端口号跟协议相关,而传输层的两个协议TCP和UDP是完全独立的两个软件模块,因些TCP和UDP的两个端口也相互独立.

3)应用程序通过系统调用与某个端口建立联系(binding)后,传输层传给该端口的数据都被相应进程所接收,而相应进程发给传输层的数据都通过该端口输出.

6.Socket(套接字)

1)Socket是一种应用程序访问通信协议的操作系统调用.通过它,能使应用程序方便的访问TCP/IP,从而开发各种网络应用程序.

2)Socket最初由美国伯克利大学在Unix上推出的.后来引进到Windows等操作系统中,成为网络应用程序开发的一个重要工具.

3)通信区域主要把利用套接字通信的进程的共有特性综合在一起.它是一个抽象的概念,也叫地址族.套接字通常存在于通信区域中.套接字通常只与同一个区域的套按字交换数据(对跨区域通信的情况,只在执行了某种转换进程后才能实现).

4)Windows Socket只支持一个通信区域——网际域(AF_INET),这个区域被使用网际协议族通信的进程使用.

7.网络字节顺序

1)为了保证数据的正确性,在网络协议中需要指定网络字节顺序.基于Intel的CPU采用的是低位先存.

2)TCP/IP协议使用16位整数和32位整数的高位先存格式.

8)客户机/服务器模式

服务器方先启动,并根据请求提供相应的服务:

A.打开一个通信通道并告知本地主机,它愿意在某一地址和端口上接收客户请求.

B.等待客户请求到达该端口.

C.接收到重复服务请求,处理该请求并发送应答信号.接收到并发服务请求,要激活一个新的进程(或线程)来处理这个客户请求.新进程(或线程)处理此客户请求,并不需要对其它请求作出应答.服务完成后,关闭此新进程与客户的通信链路,并终止.

D.返回第二步,等待另一个客户请求.

E.关闭服务器.

客户方:

A.打开一个通信通道,并连接到服务器所在主机特定端口.

B.向服务器发送服务请求报文,等待并接收应答;继续重复提出其它请求.

C.请求结束后关闭通信通道并终止.

9)套接字的类型

A.流式套接字(SOCK_STREAM)

提供面向连接,可靠的数据传输服务,数据无差错,无重复地发送,且按发送顺序接收.

B.数据报式套接字(SOCK_DGRAM)

提供无连接服务.数据包以独立形式发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱.

C.原始套按字(SOCK_RAM)



版权声明:本文为thinkscape原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。