欢迎来到天天文库
浏览记录
ID:10091220
大小:1.81 MB
页数:50页
时间:2018-05-25
《tcp协议及其安全缺陷》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、3.3TCP协议及其安全缺陷TCP提供面向连接的服务,例如为Telnet、FTP、SMTP等需要高度可靠性的服务。(RefB_p287_传输层端到端通信的基本结构)(RefB_p288_TPDU结构与IP分组、帧结构的关系)IP数据包中若有已封装好的TCP数据包,则IP将它们向上传送到TCP层。TCP将包进行排序并进行差错检测,同时实现虚电路(VC)间的连接。TCP将数据包中含序列号(SequenceNum)和应答号/确认号(Acknowledgement),对未按顺序收到的包可以被排序,损坏的
2、包要求被重传。(复习:协议封装)(RefC_p66_以太网上使用TCP进行数据封装)(RefC_p70_TCP首部)1)端口号( SrcPort,DstPort):包括源端口号和目的端口号。每个端口号的字段长为16比特,它分别表示发送该报文段的应用程序的端口号与接收该报文段的应用程序的端口号。IP地址没有提供表明某个特定应用的信息,即同一个IP地址可以同众多服务“绑定”,因此需要额外的头(header)信息。端口号用于标示传输层协议和应用层的应用程序之间的接口(interface)。TCP端口号
3、可以提供运行在某台机器上每个应用服务的地址(服务器的服务地址)。通过使用端口号,可以标识一台机器上的多个目的进程。每个端口均被赋予一个小整数以便识别。IP地址加上端口号构成一个套节字(Socket),即构成一个特定的TCP连接。客户端的端口号由TCP协议独立分配,本地唯一。服务器端口号被标准化。常见的服务器的“大众端口“:FTP:20,21POP:110Email:25WWW:80Telnet:23DNS:53当各服务器程序运行后,在各自的大众端口上等待。如果服务器收到用户请求使用某台主机的服务
4、后,则服务器则向该服务的套节字发送数据。例如,用户希望远程登录到一台服务器上,则向该服务器的23号端口发送message。服务器收到后,TCP根据端口号将message发送到Telnet的服务程序上去。在实际情况中,TCP将端点(endpoint)定义为一对整数(IP,port)。2)序列号(SequenceNum):32比特。由于TCP协议是面向数据流(datastream)的,它所传送的报文段可视为连续的数据流,因此它需要被发送的每一个字节编上号。序列号为报文段数据的第一个字节的顺序号。3)
5、应答(确认)号(Acknowledgement):32比特。表示接收端希望收到的下一个报文段的第一个字节的序号。4)首部长度(HdrLen):4比特。TCP报头(首部)以4字节(32比特)来计算,实际报头长度为20~40字节,则这个字段的为5~15。5)保留:6比特。保留为今后使用,目前全部设为0。6)标志(Flags):6比特。用来在TCP对等实体间传递控制信息。i)URG:当被设置时,紧急指针有效。意味本数据包包含紧急数据,UrgPtr字段指明本数据段的非紧急数据从什么位置开始,而紧急数据包
6、含在数据段体的前部,直到包括UrgPtr所指的字节数为止。ii)Ack:当被设置时,确认序列号有效。iii)Psh:当被设置时,发送方调用了push操作,告诉接收方应当尽快将这个报文上交给应用层。i)RST:连接复位reset。当被设置时,说明接受方已经出现混乱,例如收到并不希望收到的数据段等,提出终止连接。ii)SYN:同步序列号,用于发起一个连接。i)FIN:当被设置时,表明发送端完成发送任务。7)窗口大小(AdvertizedWindow):16比特。以字节为单位,窗口对应的最大数为65,
7、535字节。8)校验和(checksum):计算整个TCP的首部、TCP数据、IP首部的源地址和目的地址以及长度字段构成的伪首部(后见UDP介绍)。(复习:三次握手)(RefF_p227_三次握手算法的时间线)典型的TCP协议攻击/安全缺陷1)LAND攻击:将TCP包中的源地址、端口号和目的地址、端口号设成相同。将地址字段均设成目的机器的IP地址。若对应的端口号处于激活(等待)状态,LAND攻击可使目的机器死机或重新启动。攻击奏效的原因出于TCP的可靠性。攻击利用TCP初始连接建立期间的应答方式
8、存在的问题。攻击的关键在于server和client由各自的序列号。注:i)初始序列号各方随机自选。ii)己方针对对方序列号发出的应答(确认)号=对方上次的序列号+1.iii)己方发出的(非初始)序列号=己方上次的序列号+1=己方收到的应答号。i)各方每次发送以上iii)和ii)。例:正常情况下的三次握手与通信:客户端服务端(1)===============>客SequenceNum=1001(初始)(1)<==============服Ack=1001+1=1002服SequenceNum=
此文档下载收益归作者所有