一:TCP/IP相关问题
连接端及标记
IP地址和端口被称作套接字,它代表一个TCP连接的一个连接端 。为了获得TCP服务,必须在发送机的一个端口上和接收机的一个端口上建立连接 。TCP连接用两个连接端来区别,也就是(连接端1,连接端2) 。连接端互相发送数据包 。
一个TCP数据包包括一个TCP头,后面是选项和数据 。一个TCP头包含6个标志位 。它们的意义分别为:
SYN: 标志位用来建立连接,让连接双方同步序列号 。如果SYN=1而ACK=0,则表示该数据包为连接请求,如果SYN=1而ACK=1则表示接受连接 。
FIN: 表示发送端已经没有数据要求传输了,希望释放连接 。
RST: 用来复位一个连接 。RST标志置位的数据包称为复位包 。一般情况下,如果TCP收到的一个分段明显不是属于该主机上的任何一个连接,则向远端发送一个复位包 。
URG: 为紧急数据标志 。如果它为1,表示本数据包中包含紧急数据 。此时紧急数据指针有效 。
ACK: 为确认标志位 。如果为1,表示包中的确认号时有效的 。否则,包中的确认号无效 。
PSH: 如果置位,接收端应尽快把数据传送给应用层 。
TCP连接的建立
TCP是一个面向连接的可靠传输协议 。面向连接表示两个应用端在利用TCP传送数据前必须先建立TCP连接 。TCP的可靠性通过校验和,定时器,数据序号和应答来提供 。通过给每个发送的字节分配一个序号,接收端接收到数据后发送应答,TCP协议保证了数据的可靠传输 。数据序号用来保证数据的顺序,剔除重复的数据 。在一个TCP会话中,有两个数据流(每个连接端从另外一端接收数据,同时向对方发送数据),因此在建立连接时,必须要为每一个数据流分配ISN(初始序号) 。为了了解实现过程,我们假设客户端C希望跟服务器端S建立连接,然后分析连接建立的过程(通常称作三阶段握手):
1: C --SYN XX?S
2: C ?-SYN YY/ACK XX 1------- S
3: C ----ACK YY 1--?S
1:C发送一个TCP包(SYN 请求)给S,其中标记SYN(同步序号)要打开 。SYN请求指明了客户端希望连接的服务器端端口号和客户端的ISN(XX是一个例子) 。
2:服务器端发回应答,包含自己的SYN信息ISN(YY)和对C的SYN应答,应答时返回下一个希望得到的字节序号(YY 1) 。
3:C 对从S 来的SYN进行应答,数据发送开始 。
一些实现细节
大部分TCP/IP实现遵循以下原则:
1:当一个SYN或者FIN数据包到达一个关闭的端口,TCP丢弃数据包同时发送一个RST数据包 。
2:当一个RST数据包到达一个监听端口,RST被丢弃 。
3:当一个RST数据包到达一个关闭的端口,RST被丢弃 。
4:当一个包含ACK的数据包到达一个监听端口时,数据包被丢弃,同时发送一个RST数据包 。
5:当一个SYN位关闭的数据包到达一个监听端口时,数据包被丢弃 。
6:当一个SYN数据包到达一个监听端口时,正常的三阶段握手继续,回答一个SYN ACK数据包 。
7:当一个FIN数据包到达一个监听端口时,数据包被丢弃 。"FIN行为"(关闭得端口返回RST,监听端口丢弃包),在URG和PSH标志位置位时同样要发生 。所有的URG,PSH和FIN,或者没有任何标记的TCP数据包都会引起"FIN行为" 。二:全TCP连接和SYN扫描器
全TCP连接
全TCP连接是长期以来TCP端口扫描的基础 。扫描主机尝试(使用三次握手)与目的机指定端口建立建立正规的连接 。连接由系统调用connect()开始 。对于每一个监听端口,connect()会获得成功,否则返回-1,表示端口不可访问 。由于通常情况下,这不需要什么特权,所以几乎所有的用户(包括多用户环境下)都可以通过connect来实现这个技术 。
推荐阅读
- 古曼童是什么
- 封闭系统统网络端口以保证系统安全
- 病毒利用新PowerPoint漏洞进行网络攻击
- cdx什么意思网络用语
- win7中网络适配器打不开具体处理方法
- 卡巴斯基更新提示“网络操作超时”怎么办
- 猎奇是什么意思
- 1014是什么意思
- 网络连接中断3102是什么意思
- 查找与清除线程插入式木马
