您的位置:首页 > 理论基础 > 计算机网络

TCP-IP详解笔记1.1 概念

2008-10-21 22:18 706 查看
1, OSI七层模型
OSI是Open System Interconnection 的缩写,意为开放式系统互联参考模型。在OSI出现之前,计算机网络中存在众多的体系结构,其中以IBM公司的SNA(系统网络体系结构)和DEC公司的 DNA(Digital Network Architecture)数字网络体系结构最为著名。为了解决不同体系结构的网络的互联问题,国际标准化组织ISO(注意不要与OSI搞混)于1981 年制定了开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM)。这个模型把网络通信的工作分为7层,它们由低到高分别是物理层(Physical Layer),数据链路层(Data Link Layer),网络层(Network Layer),传输层(Transport Layer),会话层(Session Layer),表示层(Presen tation Layer)和应用层(Application Layer)。第一层到第三层属于OSI参考模型的低三层,负责创建网络通信连接的链路;第四层到第七层为OSI参考模型的高四层,具体负责端到端的数据通信。每层完成一定的功能,每层都直接为其上层提供服务,并且所有层次都互相支持,而网络通信则可以自上而下(在发送端)或者自下而上(在接收端)双向进行。当然并不是每一通信都需要经过OSI的全部七层,有的甚至只需要双方对应的某一层即可。物理接口之间的转接,以及中继器与中继器之间的连接就只需在物理层中进行即可;而路由器与路由器之间的连接则只需经过网络层以下的三层即可。总的来说,双方的通信是在对等层次上进行的,不能在不对称层次上进行通信。
OSI 标准制定过程中采用的方法是将整个庞大而复杂的问题划分为若干个容易处理的小问题,这就是分层的体系结构办法。在OSI中,采用了三级抽象,既体系结构,服务定义,协议规格说明。

Java代码



┌───────────┐

│ 应用层 │←第七层

├───────────┤

│ 表示层 │

├───────────┤

│ 会话层 │

├───────────┤

│ 传输层 │

├───────────┤

│ 网络层 │

├───────────┤

│ 数据链路层 │

├───────────┤

│ 物理层 │←第一层

└───────────┘

OSI七层参考模型
┌───────────┐
│   应用层   │←第七层
├───────────┤
│   表示层   │
├───────────┤
│   会话层   │
├───────────┤
│   传输层   │
├───────────┤
│   网络层   │
├───────────┤
│ 数据链路层 │
├───────────┤
│   物理层   │←第一层
└───────────┘
OSI七层参考模型

应用层: 为用户提供相应的界面,以便使用提供的边网功能
表示层: 完成数据的格式化
会话层: 控制两个主机间的通信链路(开放、操作、关闭)
传输层: 提供数据传输服务(可靠或不可靠)
网络层: 在两个主机间提供一套定址、寻址机制,同时负责数据包的路由选择
数据链路层: 控制两个主机间的物理通信链路,同时还要对数据进行整形,以便在物理媒体上传输
物理层: 物理媒体负责心一系列电子信号的形式传出数据

2, TCP/IP四层模型
TCP/IP分层模型(TCP/IP Layening Model)被称作因特网分层模型(Internet Layering Model)、因特网参考模型(Internet Reference Model)

Java代码



┌────────────┐ ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐

│       │ │D│F│W│F│H│G│T│I│S│U│ │

│       │ │N│I│H│T│T│O│E│R│M│S│其│

│第四层,应用层│ │S│N│O│P│T│P│L│C│T│E│ │

│       │ │ │G│I│ │P│H│N│ │P│N│ │

│       │ │ │E│S│ │ │E│E│ │ │E│它│

│       │ │ │R│ │ │ │R│T│ │ │T│ │

└────────────┘ └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘

┌────────────┐ ┌──────────┬───────────┐

│第三层,传输层│ │  TCP │  UDP │

└────────────┘ └──────────┴───────────┘

┌────────────┐ ┌──────┬───────┬───────┐

│       │ │    │ICMP│  │

│第二层,网间层│ │    └───────┘    │

│       │ │     IP  │

└────────────┘ └──────────────────────┘

┌──────────────┐ ┌───────────────┬─────────────┐

│第一层,网络接口│ │ARP/RARP │   其它  │

