收藏官网首页
查看: 14403|回复: 1

Linux C 学习中的网络编程之通信机制和体系结构模式

15

主题

51

帖子

963

积分

版主

Rank: 7Rank: 7Rank: 7

积分
963
跳转到指定楼层
楼主
发表于 2015-7-3 12:16:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具

1.通信模式

所有的网络通信的实现方式可以分为两种:线路交换和包交换。

所谓线路交换,就是指传输时在发送端和接收端之间建立一个特定的线路连接,数据就可以在这条线路上传输。最常用的电话就是采用这种线路交换的技术。但是计算机网络采用的是包交换的方法。所有的计算机使用一个共同的网络连接,数据的发送端将要传输的数据分割成块,而每个块经过适当的处理(数据封装)后形成一个数据包,包中有接收端的地址等必要信息,并且每个包单独传输。包中的数据并不是限定死的,只要保证数据的正确传输即可,具体应该定义哪些信息,则与所使用的协议有关。


2.OSI 标准

OSI 标准就是开放系统互联标准(Open System Interconnection),它是国际标准化组织在1977 提出的一种参考模式。它定义的是一种七层通信协议标准。具体分层结构和功能如下(从高到低):


(1)应用层

应用层是网络的最高层,也就是最接近用户的一层。应用层里包含了构筑在各种通信协议上的网络应用软件,可以实现与用户直接交互的功能。例如电子邮件和文件传输程序等。

(2)表示层

表示层完成被传输数据的表示和解释工作,它包含数据转换和数据加密以及数据压缩等。它的主要功能为:为用户提供执行会话层服务原语的手段;提供描述复杂数据结构的方法;管理当前所需的数据结构集;完成数据的内部格式与外部格式间的转换。

(3)会话层

会话层使用运输层协议提供的可靠的端到端通信服务,并增加一些用户所需要的附加功能和建立不同机器上的用户之间的数据交换。

(4)传输层

它是OSI 网络体系结构中最核心的一层,它把实际使用的通信子网与高层应用分开,提供发送端和接收端之间的高可靠低成本的数据传输。TCP 和UDP 协议都属于这一层。

(5)网络层

网络层主要对主机和网络之间的交互进行定义,它又被称为通信子网层,定义了在网络中传输的基本数据单元以及目的寻址和选路的概念。IP 协议属于这一层。

(6)数据链接层

数据链接层对下层传来的数据进行打包封装,将上层的数据分割成帧,它还完成流量控制和差错处理的工作。

(7)物理层

物理层是OSI 的最底层,它规定传输媒体本身及与其相关联的机械和电气接口。这些接口和传输媒体必须保证发送和接受信号的一致性。


TCP/IP 协议

TCP/IP 协议是一组在网络中提供可靠数据传输和无连接数据服务的协议。其中提供可靠数据传输的协议称为传输控制协议TCP,而提供无连接数据包服务的协议叫做网际协议IP。但是TCP/IP 协议并不是只有TCP 和IP 两个协议,而是包含很多其他协议的一个网络协议的集合。

TCP/IP 协议于1983年开始在ARPA网上运行,并于当年插入BSDUNIX 操作系统的内核,成为该操作系统的一部分。随后TCP/IP 协议随着UNIX 操作系统的普及而广泛流行,逐渐成为使用最广泛的协议。使用TCP/IP 协议的网络提供的主要服务有:电子邮件、文件传送、远程登录、网络文件系统、电视会议系统以及Mwsaic 和万维网等。


TCP/IP 协议的体系结构包含四层(从高到低):

(1)应用层

应用层包括网络应用程序和网络进程,是与用户交互的界面,它为用户提供所需要的各种服务,包括远程登录、文件传输和电子邮件等。它的作用相当于OSI 中的应用层及表示层和会话层。

(2)传输层

相当于OSI 中的传输层,它为应用程序提供通信服务,这种通信又叫端对端通信。它有三个主要协议:传输控制协议(TCP),用户数据包协议(UDP)和互联网控制消息协议(ICMP)。


TCP 协议 以建立连接高可靠性的消息传输为目的,它负责把大量的用户数据按一定的长度组成多个数据包进行发送,并在接收到数据包之后按分解顺序重组和恢复用户数据。它是一种面向连接的可靠的双向通信的数据流。

UDP 协议 提供无连接数据包传输服务,它把用户数据分解为多个数据包后发送给接收方。它具有执行代码小以及系统开销小和处理速度快等优点。

ICMP 协议 主要用于端主机和网关以及互联网管理中心等地消息通信,以达到控制管理网络运行的目的。ICMP 协议能发送出错消息给发送数据包的端主机,还有限制流量的功能。

(3)网络层

相当于OSI 的网络层,使用的协议是IP 协议。它是用来处理机器之间的通信问题的,它接收传输层请求,传输某个具有目的地址信息的分组。该层把分组封装到IP 数据包中,填入数据包的头部(包头),使用路由算法来选择是直接把数据包发送到目标主机还是发给路由器,然后把数据包交给下面的网络接口层中的对应网络接口模块。

(4)网络接口层

相当于OSI 中的数据链接层和物理层。它负责接收IP 数据包和把数据包通过选定的网络发送出去。



21

主题

217

帖子

769

积分

高级会员

Rank: 4

积分
769
沙发
发表于 2015-7-3 17:31:10 | 只看该作者
虽然我看不明白,但是感觉好像有些高端,如果对开发者有帮助的话,这个完全是ok的,加油,有图片个人感觉会更好
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表