HTTP请求过程(TCP三次握手与四次断开)与状态码

当在浏览器地址栏中输入某一网站会发生什么?

1 对网站进行域名解析,得到IP地址。
2 通过IP向WEB服务器发起TCP请求,经过三次握手后建立TCP连接
3 浏览器发起HTTP请求
4 服务器响应HTTP请求,返回HTML代码
5 浏览器解析HTML代码,并请求HTML代码中的资源
6 浏览器利用自己内部的工作机制,把请求到的静态资源和HTML代码进行渲染,呈现给用户。
7 关闭TCP连接

TCP三次握手

第一次握手:客户端发送SYN包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认 。
第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=y+1),此包发送完毕,客户端和服务器进入ESTABLISHD状态,完成三次握手。
握手过程传送的包中不包含数据,三次握手完毕之后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信上方中的任何一方主动关闭连接之前,TCP连接都将被一直保持下去。

四次挥手断开连接

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方,我已经不会再给你发送消息了(当然,在FIN包发送之前发送出去的数据,如果没有收到对应的ACK确认报文,主动关闭方依然会重发这些数据),但此时主动关闭方还可以接收数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号+1(与SYN相同,一个FIN占用一个序号)。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,就是告诉主动关闭方,我的数据也发送完了,不会再给你发送数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

2XX 成功

表明响应结果被正常处理

200 OK

客户端发来的请求被服务端正常处理

204 No Content

代表服务器接收的请求已成功处理,返回的响应报文中不包含实体的主体部分。如:浏览器不会更新。

206 Partial Content

表示客户端进行了范围请求,服务器成功执行了这一GET请求。

3XX 重定向

表明浏览器需要执行某些特殊的处理以正确处理请求。

301 Moved Permanently

永久性重定向。表示请求的资源已被分配了新的URI。

302 Found

临时性重定向。表示请求的资源已被分配了新的URI,用户本次使用。禁止POST变成GET。

303 See Other

表示请求对应的资源存在着另一个URI,应使GET方法定向获取请求的资源。

304 Not Modified

表示客户端发送附带条件的请求时,服务器允许请求访问资源。

307 Temporary Redirect

临时重定向。不会从POST变成GET。

4XX 客户端错误

400 Bad Request

表示请求报文中存在语法错误。

401 Unauthorized

表示发送的请求需要有通过HTTP认证的认证信息,若之前已经进行过一次请求,则表示用户认证失败。

403 Forbidden

表示对资源的访问被服务器拒绝了。

404 Not Found

表示服务器上无法找到请求的资源。

5XX 服务器错误

500 Internal Server Error

表示服务器在执行请求时发生了错误。

503 Service Unavailable

表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

URI 与 URL区别

URI Uniform Resource Identifier 统一资源标识符
URL Uniform Resource Locator 统一资源定位符
URN Uniform Resource Name 统一资源名称

猜你喜欢

转载自blog.csdn.net/weixin_43663421/article/details/109209985
今日推荐