作者:哈皮莊
编辑:小琳妹妹
(对,没错,我就是那个不懂球的胖子~!)
打D你,满地找牙~!(人肉发球机——刘国梁)
“停杯投箸不能食,拔剑四顾心茫然!”
仅以此文献给“蠢人”刘国梁~!
在刘国梁眼中,咱们互联网赖以生存的TCP协议,就如同下面这对的水平而已。
TCP协议运作起来很像打乒乓球。你推一板过来,我推一板回去,你来我往,打打和平球,仅此而已!
这图是TCP初始化的三次握手流程图(借用度娘百科的图)
TCP理解起来,只需要理解好一下这2个重要过程:
(一)三次握手诉衷肠
TCP三次握手的过程如下:
1、客户端发送SYN(嘿嘿,发个长球突击)报文给服务器端,进入SYN_SEND状态(凝神等着接球)。
2、服务器端收到SYN报文,回应一个SYN (哼,拉你一板,你丫的)ACK(ACK=x+1)报文,进入SYN_RECV状态(凝神静气,等着回球)。
3、客户端收到服务器端的SYN报文,回应一个ACK(靠,你拉我就对拉)报文,进入Established状态。(僵持不下,持续对拉开始)
三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。
(二)四次挥手话别离
(1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。(完了,居然回了个半高球,这下死定了)
(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。(受死吧,爆扣之~!)
(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。(再来一个杀死你的眼神,嘿嘿)
(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。(好吧,你赢了,我投降~!)
在具体CDN运营里面,我们会测试源站和CDN服务器的性能,就会看到这些状态的情况,帮助我们判断服务器或者客户端的问题。
比如查看服务器的建联时间和首包达到情况,就是看服务器、网络的综合性能,可以用以下命令查看。
(今天你K一刀了吗?)——有所展示哦~,可以重温一下下~!
curl -so /dev/null -w "connect: %\n1st byte: %\ntotal: %\nsize: %\nrate: %\nresponse: %\n" --connect-timeout 3 目标URL
这个指令用法可以看到整个链接从建连时间、第一个报文、文件大小、下载速率、HTTP响应码以及总的下载时间。在我们进行CDN排查某个问题链接的时候,很有用,因为看到到底是那个环节速度慢了。
片尾彩蛋——蠢人刘国梁其人
点我点我
看到这里不禁热泪盈眶(不好意思,年纪大了泪点有点低)
我粉这个不懂球的月半子~!热爱才值得我们终其一生!
精彩内容请点击:
大吉大利,晚上吃鸡~!
我等你,我们2018年见
领取专属 10元无门槛券
私享最新 技术干货