网络基础——网络传输基本流程

目录

一.网络背景

        1.1 网络的发展

二.协议

        2.1 概念

        2.2 协议的分层

       2.2.1 OSI七层模型

        2.2.2 TCP/IP五层(四层)模型

三. 网络传输基本流程

        3.1 网络传输流程图

        3.1.1 对封装和分用的理解

        3.1.2 局域网通讯原理

        3.1.2 同一网段两主机进行数据传输

        3.1.3 跨网段的主机的传输

 四.认识IP地址和MAC地址

        4.1 认识IP地址

        4.2 认识MAC地址


一.网络背景

        有人可能会说,网络背景为什么要了解?了解网络背景可以帮助你更好的理解后面的知识。

        1.1 网络的发展

        计算机出现在网络网络之前,一开始是用来计算和核导弹的轨迹的。但是由于计算可能是由多台计算机计算,它们之间数据要相互传递,如果通过人来传递,第一效率会很低,第二可能会出错。

        人们就想着如何可以让计算机和计算机之间产生通信,可以传输数据。

        1.独立模式:计算机之间相互独立,通过人来传输数据

        2.网络互联:多台计算机通过集线器和线连接在一起。

这些主机的距离还不是很远,比如都在一个教室里。

         3.局域网LAN:主机通过交换机和路由器连接在一起。

主机之间有点距离,比如教室和教室之间。

         4.广域网WAN:将远隔千里的主机连接在一起。

比如地区和地区之间,国家和国家之间。

        我们发现网络的发展都是根据人的需求,距离是在不断的变长。

        注意:局域网和广域网只是一种相对的概念。比如:地区和地区之间,可以看作是广域网,但是相比较于国家,它也可以看作是局域网。

        不仅主机和主机之间由网络,一台主机的内部,硬件和硬件之间也要传输数据,他们之间也有网络。

二.协议

        2.1 概念

        一台主机发送数据给另外一台主机会有很多问题。比如:怎么定位你要发送的主机?怎么保证数据不会丢失并且正确?怎么保证效率问题?

        协议就是用来解决这样的问题的。

        协议其实是一种约定。代表了某些信息。

 简要概括数据的发送和接收:

        在操作系统中有各种各样的协议,操作系统需要将它们管理起来。在操作系统底层,将协议描述成一个一个结构体,在主机发送数据给另外一个主机时,需要将数据和协议进行合并,合并成一份后,再一起发送出去。所以发送的数据会比想接收的数据多,多出来的是协议。收到数据的主机还需要将协议分离,得到真正的数据。

        计算机内数据是以二进制的形式保存,计算机之间传输的介质是光信号和电信号,比如:计算机可以通过"频率"或者"强弱"或者"疏密"来表示0和1的信息。想要传递各种不同的信息,就要约定好双方的数据格式。

        注意:不是主机之间约定好协议就可以通信了,如果两主机之间协议不同,注意发送数据时按照一种协议发的,收到数据的数据,按照另外一种协议分离,就会导致数据不一致。所以必须约定一个共同的网络协议。

        网络里的协议就是一种数据格式,规定的相同的数据格式就是网络协议。

        同一网段源主机和目标主机的协议要相同。

        2.2 协议的分层

          为什么需要分层?

        由下图: 由于每一层都会需要进行交互,协议分层后有利于层与层之间解耦,不会互相影响。 

       2.2.1 OSI七层模型

        OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;把网络从逻辑上分为了7层。 每一层都有相关、相对应的物理设备,比如路由器,交换机。

        但是在实际生活中,它即复杂又不实用。

        2.2.2 TCP/IP五层(四层)模型

        五层模型:是去掉OSI的表示层和会话层

        四层模型:是去掉OSI的表示层,会话层和物理层。

TCP/UP是一组协议的代名词,还包括许多协议,组成了TCP/IP协议簇。

三. 网络传输基本流程

        发送的数据一定会由数据和协议组成,协议就是报头,数据称做有效载荷。发送数据,每一层都需要对数据进行添加报头叫做封装,接收数据,每一层都需要对报头和数据进行分离,再法总给对应的协议叫做分用。

数据报 = 报头 + 有效载荷

        3.1 网络传输流程图

        3.1.1 对封装和分用的理解

  • 封装:从应用层到物理层,每一层协议都要再用户数据上加上一个数据报头。
  • 数据报头中包含了报头有多长,载荷有多长,上层协议是什么等信息。方便解包。

  • 分用:封装的逆过程,从物理层到应用层,按照协议解包后,再发给上层对应的协议。上层协议很多,要用对应的协议进行解包。。

        注意:局域网中一台主机发送数据,每台主机都能收到。 

        3.1.2 局域网通讯原理

.局域网中所有主机都可以通讯,一个主机发数据,所有主机都能收到。在链路层,有一个mac地址,用来唯一标识一个网卡。

怎么实现定位?

        在链路层会将目标主机的mac地址添加在报头中。

        发送的数据每一台主机都能收到,当主机收到数据,会进行解包,在链路层会分析报头的mac地址,是否与当前主机的mac地址匹配。不匹配的主机将数据丢弃,匹配的主机会继续往上解包数据。

