第一章
网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。一个协议族,比如TCP/IP通常被认为是一个四层协议系统。
每一层负责不同的功能:
- 链路层,有时也称为数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
2)网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议)、ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。
3)运输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议)。
TCP为两台主机提供提供可靠性的数据通信。它所做的工作包括把应用程序交给它的数据分成合适的小块交给下面的网络层,确认接受到的分组,设置发送最后确认分组的超时时钟等。
UDP为应用层提供一种非常简单的服务,它只是把称作数据报的分组从一个主机发送到另一台主机,但并不保证该数据报能到达另一端,可靠性必须由应用层来提供。
4)应用层负责处理特定的应用程序细节。
假设在一个局域网(LAN)如以太网中有两台主机,二者都运行FTP协议,下图给出可能涉及到的所有协议:
大多数网络应用程序都被设计成客户----服务器模式。服务器为客户提供某种服务。FTP服务器就是访问服务器所在主机的文件;Telnet中,为客户提供的服务是登录到服务器主机中。
构建互联网最简单的方法是把两个或多个网络通过路由器进行连接。它是一种特殊的用于网络互连的硬件盒。路由器的好处是为不同类型的物理网络提供连接:以太网、令牌环网、点对点的链接和FDDI(等等)。
下图表示两个网络的互联网,一个以太网和一个令牌环网,通过一个路由器互相连接。
由图可知,应用层和传输层使用端到端协议,只有端系统需要这两层协议。网络层提供的是逐跳协议,两个端系统和中间系统都要使用它。
在TCP/IP协议族中,网络层IP提供的是一种不可靠的服务,也就是说,它只是尽可能快地把分组从源节点送到目的节点,但是并不提供任何可靠性保证。而另一方面,TCP在不可靠的IP层上提供了一个可靠地运输层。为了保证这种可靠的服务,TCP采用了超时重传、发送和接收端到端的确认分组机制。由此可见,运输层和网络层负责不同的功能。
连接网络的另一个途径是使用网桥。网桥是在链路层上对网络进行互连,而路由器则是在网络层上对网络进行互连。网桥使得多个局域网组合在一起,这样对于上层来说,就好像一个局域网。
TCP/IP的分层:
TCP和UDP是两种最为著名的运输层协议,二者都使用IP作为网络层协议。
TCP在不可靠的IP层上提供了一个可靠地运输层。
UDP为应用程序发送和接受数据报。一个数据报是指从发送方传输到接收方的一个信息单元。但是与TCP不同,UDP是不可靠的,它将保证可靠性的责任推向了应用层。
IP是网络层上的主要协议,同时被TCP和UDP使用。TCP和UDP每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。也有直接使用IP进行通讯的程序,不过比较少见。
ICMP是IP协议的附属协议。IP层用它来和其他主机或路由器交换错误报文和其他重要信息。
IGMP是Internet组管理协议,它用来吧一个UDP数据报多播到多个主机。
ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口使用的特殊协议,用来转换IP层和网络接口层使用的地址。
互联网的地址
互联网上每个接口必须有一个唯一的Internet地址(IP地址)。IP地址长32bit。
一共有五种IP,IP的分类图和范围如下图:
域名系统
在TCP/IP领域中,域名系统(DNS)是一个分布的数据库,由它来提供IP地址和主机名之间的映射信息。
封装
当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当做一串比特流搜索能够如网络,其中每一层收到的数据都要增加一些首部信息(有时还要增加尾部信息)。
下图是以太网帧的构成:
UDP数据和TCP数据基本一致,唯一不同的是UDP传给IP的信息单元称作UDP数据报,而且UDP的首部长度是8字节。
分用
当目的主机收到一个以太网数据帧时,数据就开始从协议栈由底部向上升,同时去掉各层协议加上的报文首部。这个过程称作分用。
客户-服务器模型
服务分为重复型和并发型:
1.重复型:
I1.等待一个客户请求的到来
I2.处理客户请求
I3.发送响应给发送请求的客户
I4.返回I1步
2.并发型:
C1.等待一个客户请求的到来
C2.启动一个新的服务器来处理这个客户的请求。在这个期间可能产生一个新的进程、任务或线程,并依赖于底层操作系统的支持。处理结束后,终止这个新服务器
C3.返回C1步
一般来说,TCP服务器是并发的,UDP服务器是重复的。
端口号
客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了,客户端端口号又称作临时端口号。大多数TCP/IP实现给临时端口号分配1024~5000之间的端口号,大于5000的端口号是为其他服务器预留的。
应用编程接口
使用TCP/IP协议的应用程序通常采用两种应用编程接口(API):socket和TLI。