《TCP/IP详解…
1. TCP/IP协议族
TCP/IP通常被认为是一个四层协议系统。
结构如是:
应用层 | Telnet、FTP、e-mail等 |
---|---|
传输层 | TCP和UDP |
网络层 | IP、ICMP和IGMP |
链路层 | 设备驱动程序及接口卡 |
每层功能:
- 链路层:
也称数据链路层,包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。
它们一起处理与传输媒介的物理接口细节。 -
网络层:
处理分组在网络中的活动,如分组选路等。
在TCP/IP中,网络层协议包括IP协议(网际协议)、ICMP协议(Internet互联网控制报文协议)、IGMP协议(Internet组管理协议)。 -
运输层:
为两台主机上的应用程序提供端到端的通信。
在TCP/IP中,有两个互不相同的传输协议,TCP(传输控制协议)、UDP(用户数据报协议)。
TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。
UDP则为应用层提供一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据报能到达另一端。任何必需的可靠性必须由应用层来提供。 -
应用层:
负责处理特定的应用程序细节。
几乎各种不同的TCP/IP实现都会提供通用的应用程序:- Telnet 远程登录。
- FTP 文件传输协议。
- SMTP 简单邮件传送协议。
- SNMP 简单网络管理协议。
通信模型
此图可以划分出端系统( End system )(两边的两台主机)和中间系统(Intermediate system)(中间的路由器)。应用层和运输层使用端到端(End-to-end)协议。在图中,只有端系统需要这两层协议。但是,网络层提供的却是逐跳(Hop-by-hop)协议,两个端系统和每个中间系统都要使用它。
2. TCP/IP的分层
- TCP和UDP是两种最为著名的运输层协议,二者都使用IP作为网络层协议。
-
虽然TCP使用不可靠的IP服务,但它却提供一种可靠的运输层服务。
-
UDP为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息单元(例如,发送方指定的一定字节数的信息)。但是与TCP不同的是,UDP是不可靠的,它不能保证数据报能安全无误地到达最终目的。
-
IP是网络层上的主要协议,同时被TCP和UDP使用。TCP和UDP的每组数据都通过端系统和每个中间路由器中的I P层在互联网中进行传输。
-
ICMP是IP协议的附属协议。 IP层用它来与其他主机或路由器交换错误报文和其他重要信息。
-
IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。
-
ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。
3. 互联网地址
互联网上的每个接口必须有一个唯一的 Internet地址(也称作IP地址)。 IP地址长 32 bit。Internet地址并不采用平面形式的地址空间,如 1、2、3等。 IP地址具有一定的结构,五类不同的互联网地址格式如图所示:
这些32位的地址通常写成四个十进制的数,其中每个整数对应一个字节。这种表示方法称作“点分十进制表示法。
区分各类地址的最简单方法是看它的第一个十进制整数:
类型 | 范围 |
---|---|
A | 0.0.0.0 - 127.255.255.255 |
B | 128.0.0.0 - 191.255.255.255 |
C | 192.0.0.0 - 223.255.255.255 |
D | 224.0.0.0 - 239.255.255.255 |
E | 240.0.0.0 - 247.255.255.255 |
多接口主机具有多个IP地址,其中每个接口都对应一个IP地址。
4. 域名系统
在TCP/IP领域中,域名系统(DNS)是一个分布的数据库,由它来提供IP地址和主机名之间的映射信息。
任何应用程序都可以调用一个标准的库函数来查看给定名字的主机的I P地址。类似地,系统还提供一个逆函数—给定主机的IP地址,查看它所对应的主机名。
大多数使用主机名作为参数的应用程序也可以把IP地址作为参数。
5. 封装
当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息)。
TCP传给IP的数据单元称作TCP报文段或简称为 TCP段(TCP segment)。IP传给网络接口层的数据单元称作 IP数据报(IP datagram)。通过以太网传输的比特流称作帧(Frame)。
封装过程:
6. 分用
7.客户-服务器模型
大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。可以将这种服务分为两种类型:重复型或并发型。
- 重复:
I1. 等待一个客户请求的到来。
I2. 处理客户请求。
I3. 发送响应给发送请求的客户。
I4. 返回I1步。
重复型服务器主要的问题发生在 I 2状态。在这个时候,它不能为其他客户机提供服务。 -
并发:
C1. 等待一个客户请求的到来。
C2. 启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生成的新服务器对客户的全部请求进行处理。处理结束后,终止这个新服务器。
C3. 返回C1步。
并发服务器的优点在于它是利用生成其他服务器的方法来处理客户的请求。也就是说,每个客户都有它自己对应的服务器。如果操作系统允许多任务,那么就可以同时为多个客户服务。
TCP服务器是并发的,而UDP服务器是重复的,但也存在一些例外。
8.端口号
TCP和UDP采用16 bit的端口号来识别应用程序。
服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP (简单文件传送协议)服务器的UDP端口号都是69。任何TCP/IP实现所提供的服务都用知名的1~1023之间的端口号。
客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号(即存在时间很短暂)。因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。
9.RFC
所有关于 Internet的正式标准都以RFC(Request for Comment)文档出版。
发送此mail即获得一份RFC方法清单
To: rfc-info@ISI.EDU
Subject: getting rfcs
help: ways_to_get_rfcs
10.标准简单服务
11.Socket和TLI
两种API