tcp/ip是很多的不同的协议组成,实际上是一个协议组,tcp用户数据报表协议(也称作tcp传输控制协议,transport control protocol.可靠的主机到主机层协议.这里要先强调一下,传输控制协议是osi网络的第四层的叫法,tcp传输控制协议是tcp/ip传输的6个基本协议的一种.两个tcp意思非相同. ).tcp是一种可靠的面向连接的传送服务.它在传送数据时是分段进行的,主机交换数据必须建立一个会话.它用比特流通信,即数据被作为无结构的字节流. 通过每个tcp传输的字段指定顺序号,以获得可靠性.是在osi参考模型中的第四层,tcp是使用ip的网间互联功能而提供可靠的数据传输,ip不停的把报文放到 网络上,而tcp是负责确信报文到达.在协同ip的操作中tcp负责:握手过程.报文管理.流量控制.错误检测与处理(控制),可以根据一定的编号顺序对非正常顺序的报文给予从新排列顺序.关于tcp的rfc文档有rfc793.rfc791.rfc1700.
tcp会话劫持 【程序编程相关:mscomm32的简单应用】
在tcp会话初期,有所谓的“三握手”:对每次发送的数据量是怎样跟踪进行协商使数据段的发送与接收同步,根据所接收到的数据量而确定的数据确认数及数据发送.接收完毕后何时撤消联系,并建立虚连接.为了提供可靠的传送,tcp在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息.tcp总是用来发送大批量的数据.当应用程序在收到数据后要做出确认时也要用到tcp.由于tcp需要时刻跟踪,这需要额外开销,使得tcp的格式有些显得复杂.下面就让我们看一个tcp的经典案例,这是后来被称为mitnick攻击中kevin开创了两种攻击技术: 【推荐阅读:程序关联实现 】
在这里我们讨论的时tcp会话劫持的问题. 【扩展信息:JSTL Specification (】
syn flood(同步洪流)先让我们明白tcp建立连接的基本简单的过程.为了建设一个小型的模仿环境我们假设有3台接入互联网的机器.a为攻击者操纵的攻击机.b为中介跳板机器(受信任的服务器).c为受害者使用的机器(多是服务器),这里把c机器锁定为目标机器.a机器向b机器发送syn包,请求建立连接,这时已经响应请求的b机器会向a机器回应syn/ack表明同意建立连接,当a机器接受到b机器发送的syn/ack回应时,发送应答ack建立a机器与b机器的网络连接.这样一个两台机器之间的tcp通话信道就建立成功了.
b终端受信任的服务器向c机器发起tcp连接,a机器对服务器发起syn信息,使c机器不能响应b机器.在同时a机器也向b机器发送虚假的c机器回应的syn数据包,接收到syn数据包的b机器(被c机器信任)开始发送应答连接建立的syn/ack数据包,这时c机器正在忙于响应以前发送的syn数据而无暇回应b机器,而a机器的攻击者预测出b机器包的序列号(现在的tcp序列号预测难度有所加大)假冒c机器向b机器发送应答ack这时攻击者骗取b机器的信任,假冒c机器与b机器建立起tcp协议的对话连接.这个时候的c机器还是在响应攻击者a机器发送的syn数据.
tcp协议栈的弱点:tcp连接的资源消耗,其中包括:数据包信息.条件状态.序列号等.通过故意不完成建立连接所需要的三次握手过程,造成连接一方的资源耗尽.
... 下一页