tcp/ip网络笔记

tcp三次握手和四次挥手


为什么需要三次握手

TCP是全双工的,即客户端在给服务器端发送信息的同时,服务器端也可以给客户端发送信息。而半双工的意思是A可以给B发,B也可以给A发,但是A在给B发的时候,B不能给A发,即不同时,为半双工。 单工为只能A给B发,B不能给A发; 或者是只能B给A发,不能A给B发。

假如只有两次握手,B无法确定B的信息A是否能听到。

假如四次握手,那就造成浪费了,因为第二个握手报文中syn和ack可以同时设置,三次握手后就已经可以保证A可以给B发信息,A可以收到B的信息; B可以给A发信息,B可以收到A的信息。

为什么需要四次挥手

TCP是全双工的,通信的双方都可以独立关闭自己的通信通道

TIME_WAIT状态以及2msl

 1 可靠实现tcp全双工连接的终止。如果四次握手中最后一个ack丢失(A发给B),对方将重发最终的fin,如果A端不维持TIME_WAIT状态,A端将响应RST,B端会抛出异常

2 保证旧连接的分组在网络中消逝。网络情况不好时,如果A端无TIME_WAIT状态,A端跟B端又新建一个新的tcp连接(采用相同的端口号),这时被动方重传或延时过来的FIN包过来后会直接影响新的TCP连接。TIME_WAIT状态持续2MSL,足以让某个方向的分组最多存活msl秒被丢弃。

服务器大量time_wait的原因、影响、解决方法

原因:在高并发短连接的TCP服务器上,当服务器处理完请求后立刻主动正常关闭连接。这个场景下会出现大量socket处于TIME_WAIT状态

影响:持续的的高并发短连接,会使服务器因端口资源不足而拒绝为一部分客户服务

解决方法:1 可以设置SO_REUSEADDR套接字选项来通知内核,如果端口忙,但TCP连接位于TIME_WAIT状态时可以重用端口。 2 由于time_wait状态是在主动关闭的一方出现的,所以在设计协议逻辑的时候,尽量由客户端主动关闭,避免服务端出现time_wait

第三次握手失败了怎么办

当client与server的第三次握手失败了之后,即client发送至server的确认建立连接报文段未能到达server,server在等待client回复ACK的过程中超时了,那么server会向client发送一个RTS报文段并进入关闭状态,即:并不等待client第三次握手的ACK包重传,直接关闭连接请求,这主要是为了防止泛洪攻击,即坏人伪造许多IP向server发送连接请求,从而将server的未连接队列塞满,浪费server的资源

三次握手有什么缺陷会被黑客利用,如何防范

黑客仿造IP大量的向server发送TCP连接请求报文包,从而将server的半连接队列(即server收到连接请求SYN之后将client加入半连接队列中)占满,从而使得server拒绝其他正常的连接请求。即拒绝服务攻击

防范方法:

1 缩短服务器接收客户端SYN报文之后的等待连接时间,即SYN timeout时间,,但是过低的SYN timeout可能会影响正常的TCP连接的建立,一旦网络不通畅便可能导致client连接请求失败

2 SYN cookie:当server接收到client的SYN之后,不立即分配资源,而是根据client发送过来的SYN包计算出一个cookie值,这个cookie值用来存储server返回给client的SYN+ACK数据包中的初始序列号,当client返回第三次握手的ACK包之后进行校验,如果校验成功则server分配资源,建立连接

3 SYN proxy代理,作为server与client连接的代理,代替server与client建立三次握手的连接,同时SYN proxy与client建立好了三次握手连接之后,确保是正常的TCP连接,而不是TCP泛洪攻击,那么SYN proxy就与server建立三次握手连接

tcp的拥塞控制

TCP通过一个定时器(timer)采样了RTT并计算RTO,但是,如果网络上的延时突然增加,那么,TCP对这个事做出的应对只有重传数据,然而重传会导致网络的负担更重,于是会导致更大的延迟以及更多的丢包,这就导致了恶性循环,最终形成“网络风暴”。为了在发送端调节所要发送的数据量,定义了一个“拥塞窗口”(Congestion Window),在发送数据时,将拥塞窗口的大小与接收端ack的窗口大小做比较,取较小者作为发送数据量的上限

拥塞控制与流量控制的区别

拥塞控制是防止过多的数据注入到网络中,可以使网络中的路由器或链路不致过载,是一个全局性的过程。 流量控制是点对点通信量的控制,是一个端到端的问题,主要就是抑制发送端发送数据的速率,以便接收端来得及接收

慢开始算法

刚刚加入网络的连接,一点一点地提速,不要一上来就把路占满。主机刚开始发送报文段时设置cwnd=1,每收到一个对新的报文段的确认后,将cwn加1。慢开始算法每经过一个传输轮次,拥塞窗口cwnd就加倍,一个传输轮次就是把拥塞窗口cwnd所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认,传输轮次所经历的时间就是往返时间RTT


拥塞避免算法

拥塞避免算法的思路是让拥塞窗口cwnd缓慢地增大,即每经过一个往返rtt时间吧发送方的拥塞窗口cwnd加1,而不是慢开始算法的加倍,使拥塞窗口cwn按线性规律缓慢增长

当cwnd < ssthresh时,使用慢开始算法

当cwnd > ssthresh时,使用拥塞避免算法

当cwnd = ssthresh时,既可使用慢开始,也可使用拥塞避免

网络拥塞时

无论在慢开始还是拥塞避免阶段,只要发送方判断网络出现拥塞,就要把慢开始门限ssthresh设置为出现拥塞时的发送方窗口值的一半,把拥塞窗口cwnd设置为1,执行慢开始算法。这样做的目的是为了迅速减少主机发送到网络中的分组数。

快重传

如果发送方设置的超时计时器时限已到但还没有收到确认,那么很可能是网络出现了拥塞,致使报文段在网络中的某处被丢弃。这时,TCP马上把拥塞窗口 cwnd 减小到1,并执行慢开始算法,同时把慢开始门限值ssthresh减半。这是不使用快重传的情况。使用快重传时,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段,


快恢复

与快重传配合使用,当发送端收到连续三个重复的确认时,发送方认为网络很可能没有发生拥塞(没有快重传时,只要发生重传,就认为网络发生拥塞,需要执行慢开始),把慢开始的门限ssthresh减半,但不执行慢开始算法,cwnd现在不设置为1,设置为ssthresh减半后的数值,然后开始执行拥塞避免算法

TCP/IP详解--拥塞控制 & 慢启动 快恢复 拥塞避免 - losbyday - 博客园

tcp的流量控制

流量控制跟拥塞控制相比就简单很多了,tcp利用滑动窗口实现流量控制

流量控制就是让发送方的发送速率不用太快,要让接收方来得及接收,通过接收方通知的窗口大小来实现流量控制

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

推荐阅读更多精彩内容