【网络编程】网络协议分层

概述

为了促 进计算机网络的发展,国际标准化组织(ISO)在现有网络的基础上,提出了不基于具体机型、操作系统或公司的网络体系结构,称为开放系统互联模型 (OSI)。这个模型把网络通信的工作分为7层:物理层、数据链路层、网络层、转输层、会话层、表示层、应用层;每层完成的任务不同,物理层规定了通信设 备的机械的、电气的、功能的和规程的特性,用以建立、维护和拆除物理链路连接。链路层在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过 差错控制提供数据帧在信道上无差错的传输,在不可靠的物理介质上提供可靠的传输,完成物理地址寻址、数据的成帧、流量控制、数据的检错、重发。网络层将数 据链路层的帧组成数据包,包中封装有网络层包头,其中含有逻辑地址信息,选择合适的网间路由和交换结点,确保数据及时传送。传输层的数据单元也称为数据 包,但TCP的数据单元称为段,而UDP的数据单元称为数据报,这个层负责获取全部信息,为上层提供端到端的透明的、可靠的数据传输服务。会话层称为对话 层或会晤层,在会话层及以上的高层次中,数据传送的单位不在另外命名,统称为报文。会话层提供包括访问验证和会话管理在内的建立和维护应用之间通信的机 制。表示层解决用户信息的语法表示问题。提供格式化的表示和转换数据服务,数据的压缩和解压缩,数据的加密和解密。应用层为操作系统或网络应用程序提供访 问网络服务的接口。

因此,网络协议体系分层的基本思想是:使网络协议体系有统一的规定和规则;各层分别完成不同的任务,利于网络的维护,出现错误时,更方便管理人员按层验察错误。

OSI/RM(开放系统互联/参考模型)
共分7层,从高到低依次为:
应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

TCP/IP
共分4层,从高到低依次为:
应用层、传输层、网络层、网络接口层。
其中应用层对应 OSI/RM 中上三层;网络接口层有时也称做链路层或数据链路层,对应 OSI/RM 中的数据链路层;传输层和网络层分别对应 OSI/RM 中的传输层和网络层。

每个层的概念和作用

1) 物理层

物理层处于OSI参考模型的最低层,是利用物理传输介质为数据链路层提供物理连接,以便透明地传送比特流。物理层提供激活、维持、去活物理连接的所需机械特性、电气特性、功能特性、规程特性的手段。

连接设备:LAN中的各种粗、细同轴电缆、T型接、插头,接收器,发送器,中继器等都属物理层的媒体和连接器。转发器Repeater、集线器Hub、重发器(也称中继器或转发器)

示例:Rj45,802.3等。

2) 数据链接层

在物理层提供比特流传输服务的基础上,在通信的实体之间建立数据链路连接,传送以祯为单位的数据,采用差错控制、流量控制方法,使有差错的物理线路变成无差错的数据链路。纠错和流量控制是链路层的两个主要功能。

连接设备:网桥(也称桥接器)Bridge(可以进行两个网段之间的数据链路层的协议转换)

示例:ATM,FDDI等。

3) 网络层

网络层主要任务是通过路由算法,为分组通过通信子网选择最适合的路径。提供网络层对等实体建立、维持、终止网络连接的手段,并在网络连接上交换网络层协议数据单元,即分组。其中,一个重要功能是网络选路和寻址 。

连接设备: 路由器Router、桥路器Brouter(网桥和路由器的混合系统)

示例:IP,IPX等。

4) 传输层

传输层的主要任务是向用户提供可靠的端到端服务,透明地传送报文。它向高层屏蔽了下层数据通信的细节,在通信子网中无传输层.流量控制(Flow control)是传输层的一个重要功能.

示例:TCP,UDP,SPX。

5) 会话层

为会话连接提供手段,会话层的主要任务是组织两个会话进程之间的通信,并管理数据的交换。

示例:RPC,SQL等。

6) 表示层

表示层主要用于处理两个通信系统中交换信息的表示方式。它将要交换数据的抽象语法(适合于某一用户)转换为传送语法(适合于OSI内部使用)——公共表示方法.

示例:加密,ASII等。

7) 应用层

应用层是OSI参考模型中的最高层。应用层确定进程之间通信的性质,为用户应用进程访问OSI提供接口,并负责信息的语义表示,以满足用户的需要。

连接设备:网关Gateway(也称网间连接器、信关或联网机)(用来连接异种网络(包括不同的各类网络操作系统),实现网络之间协议的转换)

示例:Telnet,HTTP,FTP,WWW,NFS,SMTP等。

Internet的应用层协议很多,常见的有:

  • TELNET—— 远程登录协议
  • FTP —— 文件传输协议
  • SMTP —— 简单邮件传输协议
  • DNS —— 域名服务协议
  • NSP —— 名字服务协议
  • HTTP —— 超文本传输协议
  • SNMP —— 简单网络管理协议

Internet提供的服务有:

  • 远程登录telnet——TELNET协议
  • 文件传输ftp——FTP协议
  • 电子邮件E-mail——SNMP协议
  • 网络新闻news——NNTP协议
  • 以菜单方式浏览信息Gopher
  • 按内容自动查找WAIS
  • 全球范围的超媒体信息浏览服务WWW

网络协议分层的优点

1) 灵活性好

当任何一层发生变化时,只要层间接口关系保持不变,则在这层以上或以下各层均不受影响。此外,对某一层提供的服务还可进行修改。当某层提供的服务不再需要时,甚至可以将这层取消,更容易管理。

2) 各层之间是独立的


