http协议介绍
Last updated
Was this helpful?
Last updated
Was this helpful?
三次握手 所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包。
三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息。在 socket 编程中,客户端执行 connect() 时。将触发三次握手。
把大象放冰箱,总共分三步:
客户端告诉服务端我要连你了
服务端告诉客户端我收到了你的信号,连吧
客户端告诉服务端:那我就要连了 服务端连上了之后
四次挥手
假设客户端想要关闭连接,客户端发送一个 FIN 标志位置为1的包,表示自己已经没有数据可以发送了,但是仍然可以接受数据。
服务器端确认客户端的 FIN 包,发送一个确认包,表明自己接受到了客户端关闭连接的请求,但还没有准备好关闭连接。
服务器端准备好关闭连接时,向客户端发送结束连接请求,FIN 置为1。
客户端接收到来自服务器端的关闭请求,发送一个确认包,并进入 TIME_WAIT状态,等待可能出现的要求重传的 ACK 包。
服务器端接收到这个确认包之后,关闭连接,进入 CLOSED 状态。
客户端等待了某个固定时间(两个最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,没有收到服务器端的 ACK ,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入 CLOSED 状态。
TCP KeepAlive
TCP KeepAlive 的基本原理是,隔一段时间给连接对端发送一个探测包,如果收到对方回应的 ACK,则认为连接还是存活的,在超过一定重试次数之后还是没有收到对方的回应,则丢弃该 TCP 连接。
http1.0 和1.1 发布时间很早 也没差几个月。我们基本上最开始用的都是1.1
2015年后发布2.0 于谷歌浏览器而言,使用2.0 要求强制使用https协议。
但实际上两者之间可以单独使用