└──────────────┘ └───────────────┴─────────────┘
┌────────────┐        ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
│       │       │D│F│W│F│H│G│T│I│S│U│ │
│       │       │N│I│H│T│T│O│E│R│M│S│其│
│第四层,应用层│       │S│N│O│P│T│P│L│C│T│E│ │
│       │       │ │G│I│ │P│H│N│ │P│N│ │
│       │       │ │E│S│ │ │E│E│ │ │E│它│
│       │       │ │R│ │ │ │R│T│ │ │T│ │
└────────────┘        └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
┌────────────┐       ┌──────────┬───────────┐
│第三层,传输层│       │  TCP │   UDP   │
└────────────┘       └──────────┴───────────┘
┌────────────┐       ┌──────┬───────┬───────┐
│       │       │    │ICMP│      │
│第二层,网间层│       │    └───────┘     │
│       │       │       IP        │
└────────────┘       └──────────────────────┘
┌──────────────┐       ┌───────────────┬─────────────┐
│第一层,网络接口│       │ARP/RARP │    其它  │
└──────────────┘       └───────────────┴─────────────┘




3, IP地址
IP地址 = 网络号+主机号
整个Internet网堪称单一的网络,IP地址就是给每个连在Internet网的主机分配一个在全世界范围内唯一的标示符,Internet管理委员会定义了A、B、C、D、E五类地址,在每类地址中,还规定了网络编号和主机编号。在 TCP/IP协议中,IP地址是以二进制数字形式出现的,共32bit,1bit就是二进制中的1位,但这种形式非常不适用于人阅读和记忆。因此 Internet管理委员会决定采用一种"点分十进制表示法"表示IP地址:面向用户的文档中,由四段构成的32 比特的IP地址被直观地表示为四个以圆点隔开的十进制整数,其中,每一个整数对应一个字节(8个比特为一个字节称为一段)。其中A、B、C类最常用。



* A类地址:A类地址的网络标识由第一组8位二进制数表示, A类地址的特点是网络标识的第一位二进制数取值必须为"0"。不难算出,A类地址第一个地址为00000001,最后一个地址是01111111,换算成十进制就是127,其中127留作保留地址,A类地址的第一段范围是:1~126,A类地址允许有27 -2=126个网段(减2是因为0不用,127留作它用),网络中的主机标识占3组8位二进制数,每个网络允许有224-2=16777216台主机(减 2是因为全0地址为网络地址,全1为广播地址,这两个地址一般不分配给主机)。通常分配给拥有大量主机的网络。
* B类地址:B类地址的网络标识由前两组8位二进制数表示,网络中的主机标识占两组8位二进制数,B类地址的特点是网络标识的前两位二进制数取值必须为"10"。 B类地址第一个地址为10000000,最后一个地址是10111111,换算成十进制B类地址第一段范围就是128~191,B类地址允许有214 =16384个网段,网络中的主机标识占2组8位二进制数,每个网络允许有216-2=65533台主机,适用于结点比较多的网络。
* C类地址:C类地址的网络标识由前3组8位二进制数表示,网络中主机标识占1组8位二进制数C类地址的特点是网络标识的前3位二进制数取值必须为"110"。C类地址第一个地址为11000000,最后一个地址是11011111,换算成十进制C类地址第一段范围就是 192~223,C类地址允许有221 =2097152个网段,网络中的主机标识占1组8位二进制数,每个网络允许有28-2= 254台主机,适用于结点比较少的网络。



上面所说的都是IPv4协议,它使用32位(4字节),所以地址分配最大限额为4,294,967,296 (232)。IPv6是下一代IP协议,它使用128位(16字节),可以拥有大约2128(3.403 × 1038)个唯一的地址。

4, DNS域名系统
由于IP太长很难记,所以用DNS来给主机起一个名字。
在TCP/IP领域中,域名系统(DNS)是一个分布的数据库,由它来提供I P地址和主机名之间的映射信息。

5, 封装
当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息)。
TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP segment)。IP传给网络接口层的数据单元称作IP数据报(IP datagram)。通过以太网传输的比特流称作帧(Frame)。

6, 分用
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议,这个过程称作分用(Demultiplexing)。



7, 客户-服务器模型
大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。可以将这种服务分为两种类型:重复型或并发型。
重复型服务器通过以下步骤进行交互:
I1. 等待一个客户请求的到来。
I2. 处理客户请求。
I3. 发送响应给发送请求的客户。
I4. 返回I 1步。
重复型服务器主要的问题发生在I 2状态。在这个时候,它不能为其他客户机提供服务。
并发型服务器采用以下步骤:
C1. 等待一个客户请求的到来。
C2. 启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新进程对客户的全部请求进行处理。处理结束后,终止这个新进程。
C3. 返回C 1步。
并发服务器的优点在于它是利用生成其他服务器的方法来处理客户的请求。也就是说,每个客户都有它自己对应的服务器。如果操作系统允许多任务,那么就可以同时为多个客户服务。
对服务器,而不是对客户进行分类的原因是因为对于一个客户来说,它通常并不能够辨别自己是与一个重复型服务器或并发型服务器进行对话。
一般来说, TCP服务器是并发的,而UDP服务器是重复的。

