一、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++网络通讯编程(一)相关推荐

  1. JAVA TCP/IP网络通讯编程(二)

    一个实例通过client端和server端通讯 客户端通过TCP/IP传输资源文件,比如图片,文字,音频,视频等..... 服务端接受到文件存入本地磁盘,返回接受到:"收到来自于" ...

  2. C++ 用libcurl库进行http 网络通讯编程

    一.LibCurl基本编程框架 libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcurl ...

  3. .NET(C#)基于Socket编程实现平行主机之间网络通讯有图片传输的Demo演示

    本文讲下C#通过Socket编程实现平行主机之间网络通讯的详细讲解,非常不错的博文,一起来看下吧.      在程序设计中,涉及数据存储和数据交换的时候,不管是B/S还是C/S模式 ,都有这样一个概念 ...

  4. day06--java高级编程:多线程,枚举类,注解,反射,网络通讯

    1 Day16–多线程01 1.1 程序概念 程序(program):是为完成特定任务.用某种语言编写的一组指令的集合.即指一段静态的代码,静态对象. 1.2 进程 1.2.1 概念 进程(proce ...

  5. 网络编程-C/S、B/S结构、网络通讯

    一.网络编程概述: 1.1 软件结构: C/S结构:全称为Client/Server结构.是指客户端和服务器结构.常见的程序有QQ.迅雷等软件. 缺点:开发周期长,维护成本高.因为有客户端和服务器端, ...

  6. java 网络通讯_JAVA编程实现TCP网络通讯的方法示例

    本文实例讲述了JAVA编程实现TCP网络通讯的方法.分享给大家供大家参考,具体如下: TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字 ...

  7. 网络编程2_网络通讯协议, socket(tcp, udp)

    一. 网络通讯协议     互联网协议的功能: 定义计算机如何接入internet, 以及接入internet的计算机的通信标准     互联网协议按照功能的不同分为osi七层或tcp/ip五层    ...

  8. cocos2d-x3.2与服务端框架Firefly的网络编程(初级网络通讯)

    好久没写东西,最近在研究服务端框架Firefly和Pomelo,身为菜鸟的我的确花了很大功夫才看懂一些源代码.原来打算玩下Pomelo,不过我不得不说这东西真的是给专业开发者准备的,我搞了半天libp ...

  9. 用C#实现基于TCP协议的网络通讯

    TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程.然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实 ...

最新文章

  1. 分享我的第一个asp.net core开发过程
  2. python快速排序算法详细图解_Python实现桶排序与快速排序算法结合应用示例
  3. 第五章 使用 Bootstrap Typeahead 组件(百度下拉效果)
  4. c语言 去掉双引号_技术分享|浅谈C语言陷阱和缺陷
  5. 如何从开发小白到音视频专家
  6. Docker 如何删除及清理镜像
  7. webView实现网页缩放
  8. 计算机无法安装小丸工具箱,小丸工具箱
  9. 本地文件搜索神器everything介绍
  10. 结构梁配筋最牛插件_??Webpack 插件开发如此简单!
  11. 世界首块10层3D打印PCB电路板问世!
  12. 【保研】2021南京大学计算机夏令营笔试面试笔记
  13. 使用matplotlib画对数函数图像
  14. 企业协作工具竞品分析
  15. ndows 未能启动,Windows未能启动F8无效怎么办?
  16. [原]基因组变异检测概述
  17. 2020美国大学计算机博士专业排名,美国大学计算机系统专业排名2020年
  18. svn冲突问题详解 SVN版本冲突解决详解
  19. MATLAB的常用的三角函数 计算函数
  20. 自己动手写个微型 CSDN 吧,还能实现网页版 Blink,No.1

热门文章

  1. C#之网络精灵全面解析
  2. Linux常用命令——find命令大全
  3. Qt线程学习 一个QThread例子
  4. Python语言+pytest框架+allure报告+log日志+yaml文件+mysql断言实现接口自动化框架
  5. 【写博客常用】latex表格详细教程(table, tabular, multirow, multicolumn)latex表格内如何自动换行
  6. I3C协议Single Data Rate(SDR)模式研读(六):通用命令代码(CCC)
  7. 终于把整个Seafile服务器手册过了一遍,竟然一天就做完了,刺客感觉自己特别伟大!
  8. android开发google地图
  9. apache-activemq-5.14.1
  10. python画狗头_人工智能python+dlib+opencv技术10分钟实现抖音人脸变狗头详细图文教程和完整项目代码...