《Linux防火墙(第4版)》——1.3 传输层机制

1.3 传输层机制

IP协议定义了OSI模型中的网络层协议。其实仍有一些其他的网络层协议,但我只聚焦在IP上,因为它是目前最流行的网络层协议。OSI模型中,网络层之上的是传输层。正如您所料,传输层有它自己的一组协议簇。我们对两个传输层的协议比较感兴趣:UDP和TCP。本节将分别详细介绍这些协议。

1.3.1 UDP
用户数据报协议(User Datagram Protocol,UDP)是无连接协议,用于DNS查询、SNMP(简单网络管理协议)和RADIUS(远程用户拨号认证系统)等。作为无连接协议,UDP协议的工作方式类似于“发送,然后遗忘”。客户端发送一个UDP数据包(有时称为数据报),并假设服务器将会收到该数据包。它依赖更高层的协议来将数据包按顺序组合。UDP的报头为8字节,见图1.4。

UDP报头以源端口号和目的端口号开始。接下来是包括数据在内的整个数据包的长度。显然,由于UDP报头的长度为8字节,因此这部分的最小值为8。最后的部分是UDP头部的校验和,它包括了数据和报头(对数据和报头一起计算校验和)。

1.3.2 TCP
TCP是传输控制协议(Transmission Control Protocol)的缩写,它是常用的面向连接的协议,常和IP一起使用。TCP作为面向连接的协议,意味着它向上层提供可靠的服务。回想本章前面举出的电话会话的例子。在这个类比中,两个应用程序想要使用TCP进行通信则必须建立一个连接(有时被称为会话)。TCP报头见图1.5。

就像您在图1.5中看到的那样。20字节的TCP头部明显比本章的其他协议头部更加复杂。与UDP协议相似的是,TCP头部也以源端口和目的端口开始。而源端口、目的端口与发送者、接收者的IP地址相结合唯一确定了这个连接。TCP报头有32比特的序列号和32比特的确认序列号。TCP是面向连接的协议并且提供可靠的服务。序列号和确认序列号是(但不是唯一)用于提供可靠性的基础机制。随着数据从传输层向下传递,TCP会将数据划分成它认为合适的大小。这些分片即是TCP报文段(segment)。在TCP沿协议栈向下传递数据的过程中,它创建了序列号,指明了给定报文段中数据的第一个字节。在通信的另一端,接收者发送一个确认消息,指明它已经收到的报文段。发送者维护一个定时器,一旦一个确认序列号未按时接收,该数据段则会被重新发送。

TCP保障可靠性的另一个机制是在报头和数据上计算的校验和。如果接收者接收到的发送者发送的报头中的校验和与接收者计算的校验和不匹配,则接收者将不会发送确认消息。如果确认消息在传输中丢失,则发送者可能会使用同样的序列号再发送一遍报文段。在这种情况下,接收者将简单地丢弃重复的报文段。

一个4比特的域(此处指数据偏移)被用来表示包括所有选项在内的报头长度(单位是32比特)。TCP报头中有许多独立的比特标志:URG、ACK、PSH、RST、SYN、FIN、NS、CWR和ECE。对于这些标志的描述见表1.4。

16比特的窗口域提供了滑动窗口机制。接收者设置窗口值以指明接收者准备接收的数据大小(从确认序号开始的大小)。这是TCP流控制中的一种。

16比特的紧急指针指明了紧急数据结束处的偏移量,该偏移量从序列号开始。它能让发送者指明偏移量内的数据是紧急数据,应该以紧急方式进行处理。这个指针可以和PSH标志结合使用。

现在您对TCP报头有了直观的感觉了,是时候看看TCP连接是如何建立和终止的了。

TCP连接
UDP是无连接的协议,而TCP却是面向连接的协议。UDP中没有连接的概念,在UDP数据报中只有发送者和接收者。对于TCP而言,连接的任一方都可以发送或接收数据,也可以同时接收和发送。TCP是全双工(full-duplex)的协议。建立一个TCP连接的过程有时被称为三次握手(three-way handshake),很快您就会看到这个称呼的来由。

由于是面向连接的协议,在建立TCP连接时,会发生一个特定的过程。在该过程中,存在许多TCP连接的状态。连接建立的过程和相应的状态会在接下来的部分详细介绍。

要发起通信的一方(客户端)会在发送的TCP报文中设置SYN标志、初始序列号(Initial Sequence Number, ISN)以及它要通信的另一方的端口号,通常连接的另一方是服务器。该报文通常被称为SYN数据包或者SYN报文段,此时该TCP连接处于SYN_SENT状态。