各层间标准化接口,允许不同的产品只提供各层功能的一部分某一层不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间的接口所提供的服务。由于
每一层只实现一种相对独立的功能,因而可将一个难以处理的复杂问题分解为若干个较容易处理的更小一些的问题。这样,整个问题的复杂度就下降了。

3) 易于实现和维护

这种结构使得实现和调试一个庞大而又复杂的系统变得易于处理,因为整个的系统已经被分解为若干个相对独立的子系统, 减少复杂性,允许更容易编程改变或快速评估。

4)  能促进标准化工作

因为每一层的功能及其所提供的服务都已有了精确的说明,较低的层为较高的层提供服务。

参考资料

http://baike.baidu.com/view/736180.htm?fr=aladdin

http://baike.baidu.com/view/3501759.htm?fr=aladdin

http://yejioushao.blog.163.com/blog/static/699041832008718052379/

http://course.cug.edu.cn/computernet/CH_1/CH_1_3.HTM

http://www.2cto.com/net/201308/238189.html

时间: 2024-11-06 03:38:22

【网络编程】网络协议分层的相关文章

C#网络编程(订立协议和发送文件)

C#网络编程(订立协议和发送文件) - Part.4 文件传输 前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件.比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1.S2或S3(S为Send缩写)时,分别向服务端发送文件Client01.jpg.Client02.jpg.Client03.jpg:当我们输入R1.R2或R3时(R为Receive缩写),则分别从服务端接收文件Server01.jpg.Server02.jpg.Server03.

[转] - Linux网络编程 -- 网络知识介绍

(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端        在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序. 比如我们使用ftp程序从另外一        个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程序. 服务端        和客户端相

Socket网络编程--网络爬虫(1)

我们这个系列准备讲一下--网络爬虫.网络爬虫是搜索引擎系统中十分重要的组成部分,它负责从互联网中搜集网页,采集信息,这些网页信息用于建立索引从而为搜索引擎提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果.网络爬虫的基本工作原理: (1)从一个初始URL集合中挑选一个URL,下载该URL对应的页面: (2)解析该页面,从该页面中抽取出其包含的URL集合,接下来将抽取的URL集合再添加到初始URL集合中: (3)重复前两个过程,直到爬虫达到某种停止

Linux网络编程------网络编程基础

Socket(套接字),类似文件描述符,三种 1.流式套接字(SOCK_STREAM):可以提供可靠的.面向连接的通讯流,它使用TCP协议.TCP保证了数据传输的正确性和顺序性. 2.数据报套接字(SOCK_DGRAM):定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错,它使用数据报协议(UDP). 3.原始套接字(SOCK_RAW):直接基于IP协议. 网络地址 struct sockaddr用于记录网络地址: struct sockaddr { u_s

网络编程—网络基础概览、socket,TCP/UDP协议

网络基础概览 socket概览 socket模块-TCP/UDP的实现 TCP/UDP总结 网络基础概览 osi七层协议各层主要的协议 # 物理层传输电信号1010101010 # 数据链路层,以太网协议,arp协议.对这些信号进行分组,同时规范了分组形式--以太网协议,头部是mac地址中间是信息, # 网络层:ip协议,arp协议帮忙找到mac地址,ip,子网掩码,网关(下面有一些简单概括) # 传输层:tcp协议,udp协议 # (socket)就是一组接口,将复杂的tcp协议和udp协议隐

Java 网络编程 UDP协议

网络编程 TCP/IP协议:多台计算机网络连接的规则 包括:TCP协议.IP协议.UDP协议和其它协议的协议组 层次结构: 链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤.网线提供的驱动.硬件方面的 网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络. 传输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议. 应用层:主要负责应用程序的协议,例如HTTP协议.F

linux网络编程--网络编程的基本函数介绍与使用【转】

本文转载自:http://blog.csdn.net/yusiguyuan/article/details/17538499 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的.本文的主要内容如下: 1.网络中进程之间如何通信? 2.Socke

JAVA基础知识之网络编程——-网络基础(多线程下载,get,post)

本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web资源,URLDecode和URLEncode用来转换字符串. 本文会写两个例子来演示java网络编程的一些基本用法. 第一个例子,写一个程序用来模拟多线程下载. 本例中用到的技术有,多线程--多个线程同时读文件写文件,可以加快下载速度, 线程池--在本例中线程池不是必须,甚至是多余,只不过是为了演示

UNIX网络编程——网络I/O模型

在学习UNIX网络编程的时候.一開始分不清 同步 和 异步,所以还是总结一下,理清下他们的差别比較好. IO分类 IO依据对IO的调度方式可分为堵塞IO.非堵塞IO.IO复用.信号驱动IO.异步IO. IO操作整个流程分为 可操作推断 和 实际IO操作 两个区间,我们能够称之为两个半程,前半程推断是否可操作,后半程进行实际操作. 当中堵塞IO.非堵塞IO.IO复用.信号驱动IO由于其[实际的IO操作是同步堵塞]的,所以一般把他们归为同步IO,异步IO的实际IO操作是在独立的线程中完毕的,所以称为

Linux网络编程——网络协议入门

我们每天使用互联网,你是否想过,它是如何实现的? 全世界几十亿台电脑,连接在一起,两两通信.北京的某一块网卡送出信号,深圳的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗? 为了使各种不同的计算机之间可以互联,ARPANet指定了一套计算机通信协议,即TCP/IP协议( 族 ),它们对电脑如何连接和组网,做出了详尽的规定.理解了这些协议,就理解了网络的原理. 因为这些协议实在太复杂.太庞大,这里只是整理一个简洁的框架,帮助大家从总体上把握它们. 一.概述