TCP三次握手的过程
三次握手
下图就是wireshark抓包工具抓获的TCP连接建立的三次握手过程:
http://www.cnblogs.com/hnrainll/archive/2011/10/14/2212415.html
相对于SOCKET开发人员,TCP创建过程和链接折除过程是由TCP/IP协议栈自己主动创建的.因此开发人员并不须要控制这个过程.可是对于理解TCP底层运作机制,相当有帮助.

- 第一次握手:
client发送一个TCP的SYN标志位置1的包指明客户打算连接的server的port,以及初始序号X,保存在包头的序列号(Sequence Number)字段里。

- 第二次握手:
server发回确认包(ACK)应答。即SYN标志位和ACK标志位均为1同一时候,将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即X+1。

- 第三次握手.
client再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.而且把server发来ACK的序号字段+1,放在确定字段中发送给对方.而且在数据段放写ISN的+1

SYN攻击
在三次握手过程中,server发送SYN-ACK之后,收到client的ACK之前的TCP连接称为半连接(half-open connect).此时server处于Syn_RECV状态.当收到ACK后,server转入ESTABLISHED状态.
Syn攻击就是 攻击client 在短时间内伪造大量不存在的IP地址,向server不断地发送syn包,server回复确认包,并等待客户的确认,因为源地址是不存在的,server须要不断的重发直 至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,目标系统执行缓慢,严重者引起网络阻塞甚至系统瘫痪。
Syn攻击是一个典型的DDOS攻击。检測SYN攻击很的方便,当你在server上看到大量的半连接状态时,特别是源IP地址是随机的,基本上能够断定这是一次SYN攻击.在Linux下能够例如以下命令检測是否被Syn攻击
netstat -n -p TCP | grep SYN_RECV
一般较新的TCP/IP协议栈都对这一过程进行修正来防范Syn攻击,改动tcp协议实现。主要方法有SynAttackProtect保护机制、SYN cookies技术、添加最大半连接和缩短超时时间等.
可是不能全然防范syn攻击。
TCP 四次挥手
TCP的连接的拆除须要发送四个包,因此称为四次挥手(four-way handshake)。client或server均可主动发起挥手动作,在socket编程中,不论什么一方运行close()操作就可以产生挥手操作。

參见wireshark抓包,实測的抓包结果并没有严格按挥手时序。我预计是时间间隔太短造成。

TCP三次握手的过程的更多相关文章
- TCP三次握手的过程,accept发生在三次握手的哪一个阶段?
答案是:accept过程发生在三次握手之后,三次握手完成后,客户端和服务器就建立了tcp连接并可以进行数据交互了.这时可以调用accept函数获得此连接. TCP Accept总结 TCP Accep ...
- 一文彻底搞懂 TCP三次握手、四次挥手过程及原理
原创文章出自公众号:「码农富哥」,欢迎收藏和关注,如转载请注明出处! TCP 协议简述 TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接. 无论哪 ...
- 详解TCP三次握手(建立TCP连接过程)
在讲述TCP三次握手,即建立TCP连接的过程之前,需要先介绍一下TCP协议的包结构. 这里只对涉及到三次握手过程的字段做解释 (1) 序号(Sequence number) 我们通过 TCP 协议将数 ...
- 让你彻底明白TCP三次握手,四次挥手
今天我们来讲一下TCP的三次握手和四次挥手,先来张思维导图. 一.TCP是什么 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流 ...
- 面试官问我TCP三次握手和四次挥手,我真的是
候选者:面试官你好,请问面试可以开始了吗 面试官:嗯,开始吧 面试官:今天来聊聊TCP吧,TCP的各个状态还有印象吗? 候选者:还有些许印象的,要不我就来简单说下TCP的三次握手和四次挥手的流程吧 候 ...
- TCP三次握手和连接关闭过程详解
1.建立连接协议(三次握手) (1)客户端发送一个带SYN标志的TCP报文到服务器.这是三次握手过程中的报文1. (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和S ...
- 【转】TCP三次握手过程
写的非常明白:http://www.cnblogs.com/rootq/articles/1377355.html TCP协议三次握手过程分析 TCP(Transmission Control Pro ...
- HTTP请求过程-域名解析和TCP三次握手建立链接
我们在浏览器输入http://www.baidu.com想要进入百度首页,但是这是个域名,没法准确定位到服务器的位置,所以需要通过域名解析,把域名解析成对应的ip地址,然后通过ip地址查找目的主机.整 ...
- TCP三次握手与Tcpdump抓包分析过程
一.TCP连接建立(三次握手) 过程 客户端A,服务器B,初始序号seq,确认号ack 初始状态:B处于监听状态,A处于打开状态 A -> B : seq = x (A向B发送连接请求报文段,A ...
随机推荐
- Word文档分割总结
Word文档分割总结 方法: 1. word创建子文件实现文件分割 2. VBA实现 3. 网上分割合并的插件软件 一. word创建子文件实现文件分割 打开需要分割的文件 >> 视图 & ...
- mysql 主从复制配置步骤
1.准备两台数据库环境,或者单台多实例环境,能否正常启动和登录. 2.配置my.cnf文件,主库配置log-bin和server-id参数,从库配置server-id,不能和主库及其他从库一样,一般不 ...
- BootStrap-validator 使用记录(JAVA SpringMVC实现)
BootStrap 是一个强大的前面框架,它用优雅的方式解决了网页问题.最近正在使用其开发网站的表单验证,一点体会记录如下: 注:本文中借鉴了博客Franson 的文章<使用bootstrapv ...
- windows安装composer方法和使用方法
最近在学习yii2的框架的相关知识,对于yii2的许多新特性,最好还是去查看官网文档最好,如果有中文翻译的网站就更好了. 学习yii2的第一个门槛就是得安装composer这个依赖管理工具(但目前我认 ...
- 在ubuntu 12.04 中配置java环境(安装jdk, tomcat, maven, eclipse)
1. 安装jdk 1.7 在ubuntu( /usr/lib/jvm/java-7-openjdk-amd64 )中默认有安装jdk 1.7 如果没有 可下载 : http://www.oracle. ...
- tableView点击后取消选中效果
[self.tableView deselectRowAtIndexPath:[self.tableView indexPathForSelectedRow] animated:YES]; @impo ...
- CoreData (四)备
监听NSFetchedResultsController 之前说过, NSFetchedResultsController是有两个重要的功能. 第一:NSFetchedResultsControlle ...
- 自己动手写谷歌API翻译接口
可以看到,利用GET请求方式,带入某些参数,就会返回一个json数组,QueryString参数如下: 同样的,我们只需要传入这三个参数,就可以获得我们想要的翻译内容,公开方法,代码如下. ...
- cf B. Little Dima and Equation
http://codeforces.com/contest/460/problem/B import java.util.*; import java.math.*; public class Mai ...
- Codeforces 463D Gargari and Permutations
http://codeforces.com/problemset/problem/463/D 题意:给出k个排列,问这k个排列的最长公共子序列的长度. 思路:只考虑其中一个的dp:f[i]=max(f ...