8, 端口号
TCP和UDP采用16 bit的端口号来识别应用程序。
服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说, FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是2 3,每个TFTP(简单文件传送协议)服务器的UDP端口号都是6 9。任何TCP/IP实现所提供的服务都用知名的1~1023之间的端口号。这些知名端口号由Internet号分配机构(Internet Assigned Numbers Authority, IANA)来管理。
客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。大多数TCP/IP实现给临时端口分配1234~5000之间的端口号。
Unix系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个保留端口号。

9, 标准化过程
有四个小组在负责Internet标准:
1) Internet协会(ISOC,Internet Society)是一个推动、支持和促进Internet不断增长和发展的专业组织,它把Internet作为全球研究通信的基础设施。
2) Internet体系结构委员会(IAB,Internet Architecture Board)是一个技术监督和协调的机构。它由国际上来自不同专业的15个志愿者组成,其职能是负责Internet标准的最后编辑和技术审核。IAB隶属于ISOC。
3) Internet工程专门小组(IETF,Internet Engineering Task Force)是一个面向近期标准的组织,它分为9个领域(应用、寻径和寻址、安全等等)。IETF开发成为Internet标准的规范。为帮助IETF主席,又成立了Internet工程指导小组(IESG, Internet Engineering Steering Group)。
4) Internet研究专门小组(IRTF,Internet Research Task Force)主要对长远的项目进行研究。
IRTF和IETF都隶属于IAB。

10, RFC
所有关于Internet的正式标准都以RFC(Request for Comment)文档出版。另外,大量的RFC并不是正式的标准,出版的目的只是为了提供信息。RFC的篇幅从1页到200页不等。每一项都用一个数字来标识,如RFC1122,数字越大说明RFC的内容越新。
下面是一些重要的RFC文档:
1 ) 赋值RFC(Assigned Numbers RFC)列出了所有Internet协议中使用的数字和常数。到目前为止,最新RFC的编号是1340 [Reynolds 和Postel 1992] 。所有著名的Internet端口号都列在这里。
2) Internet正式协议标准,目前是RFC 1600[Postel 1994]。这个RFC描述了各种Internet协议的标准化现状。每种协议都处于下面几种标准化状态之一:标准、草案标准、提议标准、实验标准、信息标准和历史标准。另外,对每种协议都有一个要求的层次、必需的、建议的、可选择的、限制使用的或者不推荐的。
3 ) 主机需求RFC,1122和1123[Braden 1989a, 1989b]。RFC1122针对链路层、网络层和运输层;RFC1123针对应用层。这两个RFC对早期重要的RFC文档作了大量的纠正和解释。
4) 路由器需求RFC,目前正式版是RFC 1009[Braden and Postel 1987],但一个新版已接近完成[Almquist 1993]。它与主机需求RFC类似,但是只单独描述了路由器的需求。
一些标准的简单服务:



从该图可以看出,当使用TCP和UDP提供相同的服务时,一般选择相同的端口号。

11, 互联网
internet这个词第一个字母是否大写决定了它具有不同的含义。internet意思是用一个共同的协议族把多个网络连接在一起。而Internet指的是世界范围内通过TCP/IP互相通信的所有主机集合(其中包括1万多个网络和超过100万台主机)。互联网是网络的网络。Internet是一个internet,但internet不等于Internet。

12, 实现
TCP/IP的第一个软件实现来自于位于伯克利的加利福尼亚大学的计算机系统研究小组,随同4.x BSD系统(Berkeley Software Distribution)的网络版一起发布的。

13, 应用编程接口
使用TCP/IP协议的应用程序通常采用两种应用编程接口(API):socket和TLI(运输层接口:Transport Layer Interface)。
前者有时称作“ Berkeley socket”,表明它是从伯克利版发展而来的。后者起初是由AT & T开发的,有时称作XTI(X/Open运输层接口),以承认X/Open这个自己定义标准的国际计算机生产商所做的工作。XTI实际上是TLI的一个超集。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: