本文仅是自己阅读笔记,不正确之处请多包涵和纠正。
为了使运行不同操作系统的计算机可以进行相互通讯,便有了TCP/IP协议族的诞生。
一、分层
网络协议是分不同层次进行开发,每层负责不同的通信功能。TCP/IP协议族,是一组不同层次上多个协议的组合。TCP/IP协议族分为四层:
其中每次负责的功能:
(1)链路层:也称数据链路层或网络接口层。通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。
(2)网络层:处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议、ICMP协议、IGMP协议。
(3)运输层:主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,运输层有两个互不相同的协议:TCP协议、UDP协议。
TCP:为两台主机提供高可靠性的数据通信。它的工作:①把应用程序交给它的数据分成合适的小块交给下面的网络层。②确认接收到的分组,设置发送最后确认分组的超时时钟。优点:应用层可以省略保证可靠性的工作
UDP:为应用层提供一种非常简单的服务。它的工作:只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证数据报能到达另一端。缺点:任何必须可靠性的必须由应用层来提供。
(4)应用层:负责处理特定的应用程序细节。
接下来是通过两个例子来理解TCP/IP四层的作用:
例一:
假设一个局域网如以太网中有两台主机,两者都运行FTP协议,图1-2列出了该过程所涉及的所有协议:
其中应用程序通常是一个用户进程,而下三层则一般是在(操作系统)内核中执行。
网络接口层和应用层的目的是很显然的-前者处理有关通信媒介的细节(以太网、令牌环网等),而后者处理某个特定的用户应用程序。而从表面看来,网络层和运输层之间的区别不那么明显。但为什么要划分成两个不同的层次?
为了理解上述问题,我们把单个网络扩展到一组网络
随着网络不断增长,人们开始把多个网络连在一起形成一个网络的网络,即 互联网。
一个互联网就是一组通过相同协议互连在一起的网络。
构造互联网最简单的方法就是把两个或多个网络通过路由器进行连接。它是一种特殊的用于网络互连的硬件盒。路由器的好处是为不同类型的物理网络提供连接:以太网、令牌环网、点对点的链接和FDDI(光纤分布式物理接口)。
例二:
图1-3是一个包含两个网络的互联网:一个以太网和一个令牌环网,通过一个路由器相互连接。通过路由器,以太网中的任何主机都可以和令牌环网中的任何主机进行通信。
在图1-3中,我们可以划分端系统(两边的主机)和中间系统(中间的路由器)。应用层和运输层使用端到端协议。在图中,只有端系统需要这两层协议。但是,网络层提供的却是逐跳协议,两个端系统和每个中间系统都要使用它。
在TCP/IP协议族中,网络层IP提供的是一种不可靠的服务。也就是说 ,它只是尽可能快地把分组从源结点送到目的结点,但是并不提供任何可靠性保证。而另一方面,TCP在不可靠的IP层上提供了一个可靠的运输层。
为了提供这种可靠的服务,TCP采用了超时重传、发送和接收端到端的确认分组等机制。
由此可见,运输层和网络层分别负责不同的功能。
二、路由器与网桥
路由器:从定义上看,一个路由器具有两个或多个网络接口层。(因为它连接了两个或者多个网络)。一个主机也可以有多个接口,但一般不称作路由器,除非它的功能只是单纯地把分组从一个接口传送到另一个接口。
网桥:连着互联网的另外一种方式就是使用网桥。网桥是在链路层上对网络进行互连,而路由器则是在网络层上对网络进行互连。网桥使得多个局域网(LAN)组合在一起,这样对上层来说就好像是一个局域网。
TCP /IP倾向于使用路由器而不是网桥来连接网络。
三、TCP/IP的分层
-TCP:虽然TCP使用的是不可靠的IP服务,但它却是提供一种可靠的运输层服务。
-UDP:UDP为应用程序发送和接收数据报。一个数据报是指从发送方传输到接收方的一个信息单元。与TCP不同,UDP是不可靠的,它不能保证数据报能安全无误的到达最终目的地。
-IP是网络层上的主要协议,同时被TCP和UDP使用。TCP和UDP的每组数据都通过端系统和每个中间路由器中的IP层在互联网中进行传输。
-ICMP是IP协议的附属协议。IP层用它来与其他主机或路由器交换错误报文和其他重要信息 。
-IGMP是Internet组管理协议。它用来把一个UDP数据报多播到多个主机。
-ARP(地址解析协议)和RARP( 逆地址解析协议)是某些网络接口 ( 如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。
四、互联网地址
互联网上的每个接口必须有一个唯一的Internet地址(也称作IP地址)。IP地址长32bit。
这些32位的地址通常写成四个十进制的数。
需要再次指出的是,多接口主机具有多个IP地址,其中每个接口都对应一个IP地址。
由于互联网上的每个接口必须有一个唯一的IP地址 ,因此必须要有一个管理机构为接入互联网的网络分配IP地址。这个管理机构就是互联网络信息中心,称作InterNIC。InterNIC只分配网络号。主机号的分配由系统管理员来负责。
有三类IP地址 :① 单播地址( 目的为单个主机 )、② 广播地址( 目的端为给定网络上的所有主机 ) 以及③多播地址(目的端为同一组内的所有主机 )。
五、封装
当应用程序用TCP传送数据时 ,数据被送入协议栈 中 , 然后逐个通过每一层直到被当作 一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息 ),该过程如图1-7所示 。TCP传给IP的数据单元称作TCP报文段或简称为TCP段。IP传给网络接口层的数据单元称作IP数据报。通过以太网传输的比特流称作帧 。
更准确地说 ,图1-7中IP和网络接口层之间传送的数据单元应该是分组。分组既可以是一个
IP数据报,也可以是IP数据报的一个片。
回想1.3节中的图1-4,由于TCP、UDP、ICMP和IGMP都要向IP传送数据 ,因此IP必须在 生成的IP首部中加入某种标识 ,以表明数据属于哪一层。为此,IP在首部中存入一个长度为8 bit的数值 ,称作协议域。1表示为ICMP协议,2表示为IGMP协议,6表示为TCP协议,17表 示为UDP协议。
类似地,许多应用程序都可以使用TCP或UDP来传送数据 。运输层协议在生成报文首部时 要存入一个应用程序的标识符。TCP和UDP都用一个16bit的端口号来表示不同的应用程序。TCP和UDP把源端口号和目的端口号分别存入报文首部中。
网络接口分别要发送和接收IP、ARP和RARP数据 , 因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个16bit的帧类型域。
六、分用
当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协 议。这个过程称作分用,图1-8显示了该过程是如何发生的 。
七、端口号
客户端通常对它所使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以 了。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为它通常只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行,所以服务器使用知名端口号 。