TCP/IP协议同ISO/OSI模型一样,也可以安排成栈形式。但这个栈不同于ISO/OSI版本,比ISO/OSI栈少,所以又称之为短栈。另外,需要知道的是:TCP/IP协议栈只是许多支持ISO/OSI分层模型协议栈的一种,是一个具体的协议栈。

对于TCP/IP协议栈划分为几层更合适,多年来专家们一直未达成共识,大部分对TCP/IP协议栈的描述都假定它占据了协议结构的4到5个功能层。下面我们对这两种主流的分层方法分别进行描述。

1  基于4层的TCP/IP协议栈基本描述

基于4层的TCP/IP协议栈最具说服力的是:这一观点是由TCP/IP原始标准的创立者——美国国防部提出的,它与ISO/OSI参考模型的对应关系如下图:

图1  TCP/IP协议栈层次结构与ISO/OSI参考模型的对应关系

如图1所示,TCP/IP协议栈从低层开始,依次为网络存取层、网络互连层、传输层和应用层,具体描述如下:

1.1  网络存取层(Network Access Layer)

网络存取层(又称网络层),位于TCP/IP协议栈的最低层,该层中的协议提供了数据传送的方法,使得系统可以通过连接的网络将数据传送到其它设备,并定义了如何利用网络来传送IP数据报。它基本上包括了ISO/OSI模型中的数据链路层和物理层的所有功能。TCP/IP网络存取层定义了网络传送IP数据报的方式(即流与分组),使得系统能够把数据传送给与网络直接相连的设备。

网络存取层的协议与较高层协议不一样,它必须知道物理网络的各种细节,以便准确地格式化传输的数据,使其遵守网络规定。因此,网络存取层的协议种类繁多,每一个协议都对应一种物理网络标准。这些协议常常由设备驱动程序和相关的程序结合而成,其内含的API除将IP数据封装成能在网络中传送的单元——帧外,还能将IP地址转换成为网络使用的物理地址。典型的协议实例有RFC 826(地址转换协议 ARP)、RFC 894(以太网上IP数据报传输标准)等。

1.2  网络互连层 (Internet Layer)

网络互连层(又称网际层)位于网络存取层之上,由互连网协议(IP)、互连网控制报文协议(ICMP)和互连网组管理协议(IGMP)等协议组成。IP是TCP/IP的核心,也是网络互连层中最重要的协议,它提供基本的分组传送服务,是构建TCP/IP网络的基础。因为,无论是IP上层还是IP下层的协议,也不管数据是输入还是输出,目的地在何方,它们都使用IP来传递数据。概括起来,IP主要完成以下任务:

  • 定义数据报,数据报是Internet中传输的基本单元。
  • 定义Internet地址系统。
  • 把数据报分解或重组成易于在网络中传输的结构。
  • 在网络存取层和传输层之间传递数据。
  • 给远端主机的数据报指定路由。
  • 完成数据报的拥挤控制和信息控制。

IP是一个“无连接协议”,它在传输数据之前不交换控制信息来建立端到端的连接,而且还要依靠其它层的协议提供错误检测和错误恢复。但这并不能说明IP协议是不可信赖的,事实上,它可以正确的将数据传送到已连接的网络,只是它并不能检验数据是否被正确地接收。

1.3  传输层( Transport Layer)

传输层也称主机到主机的传输层,位于TCP/IP栈的第3层,它为应用层提供可靠的或不可靠的端到端服务。TCP(传输控制协议)和UDP(用户数据报协议)是传输层中两个最重要的协议。它们都为应用层和网络互连层传送数据,二者的区别在于:TCP是一种可靠的、面向连接的、字节流协议,它利用端到端错误检测与纠正功能提供可靠的数据传输服务,因为它能验证数据在网络上是否以合适的序列正确地传输;而UDP是一个不可靠的无连接数据报协议,就像IP一样,它能为应用程序提供低开销的无连接数据报传输服务。

总之,TCP的优势在于可靠,但开销大;而UDP比较适合于传输的数据量少及使用“查询——响应”方式的应用程序的服务。