此连接的服务器一方会发送一个同时设置了SYN标志和ACK标志的TCP报文段作为应答。此外,服务器还会将确认序列号设置为客户端所发送的初始序列号加一。该报文通常被称为SYN-ACK数据包或SYN-ACK报文段,此时该TCP连接处于SYN_RCVD状态。

接下来,客户端会应答SYN-ACK数据包:发送一个设置了ACK标志,并且确认序列号为SYN-ACK序列号加一的报文段。至此,三次握手已经结束,该连接已建立,进入了ESTABLISHED状态。

与初始化连接的协议(这里的协议指的是建立连接的过程)相对应,还有一个终止连接的过程。用于终止TCP连接的过程与建立连接的三步相对,共有四个步骤。多出的一个步骤来自于TCP连接的全双工特性,因为任何一边都可能在任何时候发送数据。

通过发送设置了FIN标志的TCP报文段,TCP连接的某一方可以关闭该方向的连接。连接的任何一方都可以发送FIN标志,以表明它已经将数据发送完毕。而连接的另一方则可以继续发送数据。然而,实际上,当FIN被接收时,连接的终止过程通常将开始。在下面的讨论中,我把想要终止连接的一方称为客户端。

终止过程从客户端发送一个设置了FIN标志的报文段开始,此时服务器端的状态为CLOSE_WAIT,而客户端的状态为FIN_WAIT_1。在服务端接收到FIN后,服务端将向客户端回复ACK,同时将序列号加一。此时,客户端进入FIN_WAIT_2状态。服务端同时向它的高层协议指出连接已终止。接下来,服务端将关闭连接,这会导致一个设置了FIN标志的报文段被发送到客户端,然后服务端将进入LAST_ACK状态,而客户端则进入TIME_WAIT状态。最后,客户端发送报文段确认此FIN标志(设置ACK标志,并将序列号加一),然后该连接便进入了CLOSED状态。由于TCP连接可以被任何一方终止,因此,一个TCP连接能够以半关闭的状态存在,此时一端已发起了FIN终止序列,但另一端则并没有这样做。

TCP连接也能够由任何一方发送一个设置了重置(RESET)标志的报文段而终止。这通知连接的另一端使用一种中止的方式来释放连接。它与通常的结束TCP连接的那种常被称为有序释放的方式不同。

TCP连接序列中有一个可选择部分是最大报文段长度(Maximum Segment Size,MSS)。MSS是通信的双方各自所能接收的最大的数据块的大小。由于MSS是连接的两方所能接收到的最大的大小,通常发送比MSS小一些的数据块更合适。一般而言,您应该考虑使用一个大一些的MSS,然而请牢记应避免分片(会在IP层进行),因为分片会增加系统开销(数据包分片需要额外的IP和TCP报头的字节)。

时间: 2024-10-31 11:58:15

《Linux防火墙(第4版)》——1.3 传输层机制的相关文章

《Linux防火墙(第4版)》——导读

前言 欢迎阅读本书.本书介绍了在运行Linux的计算机上建立防火墙所需要的各方面内容.在开始介绍Linux下的防火墙iptables以及最新的nftables之前,本书会介绍一些基础的内容,包括网络.IP以及安全. 本书是构建Linux防火墙的权威指南,包括如何使用Linux iptables/nftables来实现防火墙安全的主题.本书共分三大部分.第1部分为数据包过滤以及基本的安全措施,其内容有:数据包过滤防火墙的预备知识.数据包过滤防火墙概念.传统的Linux防火墙管理程序iptables

《Linux防火墙(第4版)》——2.4 过滤传入的数据包

2.4 过滤传入的数据包 外部网卡I/O对中的输入端.输入规则集,对于保护您的站点而言,是更值得注意的.就像前面提到的那样,您能够基于源地址.目的地址.源端口.目的端口.TCP状态标志以及其他标准进行过滤. 您将在后面的章节中了解到所有这些信息. 2.4.1 远程源地址过滤 在数据包层面,唯一确定IP数据包发送者的方式便是数据包报头的源地址.这个事实为源地址欺骗(source address spoofing)提供了可能,发送者将一个并非他/她真实地址的错误地址放在报文的相应源地址域里.该地址可

《Linux防火墙(第4版)》——第1章 数据包过滤防火墙的预备知识 1.1OSI网络模型

