一、分层
T C P / I P通常被认为是一个四层协议系统,每一层负责不同的功能:
- 应用层和运输层使用端到端 (End-to-end)协议。
- 网络层提供的却是逐跳(Hop-by-hop)协议,两个端系统和每个中间系统都要使用它。
- 在TCP/IP协议族中,网络层IP提供的是一种不可靠的服务。
- TCP在不可靠的IP层上提供了一个可靠的运输层 。为了提供这种可靠的服务 , TCP采用了超时重传 、发送和接收端到端的确认分组等机制。由此可见,运输层和网络层分别负责不同的功能。
二、TCP/IP分层
TCP和UDP是两种最为著名的运输层协议,二者都使用IP作为网络层协议 。
- TCP为两台主机提供高可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。
使用到TCP协议的一些应用:Telnet、Rlogin、FTP和SMTP等
- UDP为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息单元(例如,发送方指定的一定字节数的信息) 。但是与TCP不同的是,UDP是不可靠的,它不能保证数据报能安全无误地到达最终目的。
DNS:域名系统
TFTP:简单文件传送协议
BOOTP:引导程序协议
SNMP也使用了UDP协议,但是由于它还要处理许多其他的协议
- IP是网络层上的主要协议,同时被TCP和UPD使用。TCP和UPD的每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。
- ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息。
尽管ICMP主要被IP使用,但应用程序也有可能访问它。我们将分析两个流行的诊断工具,Ping和Traceroute ,它们都使用了ICMP。
- IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。
- ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换 IP层和网络接口层使用的地址。
三、互联网的地址
互联网上的每个接口必须有一个唯一的Internet地址(也称作IP地址)。IP地址长32bit。
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地址。
四、封装
当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息)。TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP segment)。IP传网络接口层的数据单元称作IP数据报(IP datagram)。通过以太网传输的比特流称作帧(Frame)。
- 以太网数据帧的物理特性是其长度必须在 46〜1500字节之间。
- 由于TCP、UDP、ICMP和IGMP都要向IP传送数据,因此IP必须在生成的IP首部中加入某种标识,以表明数据属于哪一层。为此,IP在首部中存入一个长度为8bit的数值,称作协议域。1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表示为UDP协议。
- 运输层协议在生成报文首部时要存入一个应用程序的标识符。TCP和UDP都用一个16 bit的端口号来表示不同的应用程序。TCP和UDP把源端口号和目的端口号分别存入报文首部中。
- 网络接口分别要发送和接收IP、ARP和RARP数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个 16 bit的帧类型域。
五、分用
分用:当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议。这个过程称作分用(Demultiplexing)。
六、客户-服务器模型
大部分网络应用程序在编写时都假设一端是客户,另一端是服务器,其目的是为了让服务器为客户提供一些特定的服务。
服务类型分类:重复型或并发型- 重复型:重复型服务器主要的问题发生在I2状态。在这个时候,它不能为其他客户机提供服务。
I1. 等待一个客户请求的到来。
I2. 处理客户请求。
I3. 发送响应给发送请求的客户。
I4. 返回I1步
- 并发型:并发服务器的优点在于它是利用生成其他服务器的方法来处理客户的请求。也就是说,每个客户都有它自己对应的服务器。如果操作系统允许多任务,那么就可以同时为多个客户服务。
C1. 等待一个客户请求的到来。
C2. 启动一个新的服务器来处理这个客户的请求。在这期间可能生成一个新的进程、任务或线程,并依赖底层操作系统的支持。这个步骤如何进行取决于操作系统。生 成的新服务器对客户的全部请求进行处理。处理结束后,终止这个新服务器。
C3. 返回C1步。
一般来说,TCP服务器是并发的,而UDP服务器是重复的,但也存在一些例外。
七、端口号
常用服务的端口号:
- HTTP:80
- FTP:21
- 远程:3389
- STMP:25
- POP3:110
- MSSQL:1433
- MYSQL:3306
- Oracle:1521
- HTTPS:443
- Telnet:23/tcp
- FTP:21/tcp
- TFTP:69/udp
- SSH:22/tcp
- SMTP:25/tcp
八、小结
- TCP/IP协议族分为四层:链路层、网络层、运输层和应用层,每一层各有不同的责任。
- 在TCP/IP中,网络层和运输层之间的区别是最为关键的:网络层(IP)提供点到点的服务,而运输层(TCP和UDP)提供端到端的服务。
- 一个互联网是网络的网络。构造互联网的共同基石是路由器,它们在IP层把网络连在一起。第一个字母大写的Internet是指分布在世界各地的大型互联网,其中包括 1万多个网络和超过100万台主机。
- 在一个互联网上,每个接口都用 IP地址来标识,尽管用户习惯使用主机名而不是 IP地址。
- 域名系统为主机名和 IP地址之间提供动态的映射。端口号用来标识互相通信的应用程序。服务器使用知名端口号,而客户使用临时设定的端口号。