TCP/IP详解notes:01概述
1.2 分层
网络协议
通常分不同层次进行开发,每一层分别负责不同的通信功能.协议族
: 一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合.TCP/IP协议族
TCP/IP通常被认为是一个四层协议系统,如图1-1所示.
TCP/IP协议族分成介绍
链路层
:有时也称作数据链路层
或网络接口层
,通常包括操作系统中的设备驱动程序
和计算机中对应的网络接口卡
.它们一起处理与电缆(或其他任何传输媒介)的物理接口细节.网络层
:有时也称作互联网层
,处理分组在网络中的活动,例如分组的选路.在TCP/IP协议族中,网络层协议包括IP协议(网际协议)
,ICMP协议(Internet互联网控制报文协议)
,以及IGMP协议(Internet组管理协议)
.运输层
:主要为两台主机上的应用程序
提供端到端
的通信.在TCP/IP协议族
中,有两个互不相同的传输协议:TCP(传输控制协议)
和UDP(用户数据报协议)
. 3-1.TCP
为两台主机提供高可靠性的数据通信
.它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层
,确认接收到的分组
,设置发送最后确认分组的超时时钟等.由于运输层提供了高可靠性的端到端的通信
,因此应用层可以忽略所有这些细节. 3-2.UDP
则为应用层提供一种非常简单的服务.它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端
.任何必需的可靠性必须由应用层来提供
.应用层
负责处理特定的应用程序细节
.几乎各种不同的TCP/IP实现都会提供下面这些通用的应用程序: 4-1. Telnet远程登录. 4-2. FTP文件传输协议. 4-3. SMTP简单邮件传送协议. 4-4. SNMP简单网络管理协议.链路层
网络层
运输层
一般在(操作系统)内核中执行, 下三层对应用程序一无所知,但它们要处理所有的通信细节应用层
关心的是应用程序的细节,而不是数据在网络中的传输活动.TCP/IP协议族
是一组不同的协议组合在一起构成的协议族.尽管通常称该协议族为TCP/IP,但TCP和IP只是其中的两种协议而已(该协议族的另一个名字是Internet协议族(Internet Protocol Suite)).- 为了提供这种
可靠的服
务,TCP采用了超时重传
,发送和接收端到端的确认分组
等机制 - 互联网的目的之一是
在应用程序
中隐藏所有的物理细节
- TCP和UDP是两种最为著名的运输层协议,二者都使用IP作为网络层协议.
- 一个
数据报
是指从发送方传输到接收方的一个信息单元
(例如,发送方指定的一定字节数的信息) - ICMP是IP协议的
附属协议
.IP层用它来与其他主机或路由器交换错误报文
和其他重要信息
- IGMP是
Internet组管理协议
.它用来把一个UDP数据报多播到多个主机
ARP(地址解析协议)
和RARP(逆地址解析协议)
是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层
和网络接口层
使用的地址
1.6 封装
当应用程序用TCP传送数据时,数据被送入协议栈
中,然后逐个通过每一层直
到被当作一串比特流
送入网络.
其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息
),该过程如图所示.
- TCP传给IP的
数据单元
称作TCP报文段
或简称为TCP段(TCP segment)
. - IP传给网络接口层的
数据单元
称作IP数据报(IP datagram)
. - 通过以
太网传输的比特流
称作帧(Frame)
. UDP数据
与TCP数据
基本一致.唯一的不同是UDP传给IP
的信息单元
称作UDP数据报(UDP datagram)
,而且UDP的首部长为8字节
.- IP必须在生成的
IP首部
中加入某种标识
,以表明数据属于哪一层
- IP在首部中存入一个长度为
8bit
的数值,称作协议域
,1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议 - TCP和UDP都用一个
16bit
(0~1«16-1)的端口号来表示不同的应用程序 以太网的帧首部也有一个16 bit的帧类型域
:网络接口分别要发送和接收IP,ARP和RARP数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议.
1.7 分用
分用(Demultiplexing) : 当目的主机
收到一个以太网数据帧
时,数据
就开始从协议栈
中由底向上升
,同时去掉各层协议加上的报文首部
.
每层协议盒
都要去检查报文首部中的协议标识
,以确定接收数据的上层协议.这个过程称作分用(Demultiplexing)
1.8 客户-服务器模型
大部分网络应用程序在编写时都假设一端是客户
,另一端是服务器
,其目的是为了让服务器
为客户
提供一些特定的服务.
可以将这种服务分为两种类型:重复型
或并发型
.重复型服务器
通过以下步骤进行交互:
- 等待一个客户请求的到来.
- 处理客户请求.(阻塞)
- 发送响应给发送请求的客户.
- 返回1步.
重复型服务器
主要的问题发生在2状态
.在这个时候,它不能为其他客户机提供服务.
相应地,并发型服务器
采用以下步骤:
- C1.等待一个客户请求的到来.
- C2.
启动一个新的服务器
来处理这个客户的请求.在这期间可能生成一个新的进程,任务或线程,并依赖底层操作系统的支持
.这个步骤如何进行取决于操作系统
.生成的新服务器对客户的全部请求进行处理.处理结束后,终止这个新服务器
. - C3.返回C1步.
并发服务器
的优点在于它是利用生成其他服务器的方法
来处理客户的请求.也就是说,每个客户都有它自己对应的服务器
.如果操作系统允许多任务,那么就可以同时为多个客户服务.
一般来说,TCP服务器是并发的
,而UDP服务器是重复的
,但也存在一些例外.
1.9 端口号
TCP
和UDP
采用16 bit的端口号
来识别应用程序.那么这些端口号是如何选择的呢?
服务器一般都是通过知名端口号
来识别的.
到1992年为止,知名端口号
介于1~255
之间.
256~1023
之间的端口号
通常都是由Unix系统占用,以提供一些特定的Unix服务—也就是说,提供一些只有Unix系统才有的,而其他操作系统可能不提供的服务.现在IANA
管理1~1023
之间所有的端口号.
客户端
通常对它所使用的端口号
并不关心,只需保证该端口号
在本机上是唯一
的就可以了.客户端口号
又称作临时端口号(即存在时间很短暂)
.
这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行.
大多数TCP/IP实现
给临时端口
分配1024~5000
之间的端口号.大于5000的端口号
是为其他服务器预留的(Internet上并不常用的服务).
1.10 标准化过程
究竟是谁控制
着TCP/IP协议族
,又是谁在定义新的标准以及其他类似的事情?事实上,有四个小组在负责Internet技术.
- Internet协会(ISOC,Internet Society)是一个推动,支持和促进Internet不断增长和发展的专业组织,它把Internet作为全球研究通信的基础设施.
- Internet体系结构委员会(IAB,Internet Architecture Board)是一个技术监督和协调的机构.它由国际上来自不同专业的15个志愿者组成,其职能是负责Internet标准的最后编辑和技术审核.IAB隶属于ISOC.
- Internet工程专门小组(IETF,Internet Engineering Task Force)是一个面向近期标准的组织,它分为9个领域(应用,寻径和寻址,安全等等).IETF开发成为Internet标准的规范.为帮助IETF主席,又成立了Internet工程指导小组(IESG, Internet Engineering Steering Group).
- Internet研究专门小组(IRIF,Internet Research Task Force)主要对长远的项目进行研究. IRTF和IETF都隶属于IAB.文献[Crocker 1993]提供了关于Internet内部标准化进程更为详细的信息,同时还介绍了它的早期历史.
1.11 RFC
所有关于Internet的正式标准都以RFC(Request for Comment)
文档出版.另外,大量的RFC并不是正式的标准
,出版的目的只是为了提供信息
.
RFC的篇幅从1页到200页不等.每一项都用一个数字来标识,如RFC 1122,数字越大说明RFC的内容越新
.
1.15 应用编程接口
使用TCP/IP协议的应用程序通常采用两种应用编程接口(API):socket和TLI(运输层接口:Transport Layer Interface). 前者有时称作“Berkeley socket”,表明它是从伯克利版发展而来的.后者起初是由AT&T开发的,有时称作XTI(X/Open运输层接口),以承认X/Open这个自己定义标准的国际计算机生产商所做的工作.XTI实际上是TLI的一个超集.