1.4  应用层(Application Layer)

应用层位于TCP/IP协议栈的顶层,它为用户提供各种网络服务,如文件传输、远程登录、电子邮件等。同时,应用层包含与具体应用程序相关的所有细节。

对于网络软件工程师而言,你在应用层的工作是将信息传到协议栈的下一合适层。协议栈的每一层要完成各自的功能。也就是说,TCP/IP协议将共同工作,完成地址转换、寻址和数据传输工作。为了和协议栈上的协议通信,必须知道有哪些协议可用,并知道它们在协议栈中的位置和功能。正常情况下应用程序将和传输协议的某一个协议(TCP或UDP)进行通信,或不使用传输层服务,直接与网络互连层的IP打交道(如外部网关协议 EGP)。

2  基于5层的TCP/IP协议栈基本描述

相对于ISO/OSI模型,基于5层的TCP/IP协议比基于4层的TCP/IP协议更容易理解,具体的分层方案如下图2:

图2   TCP/IP协议栈层次结构与ISO/OSI参考模型的对应关系

比较图2和图1可以看出,从顶层向下三层(应用层、传输层和网络互连层)对于基于5层的TCP/IP和基于4层的TCP/IP其功能都是一样的,这里不在赘述。除此之外,基于5层的TCP/IP在低层比基于4层的TCP/IP分层更详细,即用物理层和链路层两层来表示上面讲到的网络存取层。

2.1  物理层

TCP/IP协议栈的物理层与ISO/OSI模型的物理层相同——它包括携带网络数据的传输媒体介质,这种介质通常是双绞线、同轴电缆或标准串口线等,网络设计人员必须知道网络介质的传输特性。

2.2  链路层

链路层包括一个硬件接口和两个协议模块:地址解析协议(ARP)和反向地址解析协议(RARP)。链路层处理物理层和网络互连层的数据交换,并向网络互连层隐藏物理层的执行细节。当链路层完成其工作时,网络互连层的协议不关心网络是使用以太网技术还是令牌环技术,网络互连层只是简单地将数据传给链路层,然后由链路层处理所有进一步的数据传输。

综上所述,不论采用哪种分层方式,其核心和功能是一样的,特别是在应用层。应用层的初级网络用户对分层几乎不感兴趣,但要进行网络编程的人必须清楚这一点:当用户启动了某个应用层服务之后,该应用要首先建立一个到某特定机器的连接,随后告诉目的机器本次连接的操作意图,并控制整个操作过程。在源计算机系统中,应用层将要发送的信息交给服务层的TCP(或UDP),TCP通过增加TCP协议所规定的报头来确保信息正确地传输到目的地。然后,TCP把包括目的地址在内的报头和用户数据交给网络互连层的IP,IP负责为信息选择路由。由于 TCP和IP处理与网络有关的细节,所以应用层协议可以将一个网络连接看成一个简单的字节流,而不必描述与通信有关的任何细节。

对网络通信软件设计者而言,一个网络连接可由两对元素完全刻画:源主机的IP地址和应用程序端口号;目的主机的IP地址和应用程序端口号。为了保证使用TCP/IP 协议的网络中两台主机的正常连接,应禁止使用相同的IP地址和端口号,特别是IP地址。

