HTTP协议

HTTP协议

  • HTTP的工作原理
    1、客户端与服务器端通过TCP协议建立连接(三次握手)。
    2、客户端向服务器端发起HTTP请求。
    3、服务器返回响应信息给客户端
    4、断开连接(四次挥手)
    5、客户端将响应信息交给浏览器显示给用户
    在HTTP1.1协议中,默认会开启Keep-Alive,这样建立的TCP连接,就可以在多次请求中复用。
  • HTTP报文的格式
    HTTP的报文分为三大部分,第一部分是请求行,请求行又包括方法、URL、版本。方法包括GET、POST、PUT、DELETE这四种常用的方法。其中最主要的还是GET和POST方法。版本大多为HTTP1.1,也有HTTP2.0。第二部分是首部,首部是一些字段,通过冒号分隔。例如,Accept-Charset,表示客户端可以接受的字符集。第三部分就是正文实体。
  • HTTP请求的发送
    HTTP协议是基于TCP协议的,所有它使用面向连接的方式发送请求,通过stream二进制流的方式传给对方。当然,到了TCP层,它会把二进制流变成一个报文段发送给对方。在发送每一个报文段的时候,都需要对方回复ACK,来确定报文到达了服务器端。如果没有回应,那么TCP层会进行重新传输,直到ACK。TCP层发送每一个报文的时候,都需要加上自己的地址(源IP)和它要去的地方(目标IP),会将这两个信息放到IP头里面,交给IP层进行传输。IP层需要查看目标地址和自己是否在同一个局域网。如果是,就发送ARP协议来请求这个目标地址对应的MAC地址,然后将源MAC和目标MAC放入MAC头,发送出去。如果不在同一个局域网中,就需要获取网关的MAC地址,然后将源MAC和网关的MAC放入MAC头中,发送出去。网关收到包以后,发现MAC符合,于是取出目标IP地址,根据路由协议找到下一跳的路由器,获取下一跳路由器的MAC地址,将包发给下一跳的路由器。就这样到达最后一跳的路由器的时候,发现目标地址就在自己的某一个出口的局域网上。于是,在这个局域网上发送ARP协议,获取目标地址的MAC地址。然后将包发出去。如果目标机器发现MAC地址符合,就将包收起来,发现IP地址符合,根据IP头中协议项,知道自己上一层是TCP协议,于是解析TCP头,里面有序列号,需要看一看这个序列包是不是需要的,如果是就放入缓存中然后返回一个ACK,如果不是就丢弃。TCP头里面还有端口号,HTTP服务器正在监听这个端口号。于是目标机器自然知道是HTTP服务器这个进程想要这个包。于是将包发给HTTP服务器。HTTP服务器的进程看到,原来这个请求是要访问一个网页,于是就把这个网页发给客户端。
  • HTTP返回报文的格式
    也分为三大部分。第一部分状态行,包括版本、状态码、短语。状态码会反应HTTP请求的结果。常用的状态码有:
状态码短语含义
200OK请求成功,信息在返回的响应报文中
301Moved Permanently请求的对象已经被永久转移了,新的URL定义在响应报文的Location:首部行中。客户软件将自动获取新的URL。
400Bad Request一个通用差错代码,指示该请求不能被服务器理解
404Not Found被请求的文档不在服务器上
505HTTP Version Not Supported服务器不支持请求报文使用的HTTP协议版本

第二部分是首部的字段,例如,Content-type表示返回的是HTML还是JSON。第三部分就是正文实体。

  • 返回的HTTP报文
    流程跟来的时候是一样的,但是路径不一定一样。返回的报文到达客户端。客户端发现MAC地址符合、IP地址符合,就会交个TCP层。根据序列号看是不是自己要的报文段,如果是,则会根据TCP头中的端口号发给监听这个端口的相应进程。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值