TCP/IP
协议的基本原理,例如:
IP
和
TCP
头的各个字段的功能以及
连接的建立过程。这里先简单地介绍一下
TCP/IP
协议。
IP
数据包(
packet
):数据包这个术语指的是
IP
协议消息。消息分为消息头和消息体,消息头是IP协议使用的各种参数信息,如:源、目的地址等等。消息体是上层协议―TCP协议的数据内容。
IP
机制:
Linux
支持三种
IP
消息类型:
ICMP
、
UDP
和
TCP
。
ICMP
数据报是网络级的
IP
控制
和状态消息。
ICMP
消息控制两台端主机之间的与通信相关的信息。
UDP
类型的
IP
包在网络应用
程序之间传送数据,但是不保证传送质量和数据包的传送顺序。
UDP
数据的传送类似邮局的明
信片发送方式。
TCP
类型的
IP
包同样在网络应用程序之间传送数据,但是
TCP
数据包头包含了更
多的信息,从而保证了可靠有序的数据传输。传送
TCP
数据类似通过电话系统交谈的过程:数据
可靠而且保证传送顺序。大多数
Internet
应用程序都使用
TCP
协议,
UDP
用的比较少。也就是说
绝大多数的
Internet
服务都倾向于在客户程序和服务器程序之间建立双向的数据传送通道(使用
TCP
),而不是单向的数据传送通道(使用
UDP
)。
IP
数据包头:所有的
IP
数据包(
ICMP
、
UDP
或
TCP
)都要包含源、目的的
IP
地址和
IP
包的
上层协议的类型,如:
ICMP
、
UDP
或
TCP
。根据不同的协议类型,
IP
数据包头还包含其他不同
的字段。
ICMP
类型的
IP
数据包包含一个标识控制或状态消息的类型字段,以及一个进一步指示
是何种类型的控制或状态消息类型的字段。对于
UDP
和
TCP
类型,还包含两个分别标识源和目
的端口号的字段。
TCP
数据包头还包含区分每个数据包的标识符及保证连接状态的信息的字段。
TCP/IP
安全问题:
TCP/IP
协议本身有不少的缺陷,允许攻击者利用隐藏通道的方式在看上
去正常的数据包中秘密地传输数据。下面对这些缺陷进行进一步说明:
隐藏通道指任何被进程用来进行可能对系统安全策略造成威胁的数据传输的通道。
TCP/IP
的设计本身并不想有什么隐藏通道,但是设计上的缺陷导致了用来非法传输信息的隐藏通道的
存在。
在
TCP/IP
环境下,有若干方法可以用来建立隐藏通道,在主机之间实现非法通信。例如:
1)
旁路包过滤器,网络探测器(
sniffer
)和“不洁词”(
dirty word
)搜索引擎。
2)
在正常的信息包中封装经过加密的或未经加密的信息的方式,通过网络秘密传输信息。
3)
通过将封装有非法信息的伪装包在
Internet
上的某一个站点上“中转”来隐藏被传输的数
据的源发送位置。
众所周知,
TCP
是面向连接的可靠的协议。简单的说,
TCP
协议采取一定的措施保证到达远
端机器的数据没有被篡改。实现这个特性依赖于
TCP
的三次握手机制:
1.
发送一个带有序列号(
Initial Sequence Number
,
ISN
)的同步数据包
-SYN
主机
A
希望同主机
B
建立连接。主机
A
发送一个数据包,该数据包的
SYN
位被置位,表示希
望建立一个新的连接,并且该数据包带有一个
ISN
号,来识别主机之间发送的不同的数据包。
Host A ------ SYN(ISN) ------> Host B
2.
远程机器响应一个确认包
ACK
主机
B
通过发送一个
SYN
位和
ACK
位被置位的数据包来响应该主机
A
的连接请求。这个响应
包中不但包含了主机
B
的
ISN
,而且包含了主机
A
的
ISN+1
,表示刚才的连接请求数据包被正确的
接收,等待接收
ISN
为
ISN+1
的数据包。
Host A <------ SYN(ISN+1)/ACK ------ Host B
3.
主机
A
通过再发送一个确认包
ACK
给主机
B
来完成连接的建立