TCP/IP协议——TCP/IP协议栈及框架的更多相关文章

  1. IP协议号 IP首部中有8位协议号,用于指明IP的上层协议.

    IP协议号   IP首部中有8位协议号,用于指明IP的上层协议. 0 HOPOPT IPv6 逐跳选项 1 ICMP Internet 控制消息 2 IGMP Internet 组管理 3 GGP 网 ...

  2. TCP/IP 协议:IP 协议

    首先来看一下IP协议在实际中的位置: 我们只关系流程,不关系当前具体的服务类型 1.IP协议概述 作用: 从上图或从应用层->运输层->网络层->链路层来看,IP协议属于网络层,也就 ...

  3. TCP/IP协议之IP层

    TCP/IP协议的结构参见下图.有应用层,运输层,网络层,链路层. 但是如果更细化的话,其实还有几层没在这上面体现出来. 1 表示层:数据格式化,代码转换,加密. 没有协议 2 会话层:解除或者建立与 ...

  4. TCP/IP协议--TCP协议概括和TCP连接的建立和终止

    TCP提供一种面向连接的.可靠的字节流服务.面向连接指,发送和接收方在交换数据前必须建立一个TCP连接.顺便说下,一个TCP连接只有两方,因此广播和多播是不能应用于TCP的.字节流指,两个应用程序通过 ...

  5. TCP/IP协议族——IP工作原理及实例具体解释(上)

     IP协议具体解释 本文主要介绍了IP服务特点,头部结构,IP分片知识,并用tcpdump抓取数据包.来观察IP数据报传送过程中IP的格式,以及分片的过程. IP头部信息:IP头部信息出如今每一个 ...

  6. tcp/iP协议族——IP工作原理及实例具体解释(下)

     IP协议具体解释 上一篇文章文章主要介绍了IP服务的特点,IPv4头部结构IP分片.并用tcpdump抓取数据包,来观察IP数据报传送过程中IP的格式,以及分片的过程.本文主要介绍IP路由,IP ...

  7. 结合Wireshark捕获分组深入理解TCP/IP协议之IP协议

    摘要:     本文简单介绍了网络层理论知识,详细讲解了IP数据报各个字段,并从Wireshark俘获分组中选取IP数据报进行分析,也阐述了分组和分片的区别.   一.IPv4数据报     网络层是 ...

  8. TCP/IP协议 | TCP协议 | UDP协议 | 三次握手四次挥手

    TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP.SMTP.TCP.UDP.IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP ...

  9. ip协议,IP,子网掩码,ping命令是什么

    ip协议: 定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示 IP地址:是给每个连接在Internet上的主机分配的一个32bit ...

随机推荐

  1. cannot ignore cache if it is not cached [ArcGIS Catalog 10]

    由于我把缓存重命名,重启地图服务,再Caching中不再显示地图缓存了,我直接创建新的地图缓存,没想到出现了: 不知道怎么回事. 只好,把缓存 重新改名成原来的名字,然后,删除缓存,再建立缓存.

  2. storm的一些相关文章

    文章可以看这些: https://www.cnblogs.com/zhaojiankai/p/7257617.html https://blog.csdn.net/wangshuminjava/art ...

  3. 《Hadoop大数据架构与实践》学习笔记

    学习慕课网的视频:Hadoop大数据平台架构与实践--基础篇http://www.imooc.com/learn/391 一.第一章 #,Hadoop的两大核心:     #,HDFS,分布式文件系统 ...

  4. CSS-文本垂直居中

    文本水平居中可以将text-align设置为center即可,垂直居中的话如果是单纯的设置vertical-align是没办法单独设置成功的,垂直居中的文字分为单行文本和多行文本,主要是两种不同的实现 ...

  5. Gas Station leetcode java

    题目: There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. ...

  6. 领扣-1/167 两数之和 Two Sum MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  7. 在浏览器中直接调用webservice的正确写法

    此文章针对webwork+spring+hibernate的工程,对于其他框架应该一样适用,首先在wsdd文件中找到所需webservice的名称,例如以下写法: <service name=& ...

  8. Java-JUC(十一):线程8锁

    题目: 判断以下8种情况,输出的内容 题目一:一个Number实例对象number,两个非静态同步方法getOne,getTwo,两个线程打印输出(一个线程调用number.getOne,另外一个线程 ...

  9. O2O、C2C、B2B、B2C

    一.O2O.C2C.B2B.B2C的区别在哪里? O2O是Online to offline 分为四种运营模式 1.Online to offline 是线上交易到线下消费体验 2.Offline t ...

  10. Tensorflow高速入门2--实现手写数字识别

    Tensorflow高速入门2–实现手写数字识别 环境: 虚拟机ubuntun16.0.4 Tensorflow 版本号:0.12.0(仅使用cpu下) Tensorflow安装见: http://b ...