局域网通讯原理

        数据发送应用层发送请求,需要通过硬件层发送,于是要往下层走。每经过一层,都会要给数据加上报头,最终发送出数据。在局域网中的数据都能收到数据,收到数据的主机会在链路层分析报头是否与当前主机mac地址匹配,不匹配将数据丢弃,匹配继续向上解包,每次向上发送数据要确定是发送给哪个协议。最终会在应用层收到最终的数据。

        如果多台主机同时往局域网中发送数据时,会发生数据碰撞,会导致数据变成垃圾数据,导致没法进行通信。在链路层会检测数据碰撞的垃圾数据,然后会让源主机重发数据。在计算机中有一种算法可以避免冲突。

        广播:mac地址设为全1,所有主机都匹配。

        3.1.2 同一网段两主机进行数据传输

将用户数据传输和接收过程:

        3.1.3 跨网段的主机的传输

数据从一台计算机到另外一台计算机传输过程中需要经过一个或者多个路由器。

        路由器横跨两个局域网,是两个局域网的主机。 于是路由器可以收到一个局域网的数据,再向另外一个局域网发送数据。

 四.认识IP地址和MAC地址

        通过跨网段主机传输,如果网段之间路由器很多,我们可以知道,MAC地址是在不断变化的,但是IP地址是不变的。

        MAC地址有两个:

                原mac地址:当前局域网中发送数据的主机的mac地址。

                目标mac地址:当前局域网中要收数据的主机的mac地址。

        IP地址也有两个:

                原IP地址:一开始发数据的主机IP地址

                目标IP地址:最后接收数据的主机IP地址。

        4.1 认识IP地址

        IP协议有两个版本,IPv4和IPv6,IPv4一共有32位,IPv6一共有128位。由于现在计算机太多,IPv4已经标识不了这么多主机,所以出现了IPv6。但是现在普遍还是IPv4。

  • IP地址是IP协议中的,用来标识主机的。
  • 通常使用"点分十进制"的字符串标识IP地址。例如:"192.168.0.1";用点分割每一个数字,一个数字一个字节,范围0~255。

        4.2 认识MAC地址

  • MAC地址用来标识数据链路层中相连的结点。
  • 长度48位,6字节。一般用16进制数加上冒号的形式表示。例如:08:00:27:03:fb:16。
  • mac地址在网卡出厂时就已经确定,不能修改。mac地址通常是唯一的。 

  • 13
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本书是一本介绍利用Visual C++进行网络通信程序开发的书籍,书中精选了大量网络实例,涵盖了本地计算机网络编程,局域网网络通信编程,IE编程,网络通信协议编程,串口通信编程,代理服务器编程和高级网络通信编程。每个工程实例都提供了完整的源代码,读者可以很容易地根据需要进行二次开发。本书适合进行网络通信开发的人员阅读,同时也可以作为科研单位,高校相关专业人员的参考书籍。<br><br>目录介绍<br>第1章 Visual C++网络通信编程基础 1<br>1.1 Winsock1.1编程技术 1<br>1.1.1 Winsock的基本概念 1<br>1.1.2 Winsock的编程特点 2<br>1.1.3 Winsock基本的API 2<br>1.1.4 Winsock的异步模式 7<br>1.1.5 面向连接协议和无连接协议 20<br>1.2 Winsock 2.0编程技术 21<br>1.2.1 Winsock 2.0技术说明 21<br>1.2.2 Winsock 2.0新增函数 25<br>1.2.3 Winsock网络程序——聊天室 26<br>1.3 CAsyncSocket编程技术 38<br>1.3.1 CAsyncSocket类的组成 38<br>1.3.2 CAsyncSocket编程模型 39<br>1.4 CSocket编程技术 41<br>1.4.1 CSocket类的组成 42<br>1.4.2 CSocket应用实例——聊天室 43<br>1.5 WinInet编程技术 52<br><br>第2章 本地计算机网络编程 57<br>2.1 获取计算机的名称和IP地址 57<br>2.2 获取计算机的子网掩码 60<br>2.3 获取计算机的DNS设置 62<br>2.4 获取计算机的网卡地址 63<br>2.5 获取计算机安装的协议 65<br>2.6 获取计算机提供的服务 67<br>2.7 获取计算机的所有网络资源 69<br>2.8 修改本地计算机的网络设置 70<br>2.9 获取计算机TCP/IP的所有信息 74<br><br>第3章 局域网网络通信编程实例 79<br>3.1 获取网上邻居 79<br>3.1.1 实现原理 80<br>3.1.2 实例实现 83<br>3.2 IP地址和主机名之间的转换 87<br>3.2.1 实现原理 87<br>3.2.2 实例实现 89<br>3.3 映射网络驱动器 93<br>3.3.1 实现原理 93<br>3.3.2 实例实现 95<br>3.4 局域网消息发送程序Net Send 97<br>3.4.1 实现原理 98<br>3.4.2 实例实现 101<br>3.5 获取局域网内其他计算机的信息 103<br><br>第4章 IE编程实例 111<br>4.1 简单的浏览器的实现 111<br>4.1.1 实现原理 111<br>4.1.2 实例实现 112<br>4.2 删除IE相关历史记录 116<br>4.2.1 实现原理 116<br>4.2.2 实例实现 117<br>4.3 将应用程序加入到IE工具栏 121<br>4.3.1 实现原理 122<br>4.3.2 实例实现 123<br>4.4 超级链接的实现 127<br>4.4.1 实现原理 127<br>4.4.2 实例实现 128<br>4.5 禁止IE的弹出窗口 132<br>4.5.1 实现原理 132<br>4.5.2 实例实现 133<br>4.6 禁止浏览某些网站 139<br>4.6.1 实现原理 139<br>4.6.2 实例实现 139<br>4.7 IE收藏夹 142<br>4.7.1 实现原理 142<br>4.7.2 实例实现 142<br>4.8 设置桌面快捷方式和活动桌面 145<br>4.8.1 实现原理 145<br>4.8.2 实例实现 146<br><br>第5章 基本网络编程实例 150<br>5.1 点对点文件传输 150<br>5.2 端口扫描程序 155<br>5.2.1 实现原理 155<br>5.2.2 实例实现 155<br>5.3 Finger编程 161<br>5.3.1 实现原理 162<br>5.3.2 实例实现 164<br>5.4 Sniff编程 166<br>5.4.1 实现原理 166<br>5.4.2 实例实现 167<br>5.5 Internet文件下载 178<br>5.5.1 实现原理 178<br>5.5.2 实例实现 180<br><br>第6章 网络通信协议编程实例 184<br>6.1 FTP协议 185<br>6.1.1 FTP工作原理 185<br>6.1.2 FTP数据表示 186<br>6.1.3 FTP命令 187<br>6.1.4 FTP应答 192<br>6.1.5 FTP客户端实例方法 194<br>6.1.6 FTP客户端实例实现 201<br>6.2 SMTP协议 221<br>6.2.1 SMTP会话 221<br>6.2.2 SMTP信件 225<br>6.2.3 SMTP客户端实例方法 232<br>6.2.4 SMTP客户端实例实现 233<br>6.3 POP3协议 259<br>6.3.1 POP3会话 259<br>6.3.2 POP3信件 264<br>6.3.3 POP3客户端实例方法 268<br>6.3.4 POP3客户端实例实现 268<br>6.4 ICMP协议 287<br>6.4.1 ICMP报文格式 287<br>6.4.2 ICMP时间戳请求与应答 289<br>6.4.3 Ping程序的实现 291<br>6.4.4 TraceRoute程序的实现 300<br>6.5 Telnet协议 308<br>6.5.1 Telnet协议 308<br>6.5.2 NVT ASCII字符集 309<br>6.5.3 协商选项 309<br>6.5.4 BBS实例实现 310<br>6.6 HTTP协议 323<br>6.6.1 HTTP会话 324<br>6.6.2 HTTP数据 329<br>6.6.3 HTTP客户端程序的实现 329<br>6.6.4 HTTP服务器实例实现 343<br><br>第7章 Modem/串口通信编程实例 353<br>7.1 AT命令 353<br>7.1.1 Modem状态 353<br>7.1.2 AT命令 354<br>7.1.3 Modem返回信息码 354<br>7.2 MSCOMM控件编程实例 355<br>7.2.1 实现原理 355<br>7.2.2 实例实现 356<br>7.3 串口通信API编程实例 360<br>7.3.1 打开和关闭串口 360<br>7.3.2 串口配置 362<br>7.3.3 串口属性设置 365<br>7.3.4 缓冲区控制 366<br>7.3.5 串口读写 367<br>7.3.6 通信事件 369<br>7.3.7 设备控制命令 370<br>7.3.8 实例实现 370<br><br>第8章 代理服务器编程实例 378<br>8.1 Socks 5协议编程 379<br>8.1.1 实例原理 386<br>8.1.2 实例实现 388<br>8.2 HTTP代理服务器实例 397<br>8.2.1 主框架代码分析 397<br>8.2.2 代理类CProxyServer的实现 399<br><br>第9章 高级实例解析 409<br>9.1 串口通信高级编程实例 409<br>9.1.1 主程序结构和流程 409<br>9.1.2 实例演示 409<br>9.1.3 实例原理 410<br>9.1.4 实例设计 414<br>9.1.5 代码分析 414<br>9.2 网络流量监控实例 425<br>9.2.1 主程序结构和流程 426<br>9.2.2 实例演示 426<br>9.2.3 实例原理 426<br>9.2.4 实例设计 428<br>9.2.5 代码分析 429<br>9.3 网站下载实例 438<br>9.3.1 主程序结构和流程 438<br>9.3.2 实例演示 438<br>9.3.3 实例原理 439<br>9.3.4 实例设计 441<br>9.3.5 代码分析 442<br>9.4 网络五子棋实例 458<br>9.4.1 主程序结构和流程 458<br>9.4.2 实例演示 458<br>9.4.3 实例原理 459<br>9.4.4 实例设计 459<br>9.4.5 代码分析 459<br>9.5 语音聊天实例 466<br>9.5.1 主程序结构和流程 467<br>9.5.2 实例演示 467<br>9.5.3 实例原理 468<br>9.5.4 实例设计 472<br>9.5.5 代码分析 473<br>9.6 远程控制实例 482<br>9.6.1 主程序结构和流程 482<br>9.6.2 实例演示 483<br>9.6.3 实例原理 484<br>9.6.4 实例设计 485
目 录 第一部分 通信基础知识 1. 概述 2. 传输基础知识 3. 交换基础知识 4. 分层通信体系结构 第二部分 通信网络 1. 概述 2. 电话网 3. ISDN综合业务数字网 4. DDN网 5. 帧中继网 6. ATM 7. 接口和接入网 8. 信令网 9. 同步网 10. 管理网 第三部分 计算机网络 1. 概述 2. 局域网 3. TCP/IP协议族 4. 网络连接设备及网络软件 5. 交换式网络 6. INTERNET 第四部分 数据固定网网络拓朴图 1. ATM网网络拓朴图 2. VOIP网网络拓朴图 3. 193长途网网络拓朴图 4. 广西165网网络拓朴图 第五部分 各县组网结构 1. 各县组网结构和当前现状 2. 各县组网结构示意图 3. 专线故障处理流程 4. 数据业务故障处理表 第六部分 数据专员工作职责及考核要求 第七部分 设备维护常识及常见故障处理 1. 县、镇级基本网络组网方式 2. 设备故障判断方法 第八部分 数据网运行维护制度 1. 安全操作规程 2. 机房管理和安全保密规定 3. 障碍处理和障碍报告制度 第一部分 通信基础知识 1. 概 述 通信的目的是为了信息的传递。携带信息的信号可分为模拟信号(如话音)和数字信 号(计算机输出的信号)。信息的传递由通信系统来完成。 1. 通信系统的组成 通信系统由硬件和软件组成。硬件包括终端、传输和交换三大部分。 终端:包括普通电话、移动电话、计算机、数据终端、可视电话、会议电视终端等 。 传输系统:信息传递的通道,一般叫信道。 交换系统:完成接入交换节点链路的汇集、转接和分配。 通信系统软件:为能更好完成信息的传递和转接交换所必须的一整套协议、标准, 包括网络结构、网内信令、协议和借口以及技术体制、接口标准等。 注释 2. 通信系统的分类 按照系统所传输的信号来分类,则系统可分为模拟通信系统和数字通信系统。 模拟通信系统:用模拟信号传递消息的系统。 数字通信系统:用数字信号传递消息的系统。 由于光纤通信的普及和集成工艺的发展,数字通信系统具有抗干扰能力强,数字信号 可再生,可综合各种业务,便于和计算机系统连接,易于集成等优点,所以逐渐取代了 模拟通信系统。 3. 标准化组织 标准可以被看作是将不同厂商制造的硬件和软件连接起来以便协调工作的"粘接剂"。 在美国和其他许多国家,全国的标准化组织定义了多种物理特性和操作特性的规范,以 便厂商生产与通信公司的线路设施及其他制造商的产品兼容的设备。在全球范围内,标 准化组织颁布了一系列与通信有关的建议。这些建议虽不是强制性的,但在全球的通信 设备和设施的开发过程中具有很强的影响力,并已被数百个大型企业和通信公司采纳。 下面介绍几个重要的组织。 1. ITU ITU——International Telecommunications Union国际电信联盟。 ITU的前身是CCITT(国际电报电话咨询委员会),1994年更名,它由联合国的一个机 构主办,属政府间组织。总部设在日内瓦,直接负责制定数据通信标准,由15个工作组 组成。ITU-T是其电信标准局。 2. ISO ISO——International Organization for Standardization国际标准化组织。它是联合国经济和社会理事会下的咨询性非政府组织 。 3. ANSI ANSI——American National Standars Institute美国国家标准化组织。 它是美国最主要的标准制定机构,是非营利性非政府组织。 4. IEEE IEEE——Institute of Electrical and Electronic Engineers电气和电子工程师协会。它是美国的工程师社团组织。 2. 传输基础知识 1. 传输基本概念 传输基本模型如图1.2.1所示。 1. 信道 信道一般分为模拟信道和数字信道。 模拟信道传输模拟信号;数字信道传输数字信号。 模拟信号的传输 在模拟信道上的传输一般为实线传输或频分多路复用。模拟信号数字化为数字信号便 可以在数字信道上传输。 数字信号的传输 数字信号在这两种信道上传输,不同的传输信道采用不同的信号变换设备。对模拟信 道,变换设备为MODEM,把数字信号变为模拟信号再传输。对数字信道,信号变换器即接 口设备,其作用是实现信号码型与电平的转换等。 注释 数据传输模型如图1.2.2所示。 2. 数据传输方式 并行传输 数据的每一位在多条并行信道上同时传输传输速率较高,但并行信道实现较为困难 ,不适合远距离传输。 串行传输 数据流以串行方式在一条信道上传输,为了在收方识别发方信息,需要保持发、收方 信号同步。这种方式易于实现,经济适用。所以大部分采用串行通信。 3. 数据同步方式 同
第 1章 概述 1 1.1 网络编程相关的基本概念 1 1.1.1 网络编程与进程通信 1 1.1.2 Internet中网间进程的标识 3 1.1.3 网络协议的特征 7 1.2 三类网络编程 10 1.2.1 基于TCP/IP协议栈的网络编程 10 1.2.2 基于WWW应用的网络编程 10 1.2.3 基于.NET框架的Web Services网络编程 10 1.3 客户机/服务器交互模式 13 1.3.1 网络应用软件的地位和功能 13 1.3.2 客户机/服务器模式 14 1.3.3 客户机与服务器的特性 15 1.3.4 容易混淆的术语 16 1.3.5 客户机与服务器的通信过程 16 1.3.6 网络协议与C/S模式的关系 17 1.3.7 错综复杂的C/S交互 17 1.3.8 服务器如何同时为多个客户机服务 18 1.3.9 标识一个特定服务 20 1.4 P2P模式 21 1.4.1 P2P技术的兴起 21 1.4.2 P2P的定义和特征 21 1.4.3 P2P的发展 22 1.4.4 P2P的关键技术 22 1.4.5 P2P系统的应用与前景 22 习题 23 第 2章 套接字网络编程基础 24 2.1 套接字网络编程接口的产生与发展 24 2.1.1 问题的提出 24 2.1.2 套接字编程接口起源于UNIX操作系统 25 2.1.3 套接字编程接口在Windows和Linux操作系统中得到继承和发展 25 2.1.4 套接字编程接口的两种实现方式 25 2.1.5 套接字通信与UNIX操作系统的输入/输出的关系 26 2.2 套接字编程的基本概念 27 2.2.1 什么是套接字 27 2.2.2 套接字的特点 28 2.2.3 套接字的应用场合 30 2.2.4 套接字使用的数据类型和相关的问题 30 2.3 面向连接的套接字编程 32 2.3.1 可靠的传输控制协议 32 2.3.2 套接字的工作过程 33 2.3.3 面向连接的套接字编程实例 34 2.3.4 进程的阻塞问题和对策 40 2.4 无连接的套接字编程 43 2.4.1 高效的用户数据报协议 43 2.4.2 无连接的套接字编程的两种模式 43 2.4.3 数据报套接字的对等模式编程实例 45 2.5 原始套接字 47 2.5.1 原始套接字的创建 47 2.5.2 原始套接字的使用 48 2.5.3 原始套接字应用实例 49 习题 51 第3章 WinSock编程 53 3.1 WinSock概述 53 3.2 WinSock库函数 55 3.2.1 WinSock的注册与注销 55 3.2.2 WinSock的错误处理函数 58 3.2.3 主要的WinSock函数 61 3.2.4 WinSock的辅助函数 74 3.2.5 WinSock的信息查询函数 77 3.2.6 WSAAsyncGetXByY类型的扩展函数 79 3.3 网络应用程序的运行环境 82 习题 84 第4章 MFC编程 85 4.1 MFC概述 85 4.1.1 MFC是一个编程框架 85 4.1.2 典型的MDI应用程序的构成 87 4.2 MFC和Win32 89 4.2.1 MFC对象和Windows对象的关系 89 4.2.2 几个主要的类 91 4.3 CObject类 95 4.3.1 CObject类的定义 95 4.3.2 CObject类的特性 96 4.4 消息映射的实现 98 4.5 MFC对象的创建 102 4.5.1 MFC对象的关系 102 4.5.2 MFC提供的接口 104 4.5.3 MFC对象的创建过程 104 4.6 应用程序的退出 107 习题 107 第5章 MFC WinSock类的 编程 109 5.1 CAsyncSocket类 110 5.1.1 使用CAsyncSocket类的一般步骤 110 5.1.2 创建CAsyncSocket类对象 111 5.1.3 关于CAsyncSocket类可以接受并处理的消息事件 112 5.1.4 客户端套接字对象请求连接到服务器端套接字对象 114 5.1.5 服务器接收客户机的连接请求 115 5.1.6 发送与接收流式数据 116 5.1.7 关闭套接字 118 5.1.8 错误处理 118 5.1.9 其他成员函数 119 5.2 CSocket类 120 5.2.1 创建CSocket对象 120 5.2.2 建立连接 120 5.2.3 发送和接收数据 120 5.2.4 CSocket类、CArchive类和CSocketFile类 121 5.2.5 关闭套接字和清除相关的对象 122 5.3 CSocket类的编程模型 122 5.4 用CAsyncSocket类实现聊天室程序 123 5.4.1 实现目标 123 5.4.2 创建客户端应用程序 124 5.4.3 客户端程序的类与消息驱动 134 5.4.4 客户端程序主要功能的代码和分析 135 5.4.5 创建服务器端程序 142 5.4.6 服务器端程序的流程和消息驱动 144 5.4.7 点对点交谈的服务器端程序主要功能的代码和分析 145 5.5 用CSocket类实现聊天室程序 151 5.5.1 聊天室程序的功能 151 5.5.2 创建聊天室的服务器端程序 151 5.5.3 聊天室服务器端程序的主要实现代码和分析 154 5.5.4 创建聊天室的客户端程序 162 5.5.5 聊天室客户端程序的主要实现代码和分析 163 习题 170 实验 170 第6章 WinInet编程 172 6.1 MFC WinInet类 172 6.1.1 概述 172 6.1.2 MFC WinInet所包含的类 173 6.1.3 使用WinInet类编程的一般步骤 174 6.1.4 创建CInternetSession类对象 175 6.1.5 查询或设置Internet请求选项 176 6.1.6 创建连接类对象 177 6.1.7 使用文件检索类 178 6.1.8 重载OnStatusCallback函数 179 6.1.9 创建并使用网络文件类对象 180 6.1.10 CInternteException类 183 6.2 用MFC WinInet类实现FTP客户端 183 6.2.1 程序要实现的功能 183 6.2.2 创建应用程序的过程 184 习题 186 实验 187 第7章 WinSock的多线程 编程 188 7.1 WinSock为什么需要多线程编程 188 7.1.1 WinSock的两种I/O模式 188 7.1.2 两种模式的优缺点及解决方法 189 7.2 Win32操作系统下的多进程多线程机制 189 7.2.1 Win32 OS是单用户多任务的操作系统 189 7.2.2 Win32 OS是支持多线程的操作系统 190 7.2.3 多线程机制在网络编程中的应用 191 7.3 VC++对多线程网络编程的支持 192 7.3.1 MFC支持的两种线程 192 7.3.2 创建MFC的工作线程 193 7.3.3 创建并启动用户界面线程 195 7.3.4 终止线程 198 7.4 多线程FTP客户端实例 200 7.4.1 编写线程函数 200 7.4.2 添加事件处理函数 206 习题 208 第8章 WinSock的I/O模型 209 8.1 select模型 210 8.2 WSAAsyncSelect异步I/O模型 212 8.3 WSAEventSelect事件选择模型 216 8.4 重叠I/O模型 221 8.4.1 重叠I/O模型的优点 221 8.4.2 重叠I/O模型的基本原理 221 8.4.3 重叠I/O模型的关键函数和数据结构 222 8.4.4 使用事件通知实现重叠模型的步骤 225 8.4.5 使用完成例程实现重叠模型的步骤 227 8.5 完成端口模型 229 8.5.1 什么是完成端口模型 229 8.5.2 使用完成端口模型的方法 230 习题 238 第9章 HTTP及编程 239 9.1 HTTP 239 9.1.1 HTTP的背景 239 9.1.2 HTTP的内容 240 9.1.3 HTTP消息的一般格式 242 9.1.4 HTTP请求的格式 243 9.1.5 HTTP响应的格式 245 9.1.6 访问认证 248 9.1.7 URL编码 249 9.1.8 HTTP的应用 250 9.2 利用CHtmlView类创建Web浏览器型的应用程序 250 9.2.1 CHtmlView类与WebBrowser控件 250 9.2.2 CHtmlView类的成员函数 251 9.2.3 创建一个Web浏览器型的应用程序的一般步骤 256 9.3 Web浏览器应用程序实例 261 9.3.1 程序实现的目标 261 9.3.2 创建实例程序 262 习题 265 实验 265 第 10章 电子邮件协议与编程 267 10.1 电子邮件系统的工作原理 267 10.1.1 电子邮件的特点 267 10.1.2 电子邮件系统的构成 267 10.1.3 电子邮件系统的实现 268 10.2 简单邮件传送协议 270 10.2.1 概述 270 10.2.2 SMTP客户机与SMTP服务器之间的会话 270 10.2.3 常用的SMTP命令 271 10.2.4 常用的SMTP响应码 273 10.2.5 SMTP的会话过程 274 10.2.6 使用WinSock来实现电子邮件客户机与服务器的会话 274 10.3 电子邮件信件结构详述 275 10.3.1 Internet文本信件的格式标准——RFC 822 275 10.3.2 信件的头部 276 10.3.3 构造和分析符合RFC 822标准的电子信件 281 10.4 MIME编码解码与发送附件 281 10.4.1 MIME概述 281 10.4.2 MIME定义的新的信头字段 282 10.4.3 MIME邮件的内容类型 283 10.4.4 MIME邮件的编码方式 292 10.5 POP3与接收电子邮件 294 10.5.1 POP3 294 10.5.2 POP3的会话过程 294 10.5.3 POP3会话的3个状态 295 10.5.4 POP3标准命令 296 10.5.5 接收电子邮件的一般步骤 298 10.6 接收电子邮件的程序实例 299 10.6.1 实例程序的目的和实现的技术要点 299 10.6.2 创建应用程序的过程 301 10.7 发送电子邮件的程序实例 302 10.7.1 实例程序的目的和实现的技术要点 302 10.7.2 创建应用程序的过程 303 习题 305 参考文献 307
本书是一本介绍利用Visual C++进行网络通信程序开发的书籍,书中精选了大量网络实例,涵盖了本地计算机网络编程,局域网网络通信编程,IE编程,网络通信协议编程,串口通信编程,代理服务器编程和高级网络通信编程。每个工程实例都提供了完整的源代码,读者可以很容易地根据需要进行二次开发。本书适合进行网络通信开发的人员阅读,同时也可以作为科研单位,高校相关专业人员的参考书籍。<br><br>目录介绍<br>第1章 Visual C++网络通信编程基础 1<br>1.1 Winsock1.1编程技术 1<br>1.1.1 Winsock的基本概念 1<br>1.1.2 Winsock的编程特点 2<br>1.1.3 Winsock基本的API 2<br>1.1.4 Winsock的异步模式 7<br>1.1.5 面向连接协议和无连接协议 20<br>1.2 Winsock 2.0编程技术 21<br>1.2.1 Winsock 2.0技术说明 21<br>1.2.2 Winsock 2.0新增函数 25<br>1.2.3 Winsock网络程序——聊天室 26<br>1.3 CAsyncSocket编程技术 38<br>1.3.1 CAsyncSocket类的组成 38<br>1.3.2 CAsyncSocket编程模型 39<br>1.4 CSocket编程技术 41<br>1.4.1 CSocket类的组成 42<br>1.4.2 CSocket应用实例——聊天室 43<br>1.5 WinInet编程技术 52<br><br>第2章 本地计算机网络编程 57<br>2.1 获取计算机的名称和IP地址 57<br>2.2 获取计算机的子网掩码 60<br>2.3 获取计算机的DNS设置 62<br>2.4 获取计算机的网卡地址 63<br>2.5 获取计算机安装的协议 65<br>2.6 获取计算机提供的服务 67<br>2.7 获取计算机的所有网络资源 69<br>2.8 修改本地计算机的网络设置 70<br>2.9 获取计算机TCP/IP的所有信息 74<br><br>第3章 局域网网络通信编程实例 79<br>3.1 获取网上邻居 79<br>3.1.1 实现原理 80<br>3.1.2 实例实现 83<br>3.2 IP地址和主机名之间的转换 87<br>3.2.1 实现原理 87<br>3.2.2 实例实现 89<br>3.3 映射网络驱动器 93<br>3.3.1 实现原理 93<br>3.3.2 实例实现 95<br>3.4 局域网消息发送程序Net Send 97<br>3.4.1 实现原理 98<br>3.4.2 实例实现 101<br>3.5 获取局域网内其他计算机的信息 103<br><br>第4章 IE编程实例 111<br>4.1 简单的浏览器的实现 111<br>4.1.1 实现原理 111<br>4.1.2 实例实现 112<br>4.2 删除IE相关历史记录 116<br>4.2.1 实现原理 116<br>4.2.2 实例实现 117<br>4.3 将应用程序加入到IE工具栏 121<br>4.3.1 实现原理 122<br>4.3.2 实例实现 123<br>4.4 超级链接的实现 127<br>4.4.1 实现原理 127<br>4.4.2 实例实现 128<br>4.5 禁止IE的弹出窗口 132<br>4.5.1 实现原理 132<br>4.5.2 实例实现 133<br>4.6 禁止浏览某些网站 139<br>4.6.1 实现原理 139<br>4.6.2 实例实现 139<br>4.7 IE收藏夹 142<br>4.7.1 实现原理 142<br>4.7.2 实例实现 142<br>4.8 设置桌面快捷方式和活动桌面 145<br>4.8.1 实现原理 145<br>4.8.2 实例实现 146<br><br>第5章 基本网络编程实例 150<br>5.1 点对点文件传输 150<br>5.2 端口扫描程序 155<br>5.2.1 实现原理 155<br>5.2.2 实例实现 155<br>5.3 Finger编程 161<br>5.3.1 实现原理 162<br>5.3.2 实例实现 164<br>5.4 Sniff编程 166<br>5.4.1 实现原理 166<br>5.4.2 实例实现 167<br>5.5 Internet文件下载 178<br>5.5.1 实现原理 178<br>5.5.2 实例实现 180<br><br>第6章 网络通信协议编程实例 184<br>6.1 FTP协议 185<br>6.1.1 FTP工作原理 185<br>6.1.2 FTP数据表示 186<br>6.1.3 FTP命令 187<br>6.1.4 FTP应答 192<br>6.1.5 FTP客户端实例方法 194<br>6.1.6 FTP客户端实例实现 201<br>6.2 SMTP协议 221<br>6.2.1 SMTP会话 221<br>6.2.2 SMTP信件 225<br>6.2.3 SMTP客户端实例方法 232<br>6.2.4 SMTP客户端实例实现 233<br>6.3 POP3协议 259<br>6.3.1 POP3会话 259<br>6.3.2 POP3信件 264<br>6.3.3 POP3客户端实例方法 268<br>6.3.4 POP3客户端实例实现 268<br>6.4 ICMP协议 287<br>6.4.1 ICMP报文格式 287<br>6.4.2 ICMP时间戳请求与应答 289<br>6.4.3 Ping程序的实现 291<br>6.4.4 TraceRoute程序的实现 300<br>6.5 Telnet协议 308<br>6.5.1 Telnet协议 308<br>6.5.2 NVT ASCII字符集 309<br>6.5.3 协商选项 309<br>6.5.4 BBS实例实现 310<br>6.6 HTTP协议 323<br>6.6.1 HTTP会话 324<br>6.6.2 HTTP数据 329<br>6.6.3 HTTP客户端程序的实现 329<br>6.6.4 HTTP服务器实例实现 343<br><br>第7章 Modem/串口通信编程实例 353<br>7.1 AT命令 353<br>7.1.1 Modem状态 353<br>7.1.2 AT命令 354<br>7.1.3 Modem返回信息码 354<br>7.2 MSCOMM控件编程实例 355<br>7.2.1 实现原理 355<br>7.2.2 实例实现 356<br>7.3 串口通信API编程实例 360<br>7.3.1 打开和关闭串口 360<br>7.3.2 串口配置 362<br>7.3.3 串口属性设置 365<br>7.3.4 缓冲区控制 366<br>7.3.5 串口读写 367<br>7.3.6 通信事件 369<br>7.3.7 设备控制命令 370<br>7.3.8 实例实现 370<br><br>第8章 代理服务器编程实例 378<br>8.1 Socks 5协议编程 379<br>8.1.1 实例原理 386<br>8.1.2 实例实现 388<br>8.2 HTTP代理服务器实例 397<br>8.2.1 主框架代码分析 397<br>8.2.2 代理类CProxyServer的实现 399<br><br>第9章 高级实例解析 409<br>9.1 串口通信高级编程实例 409<br>9.1.1 主程序结构和流程 409<br>9.1.2 实例演示 409<br>9.1.3 实例原理 410<br>9.1.4 实例设计 414<br>9.1.5 代码分析 414<br>9.2 网络流量监控实例 425<br>9.2.1 主程序结构和流程 426<br>9.2.2 实例演示 426<br>9.2.3 实例原理 426<br>9.2.4 实例设计 428<br>9.2.5 代码分析 429<br>9.3 网站下载实例 438<br>9.3.1 主程序结构和流程 438<br>9.3.2 实例演示 438<br>9.3.3 实例原理 439<br>9.3.4 实例设计 441<br>9.3.5 代码分析 442<br>9.4 网络五子棋实例 458<br>9.4.1 主程序结构和流程 458<br>9.4.2 实例演示 458<br>9.4.3 实例原理 459<br>9.4.4 实例设计 459<br>9.4.5 代码分析 459<br>9.5 语音聊天实例 466<br>9.5.1 主程序结构和流程 467<br>9.5.2 实例演示 467<br>9.5.3 实例原理 468<br>9.5.4 实例设计 472<br>9.5.5 代码分析 473<br>9.6 远程控制实例 482<br>9.6.1 主程序结构和流程 482<br>9.6.2 实例演示 483<br>9.6.3 实例原理 484<br>9.6.4 实例设计 485<br>
电子设计基础知识 一、EDA设计基本流程 原理图(SCH)—————>网络报表的——————>印制板(pcb)的设计 生成设计 原理图:表达电路设计方案 网表:原理图与印制板直接的纽带 PCB:是工厂加工制作的基础 二、原理图的一般设计流程 1) 启动原理图编辑器 2) 设置原理图图纸 3) 设置工作环境 4) 装载元件库 5) 放置元件并布局 6) 原理图布线 7) 原理图的电气检查 8) 网络报表及其他报表生成 9) 文件存储及打印 三、PCB设计流程 1) 启动印制板编辑器 2) 设置工作环境 3) 添加网络报表 4) 设置PCB设计规则 5) 放置元件并布局 6) 印制电路板布线 7) 设计规则检查 8) 各种报表生成 9) 文件存储及打印 四、印制板的基本设计准则 1) 抗干扰设计原则 2) 热设计原则 3) 抗振设计原则 4) 可测试型设计原则 (在学习初级阶段,应重点掌握第一个原则) 五、抗干扰设计原则 1、电源线的设计 1) 选择合适的电源 2) 估算电流大小,计算电源线宽度,尽量加宽电源线 3) 保证电源线,底线走向和与数据传输方向一致 4) 使用抗干扰元器件(磁珠、电源滤波器等) 5) 电源入口添加去耦电容 2、地线设计 1) 模拟地和数字地分开 2) 低频电路尽量采用单点接地 3) 尽量加宽地线,使其能通过三倍于印制板上允许的电流,通常为2-3mm 4) 将敏感电路连接到稳定的接地参考源 5) 对PCB板进行分区设计,把高带宽的噪声电路与低频电路分开 6) 尽量减少接地环路的面积 3、元器件配置 1) 不能有过长的平行信号线 2) 保证PCB的时钟发生器、晶振和CPU的时钟输入端尽量靠近,同时远离其他低频器件 3) 元器件应围绕核心器件进行配置,尽量减少引线长度 4) 对PCB板进行分区布局 5) 考虑PCB板在机箱中的位置和方向 6) 缩短高频元器件之间的引线 4、去耦电容的配置(功能:1 储能 2 消除高频噪声) 1) 每10个集成电路要加一片充放电电容 2) 引线式电容用于低频,贴片式电容用于高频 3) 每个集成芯片要布置一个0.1uF的电容 4) 对抗噪声能力弱,关断时电源变化大的器件要加高频去耦电容 5) 电容之间不要共用过孔 6) 去耦电容引线不能太长 5、降低噪声和电磁干扰的原则 1) 尽量采用45度折线而不是90度折线(这样可以在一定程度上减少高频信号对外发射与 耦合) 2) 用串联电阻的方法来降低电路信号边沿的跳变速率 3) 石英晶振的外壳要接地 4) 闲置不用的门电路不要悬空 5) 时钟线垂直于IO线时干扰小 6) 尽量让时钟线周围的电动势趋于零 7) IO驱动电路尽量靠近PCB的边缘 8) 任何信号不要形成回路(环路) 9) 对高频板,电容的分布电感不能忽略,电感的分布电容也不能忽略 10) 通常功率线,交流线尽量布置在和信号线不同的板子上 6、其他设计原则 1) CMOS的未使用引脚要通过电阻接地或接电源 2) 用RC电路来吸收继电器、按钮等元件的放电电流 3) 总线上加10k左右的上拉电阻,有助于抗干扰 4) 采用全译码有更好的抗干扰性 5) 元器件不用的引脚通过10k电阻接电源 6) (地址、数据等)总线尽量短,尽量保持一样长度 7) 两层之间的布线尽量垂直 8) 发热元器件尽量避开敏感元件 ----------------------- 电子设计基础知识全文共3页,当前为第1页。 电子设计基础知识全文共3页,当前为第2页。 电子设计基础知识全文共3页,当前为第3页。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值