浅谈TCP扫描与SYN扫描与FIN扫描
下面就这三种方法来小小的探讨一下,不对的地方还请多多指教!
1:TCP扫描
相对来说是速度比较慢的一种,为什么会慢呢?因为这种方法在扫描的时候会从本地主机的一个端口向目标主机的一个端口发出一个连接请求报文段,而目标主机在收到这个这个请求报文后若同意的话则发回一个确认报文段,那么我们本地主机收到确认报文段之后就可以确认目标主机的该端口是活动的了.因为如果目标主机的该端口是死端口的话,目标主机不会发回确认报文.(这里还有一个问题,就是如果该端口是死端口的话,那目标主机能收到我们的连接请求吗?我自己感觉应该是收不到的...谁要知道了一定要告诉我啊)
2.SYN扫描
这种扫描方式相对来说速度比较快.
原理为:
(1):本地主机向目标主机发送一个SYN数据段.(这里牵扯到TCP报文结构的问题,在TCP报文中SYN标志位用来建立连接,让连接的双方同步序列号.如果SYN=1而ACK=0,则表示该数据包为连接请求,如果SYN=1且ACK=1,则表示接受连接.)
(2):如果目标主机的回应报文中SYN=1,ACK=1,则说明该端口是活动的,那么接着,我们再发一个RST给目标主机,拒绝建立连接.
在这里,如果目标主机的回应为RST,则表示该端口为死端口,在这种情况下,我们不用再做任何回应.
3.FIN扫描
在TCP报文结构中,FIN段负责表示发送端已经没有数据要传输了,希望释放连接.
我们发送一个FIN=1的报文到一个关闭的端口时,该报文会被丢掉,并返回一个RST报文.但是,当FIN报文到一个活动的端口时,该报文只是被简单的丢掉,而不回应任何信息. chi flat iron
这种扫描方法的好处就是完全不建立TCP连接,从而大大减少了被目标主机记录下来的可能性,安全性较高.chi flat irons
好了,三种方法的原理都已经说完了,下面说一下一个非常严重的问题,就是在很多小小菜的印象中,TCP和SYN是平起平坐的.其实并不是这样,SYN只不过是TCP报文结构中的一小块罢了,FIN、RST、PSH、ACK、URG等等都是属于TCP中的.而UDP才是和TCP在一个级别的,千万别把SYN和UDP混淆了!
参考:https://blog.51cto.com/cckdc/233835
浅谈TCP扫描与SYN扫描与FIN扫描的更多相关文章
- 浅谈TCP IP协议栈(三)路由器简介
读完这个系列的第一篇浅谈TCP/IP协议栈(一)入门知识和第二篇浅谈TCP/IP协议栈(二)IP地址,在第一篇中,可能我对协议栈中这个栈的解释有问题,栈在数据结构中是一种先进后出的常见结构,而在整个T ...
- 浅谈 TCP、IP、DNS 和 HTTP 的关系
一.浅谈三个协议的基本概念 1.IP 协议 按层次分,IP网际协议位于网络层,几乎所有的网络的系统都会用到 IP 协议,其重要性非同一般.IP 协议作用就是把各种数据包传送给对方,对方的地址就要看其 ...
- 浅谈TCP/IP网络编程中socket的行为
我认为,想要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉: 1. TCP/IP协议(如连接的建立和终止.重传和确认.滑动窗口和拥塞控制等等) 2. Socket I/O系统 ...
- 浅谈TCP三次握手和四次挥手
学习三次握手和四次挥手前,先了解下几个基础的概念. Seq:数据段序号,我们都知道TCP是提供有序传输的,有序传输的基础就是数据段序号,接收方在收到发送方乱序包的情况下可以根据Seq进行重新排序,确保 ...
- Linux网络编程——浅谈 TCP 三次握手和四次挥手
一.tcp协议格式 二.三次握手 在 TCP/IP 协议中.TCP 协议提供可靠的连接服务,採用三次握手建立一个连接. 第一次握手:建立连接时,client发送 syn 包(tcp协议中syn位置1. ...
- 面试:浅谈tcp/udp
tcp是一种面向连接的.可靠的.基于字节流的传输层通信协议.是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的,面向字节流. udp(用户数据报协议)是iso参考模型中一种无连接的传输层 ...
- 浅谈tcp socket的backlog参数
最近看netty源码碰到ChannelOption.SO_BACKLOG参数,通过跟踪代码发现其实是用于设置底层tcp socket的backlog参数,由于不了解这个参数,有必要彻底的理解一下. 底 ...
- 浅谈TCP协议,总算明白它是干什么的了
一.什么是TCP,他是干什么的? TCP即传输控制协议(Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通讯协议. TCP是为了在不可靠的互联网 ...
- 浅谈TCP优化
原文地址:http://kb.cnblogs.com/page/197406/ 很多人常常对TCP优化有一种雾里看花的感觉,实际上只要理解了TCP的运行方式就能掀开它的神秘面纱.Ilya Grigor ...
随机推荐
- CodeForces 778B - Bitwise Formula
题意: 选择一个 m 位的二进制数字,总分为 n 个算式的答案之和.问得到最低分和最高分分别应该取哪个二进制数字 分析: 因为所有数字都是m位的,高位的权重大于低位 ,我们就从高到低考虑 ans 的每 ...
- Python之asyncio模块的使用
asyncio模块作用:构建协程并发应用的工具 python并发的三大内置模块,简单认识: .multiprocessing:多进程并发处理 .threading模块:多线程并发处理 .asyncio ...
- 33. ClustrixDB 扩展集群的容量-Flex up
ClustrixDB被授权为每个节点的最大核数以及集群的最大节点数.如果需要扩展许可证,请联系Clustrix Sales.扩容之前检查License是否支持节点数. 一.准备节点 提供节点并在每个节 ...
- php回顾(3)系统函数
abs() 绝对值 ceil() 向上取整 floor() 向下取整 round() 四舍五入 第二个参数:保留小数点后面几位 ...
- 错误/异常:org.hibernate.MappingException: Unknown entity: com.shore.entity.Student 的解决方法
1.错误/异常视图 错误/异常描述:Hibernate配置文件 映射异常,不明实体类Student(org.hibernate.MappingException: Unknown entity: co ...
- mysql5.7外网访问
GRANT ALL PRIVILEGES ON *.* TO '账号名称'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; FLUSH PRIVILEGES; // ...
- 使用matplotlib绘制常用图表(2)-常用图标设置
一.使用subplots绘制子图 import numpy as np from matplotlib import pyplot as plt %matplotlib inline x = np.a ...
- MySQL_(Java)【连接池】简单在JDBCUtils.java中创建连接池
MySQL_(Java)[事物操作]使用JDBC模拟银行转账向数据库发起修改请求 传送门 MySQL_(Java)[连接池]使用DBCP简单模拟银行转账事物 传送门 Java应用程序访问数据库的过程: ...
- C++入门经典-例7.9-对象数组,批量化生产
1:在数组内容中我们了解到,数组是通过指针分配到的一段额定大小的内容.同样,数组也可以包含对象.声明对象数组的形式如下: box boxArray[5]; box boxArray2[2]={box( ...
- SpringBoot集成prometheus
1.Prometheus 1)介绍 Prometheus是一套开源的监控&报警&时间序列数据库的组合,基于应用的metrics来进行监控的开源工具 . 架构图: 2)下载 https: ...