TCP的三次握手和四次挥手

TCP的三次握手和四次挥手

TCP/IP是面向连接的协议。运输连接是用来发送TCP报文的。TCP的运输连接又三个过程,即建立连接,传输数据和连接释放。

TCP的连接建立:

image.png

1.首先,客户机与服务器的TCP进程都处于CLOSED(关闭)状态,当要进行TCP连接时,客户机主动打开连接,服务器被动打开连接

2.然后,服务器的TCP进程先创建传输控制块TCB(传输控制块TCB存储了每一个连接中的重要信息,如:TCP连接表,指向发送和接收缓存的指针,指向重传队列的指针,当前的发送和接收序号,等等),此时,服务器就处于LISTEN(收听)状态。同样的,客户机也会首先创建一个传输控制块TCB发送给服务器。这样,准备工作就做好了。

3.开始真正的三次握手了。首先客户端会给服务器发送一个同步位SYN=1(这个时候SYN=1说明,客户端想要给服务器发送数据),同时随机生成一个初始序号x(表明,下次客户端发送数据的时候为x+1),那么此时客户机就会进入同步发送状态。

4.当服务器收到客户端的请求后,如果同意与该客户端进行连接,那么这时就会给客户端发送确认报文,首部中的同步位SYN=1(表明服务器想要和客户端进行连接),ACK=1(表明这时服务器同同意和客户端进行连接),并且随机生成一个初始序号y,确认号为x+1(表明服务器希望收到的下一个报文段的第一个数据字节的序号,因为之前客户端发送的是x,所以下一个序号为x+1),那么此时的服务器就会进入一个同步收到状态。

(前面的两个握手阶段会发生SYN flooding攻击)

5.TCP客户端收到了服务器的确认后,那么这时就会给服务器再次给出确认。确认报文的首部同步位ACK=1(表明客户端同意和服务器进行连接),确认号为y+1(表明客户端希望收到服务器的下一个报文的第一个数据字节为y+1),此时客户机发送的序号为x+1,那么此时的客户机和服务器就会进行已连接状态。

通俗点说: 、

客户端:服务器我想和你建立连接(SYN=1),你同意吗?

服务器:客户端,我同意和你连接(ACK=1),发送连接请求(SYN=1);

客户端:服务器,我同意和你连接(ACK=1)。

TCP的连接建释放:

image.png

1.如果数据传输结束后,通信的双方都会释放连接,但是此时的客户端和服务器都处于一个已建立连接的状态。

2.假如客户机请求的资源完毕了以后,想要释放连接,首先会给服务器发送连接释放的报文段,报文段的首部终止控制FIN为1(表明客户端想要和服务器断开连接),并且发送序号u(此时的u不是随机产生的,而是客户端传送的最后一个字节+1),那么此时客户端就会进入终止等待1状态,等待服务器的确认。

3.服务器在收到客户端的请求断开的报文后,发出确认报文,将报文首部的ACK置为1(表明服务器同意与客户端断开连接),并且产生序号v(此时的序号也不会随机产生的,而是服务器给客户端发送数据的最后一个字节+1),并且发出确认序号u+1,此时服务器就进入关闭等待状态,客户机就进入终止等待2的状态。

时啊,客户端收到服务器的的确认报文后就释放了,也就是说,客户端已经没有数据向服务端发送了,但是如果服务端向客户端发送数据,客户端任然需要接受,也就是说客户端到服务器的连接已经被释放了,但是服务器到客户端的连接并没有被释放。tcp处于一个半关闭状态。

4.如果服务器已经不向客户端发送数据了,那么服务器的应用进程就可以向客户端发送连接释放的报文段,该报文的首部终止位FIN为1(表明服务器想要和客户端断开连接),ACK置为1,并且序号为w(w并不一定等于v+1,因为在客户端释放连接后,可能服务器还向客户端发送过数据,总而言之如果发送给那么就是发送的最后一个数据的字节+1),再发送u+1的确认序号(因为之前发送了u),此时服务器就进入了最后确认的状态。

5.那么在客户端收到了服务器的释放报文后,必须对此进行确认。在该报文中将ACK置为1,确认号为w+1,产生序号为u+1(上次客户端发送的序号为u),此时的服务器进入等待状态。但是TCP连接还没有被释放掉,必须要经过4分钟后服务器才进入closed状态。

通俗来讲:

客户端:服务器,我想和你断开连接(FIN=1)

服务器:同意断开连接(ACK=1)

服务器:客户端,我想和你断开连接(FIN=1)

客户端:同意(ACK=1)

SYN FLOODING与FIN FLOODING攻击?

syn flooding是一种很古老的攻击,该攻击蛀牙是利用了TCP/IP的三次握手,利用大量虚假ip的身份建立不完整连接,消耗主机的CPU,从而使主机近于瘫痪。

image.png

SYN FLOODING就是利用红色框中的阶段进行攻击。

攻击者向服务器或者主机发送SYN请求连接,服务器或者目标主机在收到请求时会进行请求确定,即向攻击者进行连接确定,而此时的攻击者会停止向服务器发送确认连接的确认包,因此,服务器就处在了等待确认的状态,在正常的情况下,服务器或者目标主机在等待一定的时间后就会停止等待,此次的连接也就自然而然的结束了,也就不会造成什么危害。但是攻击者会在短时间内伪造大量的SYN请求连接包发给服务器,即使每条SYN包请求会在短时间内被丢弃,但是大量的请求包在同一时间进行请求连接,服务器或者目标主机就没有足够的时间去处理这些请求包,因此就会使服务器或者目标主机的Cpu利用率下降,甚至使服务器瘫痪

其实,还可以进行FIN flooding攻击,原理与SYN攻击一样,攻击者向服务器或者目标主机发送大量的FIN请求包,由于攻击者并未和服务器进行过通讯,因此,在服务器或目标主机接收到该FIN请求后,会对FIN包进行分析,这就耗费了服务器或者目标主机的时间,当攻击者向服务器或者目标主机发送大量的FIN数据包时,就会消耗大量的CPU使用率,达到和SYN FLOOD一样的效果。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容