zlb820的gravatar头像
zlb820 2017-03-24 10:19:00
HTTP协议报头以及三次握手和四次握手

首先,

 介绍HTTP请求头。都说面试总是问HTTP请求,赶紧去网上搜搜了解了解,看看博客什么的,听博客里面说:

  比如 :HTTP 请求报文 由请求行 ,请求头 ,请求包体组成,

请求行 :包含 请求的方法、URL、协议版本 ;

请求头: 包含一些提交给服务器关于客户端的基本信息什么的

请求包体: 用于Post方法,提交数据 什么的。

但是很一部分人,你去浏览器里看过HTTP请求头是什么样子? 死记硬背有什么用,自己打开google,开发者模式,

network 这不都出来了么,背什么背,自己看看不比什么强!!!

HTTP协议报头以及三次握手和四次握手

什么都有,自己看。。。,看不懂的 ,,,,查。。。。。别偷懒

其次

所谓的三次握手,四次握手

二话不说,上个图:

HTTP协议报头以及三次握手和四次握手

图的上半部分,请求的演示,下半部分,关闭的演示。。。。

首先需要明确的一点是:TCP协议他是面向连接的,何谓面向连接,通俗点说就是,打电话,我给你打电话,然后你接听了电话,连接到了,这才能说话吧。不然说个JJ

三次连接的过程就相当于打电话。那些名词SYN,ACK 什么意思。。。。自己查。。。。。。网上都有

过程如下:

客户端想勾引服务器: 波---发个包..  妹纸,约么(SYN)。。  

接着客户端等回复呗,进入了SYN_SEND状态,,,,

妹纸如果想跟你约呢,就发个娇羞的表情(SYN_ACK),进入SYN_RCVD状态,,,

接着,猴急的客户端,赶紧发了个收到(ACK),六点楼下见。。。。然后俩人约起来,,,ESTABLISED。。。

大概就是这么个过程。。。。

--------------------------------------------------------------------------

四次连接呢,就是分手了。。。。

分手呢,双方谁都可能先提出来。。。

假设Client端提出分手,发送FIN报文。妹纸(server端)接到FIN报文后,

客户端 意思是说"跟你做不了恋人了,但是朋友还是可以的",(我Client端没有数据要发给你了,但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据)。

妹纸说: "你的请求我收到了,但是我还没准备好,请继续你等我的消息"。

这个时候,Client端就进入 FIN_WAIT状态,继续等待Server端的FIN报文。

当Server端确定数据已发送完成,则向Client端发送FIN报文,"告诉Client端,好了,我这边数据发完了,准备好关闭连接了"。

Client端收到FIN报文后,"就知道可以关闭连接了,但是他还是不相信网络,怕Server端不知道要关闭,所以发送ACK后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。

Server端收到ACK后,"就知道可以断开连接了"。

Client端等待了2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,我Client端也可以关闭连接了。Ok,TCP连接就这样关闭了!


打赏
最近浏览
xiaocheng11 2023年3月17日
暂无贡献等级
hadoopCJ  LV5 2019年9月25日
baoxw123 2019年7月5日
暂无贡献等级
aaaa22  LV2 2019年4月17日
JoyKinG  LV19 2019年3月13日
zshb_gxj  LV8 2018年12月21日
860595563  LV15 2018年11月19日
上世纪风景  LV11 2018年7月16日
1009083442 2018年6月3日
暂无贡献等级
故事_sun  LV26 2018年4月4日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友