C/C++网络通讯编程(一)
一、Internet与TCP/IP协议
Internet的发展大致可为四个阶段:60年代,Internet起源;70年代,TCP/IP协议,Internet随之发展起来;80年代,NFSnet出现,并成为当今Internet的基础;90年代,Internet进入高速发展时间,并开始向全世普及。
1958年美国总统艾林豪威尔向美国国会提出建立DARPA(Defense Advanced Research Project Agency),即国防部高级研究计划署,简称为ARPA。1968年6月DARPA提出“资源共享计算机网络中”。
早期的ARPAnet使用网络控制协议(Network Control Protocol,NCP),不能互联不同类型的计算机和不同类型的操作系统,没有纠错功能。
1973年由Kahn和VintonCerf两人合作为ARPAnet开发了新的一套互联协议,此协议在1974年12月两人正式发表第一份TCP协议详细说明,但此协议有信包失时不能得到有效的纠正。
TCP协议分成两个不同的协议:
l 用来检测网络传输中差错的传输控制协议TCP
l 专门负责对不同网络进行互联的互联网协议IP
从此TCP/IP协议诞生。
1983年ARPAnet上停止使用CNP,互联网上的主机全部使用TCP/IP协议,TCP/IP协议成为Internet中的“世界语”。
二、OSI模型与TCP/IP协议体系结构
网络采用分而治之的方法设计,将网络的功能划分为不同的醋,以分层的形式有机组合在一起,每层实现不同的功能,其内部实现方法对外部其他层次来说透明,每层向上层提供服务,也可以使用下层提供的服务。网络体系结构即指骨网络的层次结构和每层所使用协议的集合。两类非常重要的体系结构是:OSI与TCP/IP。
OSI(开放系统互联 Open System Interconnection)
国际标准化组织(ISO)制定OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机通信的基本框架。OSI模型把网络通信的工作分为七层:物理层,数据链路层,网络层,传输层,会话层,表示和应用层。
设计目的:
OSI模型的设计目的是成为一个所能销售商都能实现的开放网路模型,来克服使用众多私有网络模型所带来的困难和低效性。OSI是在一个备受尊敬的国际标准团体参与下完成的, 这个组织就是ISO(国际标准化组织)。
分层原则:
网络中各结点都有相同的层次
不同结点相同层次具有相同的功能
同一结点相邻层间通过接口通信
每一层可以使用下层提供的服务,并向上层提供服务
不同结点的同等层间通过协议来实现对等层间的通信
OSI/RM分层
对等层实体间通信时信息的流动过程
对等层通信的实体
对等层实体之间虚拟通信,下层向上层提供服务;实际通信在最低层完成,发送方数据由最高层逐渐向下层传递;到接收方数据由最低层逐渐向高层转递。
协议数据单元PDU:OSI参考模型中,对等层协议之间交换的信息单元统称为协议数据单元(PDU protocol Data Unit)。
而传输层及以下各层的PDU另外还有各自特定的名称:
传输层-------数据段(segment)
网络层------分组(数据包)(Packet)
数据链路层------数据帧(Frame)
物理层------比特(Bit)
1、物理层(PhysicalLayer)
物理层是OSI分层结构体系中最重要、最基础的一层,它建立在传输媒介基础上,实现设备之间的物理接口。只接收和发送一串比特流,不考虑信息的意义和信息结构。物理层的数据单位是位(比特流)。
属于物理层定义的典型 规范代表包括:EIA/TIARS-232,RJ-45等。
物理层的主要功能:为数据端设备提供传送数据的通路,数据通路可以是一物理媒体,也可以是多个物理媒体连接而成。
物理层的主要设备:中继器、集线器。
中断器的应用:数据传输、数据转换及延长网络,作用:放大信号、补偿信号衰减。
集线器(Hub):局域网中的基础设备,功能:信号放大。
2、数据链路层(DataLinkLayer)
在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信息上无差错的传输,同时为其上面的网络层提供有效的服务。
作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等等。
数据链路层协议的代表包括:SDLC,HDLC,PPP,STP,帧中继等。
主要功能:实现系统实体间二进制信息块的正确传输。为网络层提供可靠无错误的数据信息。
数据链路层主要设备:二层交换机、网桥
3、网络层(Network layer)
网络层也称为通信子网层,是高层协议之间的界面层,用于控制通信子网的操作,是通信子网与资源子网的接口。
在网络层交换的数据的单位是:数据包(packet)。
网络层协议的代表包括:IP,IPX,OSPF等。
网络层主要功能:路由选择和中继。
网络层主要设备:路由器。
路由器原理:路由器分本地路由器和远程路由器,本地路由器是用来连接网络传输介质的:光纤、双绞线及同轴电缆;远程路由器是用来连接远程传输介质,并要求相应的设备,如电话线要配调制解器,无线要通过无线接收机、发射机。路由器作用:连通不同的网络,信息传输。
4、传输层(Transport layer)
传输层建立 在网络层和会话层之间。实质上它是网络体系结构中高低层衔接的一个接口层。
传输层的数据单元称为:数据段(segment)这个层负责获取全部信息,因此,它必须跟踪数据单元碎片、乱序到达的数据包和其它在传输过程中可能发生的危险。
传输层协议的代表包括:TCP,UDP,SPX等等。
5、会话层(Session layer)
此层可称为会晤层或对话层,在会话层及以上的高层次中,数据传送的单位不再另外命名,统称为报文。
主要功能:会话层连接到传输层的映射会话连接的流量控制,数据传输,会话连接恢复与释放,会话连接管理 及差错控制。
6、表示层(Presentation layer)
表示层对向上对应用层服务,向下接来自会话层的服务。表示层为应用提供服务包括语法选择、语法转换等。
7、应用层(Application layer)
网络应用层是通信用户之间的窗口,为用户提供网络管理,文件传输、事务处理等服务。
应用层为操作系统或网络应用程序提供访问网络服务的接口。
应用层协议的代表包括:Telnet,FTP,HTTP,SNMP,DNS等。
C/C++网络通讯编程(一)相关推荐
- JAVA TCP/IP网络通讯编程(二)
一个实例通过client端和server端通讯 客户端通过TCP/IP传输资源文件,比如图片,文字,音频,视频等..... 服务端接受到文件存入本地磁盘,返回接受到:"收到来自于" ...
- C++ 用libcurl库进行http 网络通讯编程
一.LibCurl基本编程框架 libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl ...
- .NET(C#)基于Socket编程实现平行主机之间网络通讯有图片传输的Demo演示
本文讲下C#通过Socket编程实现平行主机之间网络通讯的详细讲解,非常不错的博文,一起来看下吧. 在程序设计中,涉及数据存储和数据交换的时候,不管是B/S还是C/S模式 ,都有这样一个概念 ...
- day06--java高级编程:多线程,枚举类,注解,反射,网络通讯
1 Day16–多线程01 1.1 程序概念 程序(program):是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态对象. 1.2 进程 1.2.1 概念 进程(proce ...
- 网络编程-C/S、B/S结构、网络通讯
一.网络编程概述: 1.1 软件结构: C/S结构:全称为Client/Server结构.是指客户端和服务器结构.常见的程序有QQ.迅雷等软件. 缺点:开发周期长,维护成本高.因为有客户端和服务器端, ...
- java 网络通讯_JAVA编程实现TCP网络通讯的方法示例
本文实例讲述了JAVA编程实现TCP网络通讯的方法.分享给大家供大家参考,具体如下: TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字 ...
- 网络编程2_网络通讯协议, socket(tcp, udp)
一. 网络通讯协议 互联网协议的功能: 定义计算机如何接入internet, 以及接入internet的计算机的通信标准 互联网协议按照功能的不同分为osi七层或tcp/ip五层 ...
- cocos2d-x3.2与服务端框架Firefly的网络编程(初级网络通讯)
好久没写东西,最近在研究服务端框架Firefly和Pomelo,身为菜鸟的我的确花了很大功夫才看懂一些源代码.原来打算玩下Pomelo,不过我不得不说这东西真的是给专业开发者准备的,我搞了半天libp ...
- 用C#实现基于TCP协议的网络通讯
TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程.然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实 ...
最新文章
- 分享我的第一个asp.net core开发过程
- python快速排序算法详细图解_Python实现桶排序与快速排序算法结合应用示例
- 第五章 使用 Bootstrap Typeahead 组件(百度下拉效果)
- c语言 去掉双引号_技术分享|浅谈C语言陷阱和缺陷
- 如何从开发小白到音视频专家
- Docker 如何删除及清理镜像
- webView实现网页缩放
- 计算机无法安装小丸工具箱,小丸工具箱
- 本地文件搜索神器everything介绍
- 结构梁配筋最牛插件_??Webpack 插件开发如此简单!
- 世界首块10层3D打印PCB电路板问世!
- 【保研】2021南京大学计算机夏令营笔试面试笔记
- 使用matplotlib画对数函数图像
- 企业协作工具竞品分析
- ndows 未能启动,Windows未能启动F8无效怎么办?
- [原]基因组变异检测概述
- 2020美国大学计算机博士专业排名,美国大学计算机系统专业排名2020年
- svn冲突问题详解 SVN版本冲突解决详解
- MATLAB的常用的三角函数 计算函数
- 自己动手写个微型 CSDN 吧,还能实现网页版 Blink,No.1
热门文章
- C#之网络精灵全面解析
- Linux常用命令——find命令大全
- Qt线程学习 一个QThread例子
- Python语言+pytest框架+allure报告+log日志+yaml文件+mysql断言实现接口自动化框架
- 【写博客常用】latex表格详细教程(table, tabular, multirow, multicolumn)latex表格内如何自动换行
- I3C协议Single Data Rate(SDR)模式研读(六):通用命令代码(CCC)
- 终于把整个Seafile服务器手册过了一遍,竟然一天就做完了,刺客感觉自己特别伟大!
- android开发google地图
- apache-activemq-5.14.1
- python画狗头_人工智能python+dlib+opencv技术10分钟实现抖音人脸变狗头详细图文教程和完整项目代码...