TCP/IP详解卷(一)——概述

TCP/IP详解卷卷一 ——概述

TCP/IP协议的由来

在世界各地,各种不同电脑运行着各种不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法千差万别,无法合作。所以人们就想方设法将它们联合起来,发挥出它们最大的潜力。但简单连接起来是不够的,它们还需要定义一些共同的东西来进行交流沟通,TCP/IP协议由此而生。

分层

​ 网络通讯协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP,是一组不同层次上多个协议的组合。TCP/IP通常被认为是一个四层协议系统,如图所示:(此处应该有图)

​ 每一层负责不同的功能:

  • 链路层

    ​ 链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中的对应网络接口卡。他们一起出来与电缆(或其他任何传输媒介)的物理接口细节。

  • 网络层

    ​ 有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),已经IGMP(Internet组管理协议)

  • 运输层

    ​ 运输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的协议:TCP(传输控制协议)和UDP(用户数据报协议)。

    ​ TCP为两台主机提供高可靠性数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端通信,因此应用层可以忽略这些细节。

    ​ UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证数据报能到达另一端。任何必须的可靠性应由应用层来提供。

    ​ 这两种运输层协议分别在不同的应用程序组有不同的用途。

  • 应用层

    ​ 应用层负责处理特定的应用程序细节。几乎各种不同deTCP/IP实现都会提供下面这些通用的应用程序:

    • Telnet远程登录
    • FTP文件传输协议
    • SMTP简单邮件传送协议
    • SNMP简单网络管理协议
    • DNS(Domain Name System域名系统)
    • HTTP(Hyper Text Transfer Protocol超文本传输协议)

互联网的地址

​ 互联网上每个接口必须有一个唯一的Internet地址(也称作IP地址)。IP地址差八分32bit,Internet地址并不采用平面式的地址空间,如1、2、3等。IP地址具有一定的结构,五类不同的互联网地址格式如下图所示:(此处应该有图)

​ 这些32为的地址通常写成四个十进制的数,其中每个整数对应一个字节。这种表示方法称作“点分十进制表示法”。区分各类地址最简单的方法是看它的第一个十进制整数。下图列出了各类地址的起止范围(此处应该有图)

​ 多接口主机具有多个IP地址,其中每个接口都对应一个IP地址。

​ 由于互联网上的每个接口必须有一个唯一的IP地址,因此必须要有一个管理机构为接入互联网的网络分配IP地址。这个机构就是互联网络信息中心(Internet Network Information Centre),称作InterNIC。InterNIC只分配网络号。主机号的分配由系统管理员来负责。

​ 事实上InterNIC由三部分组成: 注册服务(rs.internic.net),目录和数据库服务(ds.internic.net),以及信息服务(is.internic.net)

​ 有三类IP地址: 单播地址(目的为单个主机)、广播地址(目的端为给定网络上的所有主机)以及多播地址(目的端为同一组内的所有主机)

域名系统

​ 尽管通过IP地址可以识别主机上的网络接口,进而访问主机,但是人们最喜欢使用的还是主机名。在TCP/IP领域中国,域名系统(DNS)是一个分布式的数据库,由他来提供IP地址和主机名之间的映射信息。

​ 任何应用程序都可以调用一个标准的库函数来查看给定名字的主机的IP地址。类似地,系统还提供一个逆函数——给定主机的IP地址,查看它所对应的主机名。
​ 大多数使用主机名作为参数的应用程序也可以把IP地址作为参数。

封装

分用

客户-服务器模型

大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。

可以将这种服务分为两种类型:重复型和并发型。

###### 重复型服务器通过以下步骤进行交互:

​ I1. 等待一个客户请求的到来

​ I2. 处理客户请求

​ I3. 发送响应给发送请求的客户

​ I4. 返回I1步

重复型服务器主要的问题发生在I2状态。这个时候,它不能为其他客户提供服务。

###### 并发型服务器采用以下步骤 

​ C1. 等待一个客户请求的道理

​ C2. 启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器对客户的全部请求进行处理。处理结束后,终止这个新服务器。

​ C3. 返回C1步。

并发服务器的优点在于它是利用生成服务器的方法来处理客户的请求。也就是说,每个客户都有它自己对应的服务器。如果操作系统允许多任务,那么就可以同时为多个客户服务。

​ 对服务器,而不是对客户进行分类的原因是因为对于一个客户来说,它通常不能辨别自己是与一个重复型或并发型服务器进行对话

​ 一般来说,TCP服务器是并发的,而UDP服务器是重复的,但也会有一些意外存在。

端口号

​ 服务器一般都是通过端口号来识别的。例如,对于每个TCP/IP实现来说,FTP都无权的TCP端口号是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传输协议)服务器的UDP端口号都是69,任何TCP/IP实现所提供的服务都用知名的1~1023之间的端口号。这些知名端口号由Internet分配机构(Internet Assigned Numbers Authority, IANA)来管理

​ 客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端的端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器只有主机开着的,其服务就运行。

​ 大多数TCP/IP实现给淋湿端口分配1024~5000之间的端口号。大于5000的端口号是为其他服务器预留的(Internet上并不常用的服务)。我们可以在后面看见许多这样的给临时端口分配端口号的例子。

保留端口号

​ UNIX系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个保留端口号。

​ 这些端口号介于1~1023之间,一些应用程序(如油门的Rlogin)将它作为客户与服务器之间认证的一部分。

RFC

​ 所有关于Internet的正式标准都以RFC(Request for Comment)文档出版。另外,大量的RFC并不是正式的标准,出版只是为了提供信息,RFC的篇幅从页到200页不等。每一项都用一个数字来标识。如RFC1122,数字越大说明RFC的内容越新。

​ 所有的RFC都可以通过电子邮件或用FTP从Internet上免费获取。如发送下面这份电子邮件,就会受到一份获取RFC的方法清单:

​ To: rfc-info@ISI.EDU

​ Subject: getting rfc

​ help: ways_to_get_rfcs

​ 最新的RFC索引总是搜索信息的起点,这个索引列出了RFC清单被替换或局部更新的时间。

标准化过程

有四个小组在负责Internet技术,控制着TCP/IP协议族,定义新的标准及其他类似的事情

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

IRTF和IETF都隶属于IAB。

互联网

​ internet意思是用一个共同的协议族把多个网络连接在一起,而Internet指的是世界范围内通过TCP/IP互相通信的所有主机集合(超过100万台)。Internet是一个internet,但internet不等于Internet。