第1部分 数据包过滤以及基本安全措施 第1章 数据包过滤防火墙的预备知识 一个小型站点可能会通过多种方式连接到互联网,如T1专线.电缆调制解调器.DSL.无线.PPP.综合业务数字网(ISDN)或者其他的方式.直接连接到互联网的计算机通常是安全问题的焦点.无论是一台计算机还是由连接起来的多台计算机所组成的局域网(LAN),对于小型站点来说,最初的焦点将是直接连接到互联网的那台计算机.这台计算机将被用来搭建防火墙. 防火墙(firewall)这个术语根据其实现方式和使用目的不同而有多种不同的含义.

《Linux防火墙(第4版)》——1.5 主机名和IP地址

1.5 主机名和IP地址 人们喜欢使用词语来命名事物,例如命名一个计算机为mycomputer.mydomain.example.com.从技术上严格来说,这个命名并不指这台计算机,而是这台计算机中的网络接口.如果这台计算机有多个网卡,每个网卡将拥有不同的名字以及地址,看上去可能是在不同的网络和不同的子域中. 主机名的各部分间使用点进行分割.例如mycomputer.mydomain.example.com,最左边的部分mycomputer,是主机名,而.mydomain..example以及.

Linux防火墙Iptables新手教程(非常的详细)

首先我们要弄明白,防火墙将怎么对待 这些数据包.这些数据包会经过一些相应的规则链,比如要进入你的计算机的数据包会首先进入INPUT链,从我们的计算机发出的数据包会经过 OUTPUT链,如果一台计算机做一个网络的网关(处于内网和外网两个网络连接的两台计算机,这两台计算机之间相互通讯的数据包会经过这台计算机,这台计 算机即相当于一个路由器),可能 会有很多数据经过这台计算机,那么这些数据包必经FORWARD链,FORWARD链即数据转发链.明白了这些"链"的概念我们才能进一步学习使用 ip

Linux防火墙伪装机制帮您抵抗恶意黑客

  防火墙可分为几种不同的安全等级.在Linux中,由于有许多不同的防火墙软件可供选择,安全性可低可高,最复杂的软件可提供几乎无法渗透的保护能力.不过,Linux核心本身内建了一种称作"伪装"的简单机制,除了最专门的黑客攻击外,可以抵挡住绝大部分的攻击行动. 当我们拨号接连上Internet后,我们的计算机会被赋给一个IP地址,可让网上的其他人回传资料到我们的计算机.黑客就是用你的IP来存取你计算机上的资料.Linux所用的"IP伪装"法,就是把你的IP藏起来,不让

Linux防火墙数据包捕获模块

一.防火墙概述 网络防火墙技术是一种用来加强网络之间访问控制,防止外部网络用户以非法手段通过外部网络进入内部网络,访问内部网络资源,保护内部网络操作环境的特殊网络互联设备.它对两个或多个网络之间传输的数据包按照一定的安全策略来实施检查,以决定网络之间的通信是否被允许,并监视网络运行状态. 根据防火墙所采用的技术不同,可以将它分为四种基本类型:包过滤型.网络地址转换-NAT.代理型和监测型.包过滤型产品是防火墙的初级产品,其技术依据是网络中的分包传输技术.包过滤技术的优点是简单实用,实现成本较低

2017年6款最值得推荐的免费Linux防火墙

本文讲的是2017年6款最值得推荐的免费Linux防火墙, 简介 试想一下,当你深夜走在一条黑暗的小巷中,突然有人跳出来并强迫你交出护照.信用卡.钱包以及车钥匙等所有值钱物品,这是多么恐怖的一件事情.其实互联网的世界跟这种假设的情景很像,每个角落中都潜伏着不可预知的危险.只要你今天在线,你的上网行为就可能被潜在暗处的窃贼窥探,而这一切你都毫无察觉. 为了实现计算机安全,防火墙就扮演了这个可以保护你安全的"保镖"一角,时刻护你周全.大多数现代路由器中都内置了防火墙,虽然很有用但是却苦于难

关于Linux防火墙'iptables'的面试问答

Nishita Agarwal是Tecmint的用户,她将分享关于她刚刚经历的一家公司(印度的一家私人公司Pune)的面试经验.在面试中她被问及许多不同的问题,但她是iptables方面的专家,因此她想分享这些关于iptables的问题和相应的答案给那些以后可能会进行相关面试的人. Linux防火墙Iptables面试问题 所有的问题和相应的答案都基于Nishita Agarwal的记忆并经过了重写. "嗨,朋友!我叫Nishita Agarwal.我已经取得了理学学士学位,我的专业集中在UNI