第一章 防火墙在网络安全防护中的地位和作用
第一节 网络体系结构
图1-6 TCP在发送者和接收者之间建立一个连接
1)S→R:发送方发送一个带有SYN标志位(置1)和一个序号为x的报文。
2)S←R:接收者应答一个带有SYN和ACK标志位(都置1)的TCP报文,确认号被设置为主机希望接收的下一个序号,这个例子中是x+1。此外,接收者将它的序号设置为y,因为它也希望与另一方同步这个序号。
3)S→R:发送方发送一个带有ACK标志位(置1)的TCP报文,它响应的报文序号为x+1,同时增加确认号为y+1。
这一握手过程之后,双方都知道对方的序号和确认号的当前值,之后,此信息被用于TCP所有目标,例如,无差错数据传输和拥塞控制。
(3)UDP
用户数据报协议UDP是IP上面的一个层,如图1-7所示,UDP有两个字段:首部字段和数据字段。
图1-7 UDP数据报结构
UDP只在IP的数据包服务之上增加了很少一点功能,也就是端口和差错校验的功能。有了端口,就能为应用程序提供多路复用,换言之,能够为运行在同一台计算机上的多个并发应用程序产生的多个连接区分数据。因此,虽然UDP数据报只能提供不可靠的交付,但在许多方面还必须使用UDP数据报。表1-1给出了使用UDP和TCP的各种应用和应用层协议。
表1-1 使用UDP和TCP的各种应用和应用层协议
UDP最主要的缺点是,它不提供任何的可靠性和数据报有序性,数据报到达时可能是无序的、重复出现的,甚至根本没有到达目的主机。它不直接处理报文丢失或报文重新排序。没有检查每一个数据报是否都到达所需的开销,对许多轻量级或时间敏感的应用,UDP更快更有效。因此,这一协议通常用于流媒体(IP语音或视频聊天)和在线游戏,对于这些应用,丢失一些数据报不是至关重要的。UDP另一个重要应用是域名系统DNS,用来把一个给定URL解析为一个IP地址。
TCP/IP族的另一个重要方面是IP路由,理解IP路由的重要性有多种原因:它是主机之间可以相互通信的基本方法,并提供对互联网拓扑结构和小型网络(一个企业网络)拓扑结构的深入理解。为了成功地应用防火墙,了解互联网路由也是很重要的。
读者可以进一步阅读谢希仁编著的《计算机网络(第5版)》(电子工业出版社),Behrouz A.Forouzan,Sophia Chung Fegan等编著、谢希仁等翻译的《TCP/IP协议族(第3版)》(清华大学出版社)等书籍。
1.1.3 网络中数据包的传输
本节通过嗅探工具Wireshark捕获实际的数据包来分析网络中数据包传输的细节。
数据在传输过程中,必须被分解成一个个的小碎片。这就如同我们在运送大批的货物时,因为每辆卡车所能运载的货物量是有限的,必须使用多辆卡车来执行这项任务一样。在网络世界里也是同样的道理,因为不同的网络实体层技术,其每次所能承载的数据量不同。因此,数据在传输过程中,必须先被分解成一个个的数据包才能被传输,然后一层层地传送。
例如,当用户在计算机上运行某一应用程序(如MSN)时,该应用程序一定会先定义一种数据交换方法(应用层通信协议),接着确定数据传输方式,比如,数据在传输过程中是不可丢失或者错误的,那么就需要使用TCP作为数据传输的方法;接着,为了能将数据正确地传输到目的端,我们使用网络上每台计算机唯一的识别码IP地址,作为发送端和接收端的地址,但由于IP地址是属于逻辑信息,无法以光电信号呈现,而实体层的寻址方式是用MAC地址来识别(假设实体层是以太网),因此,当数据发送到实体层时,会在该数据中附加上发送端和接收端的MAC地址,这样便可以将数据传输到正确的目的地。
使用嗅探工具Wireshark来截取网络上所传输的数据包,即可了解整个数据包传输的过程,如图1-8所示。以图中编号322的数据包为例,中间的窗体部分就是数据包的结构,其结构分别如下。