http请求

http请求是目前最为常见的一种网络请求,http是基于TCP/IP来传输数据的,基于浏览器传输,浏览器作为Http的客户端通过URL向Web服务器发送请求,服务器根据收到的请求向浏览器回复相应的响应信息。Http使用TCP作为它的支撑运输协议。HTTP客户机发起一个与服务器的TCP连接,一旦连接建立,浏览器(客户机)和服务器进程就可以通过套接字接口访问TCP。

HTTP协议的主要特点:

  1. 结构简单,浏览器向服务器发出HTTP请求时只需要传送请求方法以及路径,通信速度快;
  2. 单一性,网上称之为无连接,HTTP协议限制每次服务器只能处理一条请求,服务器处理完这条请求,并收到客户端的应答之后,断开连接。这样的连接方式,节省了传输时间;
  3. HTTP是无记忆协议,该协议对事物的处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP的URL:(https://www.cnblogs.com/ranyonsue/p/5984001.html

一个完整的url应当包括:

  1. 协议部分(https:),//是分割符
  2. 域名(www.cnblogs.com)也可以用IP地址作为域名
  3. 域名:端口号,端口号可以不写,即默认端口
  4. 从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/ranyonsue/p/
  5. 文件名(5984001.html
  6. 参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。
  7. #是锚部分

HTTP的请求与响应

HTTP通过TCP的三次握手和四次挥手来建立与服务器的连接与 断开

图片来自:https://blog.csdn.net/u010538015/article/details/65631476/

TCP的三次握手:

  1. 客户端发出连接请求,客户端发送连接请求报文,将SYN状态置1(SYN=1),并将发送序号置为X(Seq=x),然后客户端进入SYN_SEND状态,等待服务器响应;
  2. 服务器收到客户端发来的请求,需要对这个SYN报文段信息进行确认,设置Acknolege Number=X+1,即为Seq+1;同时回传自己的报文信息,SYN=1,Seq=y;将这些信息一起回传给客户端,进入SYN_RECV状态;
  3. 客户端收到服务器的回传信息即SYN+ACK报文段,然后将ACK=y+1,然后向服务器传送ACK报文段,至此客户端与服务器都进入ESTABLISHED状态,TCP连接建立成功。

TCP的四次挥手:

  1. 客户端(也可以是服务器端)发出断开连接请求,设置FIN=1,序列号Seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时客户端进入FIN-WAIT-1状态,TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
  2. 服务器端接受到断开连接的请求,发送确认报文ACK=1,ack=u+1,并且带上自己序列号Seq=v一起打包传送给客户端,自己进入CLOSE-WAIT状态,同时通知高层的应用进程,这个时候处于半关闭状态,即客户端不再向服务器发送数据但是还是可以接受服务器传来的数据;(客户端接到服务器同意关闭连接的报文,进入FIN-WAIT-2状态,等待服务器 发送最终的连接释放报文,在收到该报文之前,客户端依然需要接受服务器传送过来的数据;)
  3. 服务器发送完最后的数据后,向客户端发出连接释放报文FIN=1,ACK=1,ack=u+1,序列号假设为Seq=v,这时服务器进入Last-ACK状态;
  4. 客户端收到服务器的释放报文后,发出确认信息ACK=1,Seq=u+1,ack=v,此时客户端就进入了Time-Wait,此时TCP连接还没有释放,必须经过2MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。而服务器在收到客户端的最终 确认信息后,立即进入CLOSED状态。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值