首页 > 其他分享 >HTTP协议详解

HTTP协议详解

时间:2023-07-31 14:22:51浏览次数:39  
标签:断开连接 协议 HTTP 报文 发送 详解 握手 服务端 客户端

HTTP协议详解

我们在进行两台主机进行数据交互的时候,会遇到很多问题。

如数据丢包,数据重复,数据完整性校验,数字转换模拟信号,信号衰竭等。

为了简化网络的复杂度,网络通信的不同方面被分解为多层次结构,每一层只与紧挨着是上层 或者下层交互,将网络分层,这样就可以修改,甚至替换某一层的软件,只要层与层之间的接口保持不变,就不会影响到其他层。

  • OSI 开放系统互联参考模型
  • TCP/IP 协议族

image-20230730142830791

三次握手
  1. TCP/IP 协议是传输层的一个面向连接的安全可靠的一个传输协议,三次握手的机制是为了保证能建立一个安全可靠的连接。
  2. 第一次握手是由客户端发起,客户端会向服务端发送一个报文,在报文里面:SYN标志位置为1,表示发起新的连接。
  3. 当服务端收到这个报文之后就知道客户端要和我建立一个新的连接,于是服务端就向客户端发送一个确认消息包,在这个消息包里面:ack标志位置为1,表示确认客户端发起的第一次连接请求。
  4. 以上两次握手之后,对于客户端而言:已经明确了我既能给服务端成功发消息,也能成功收到服务端的响应。但是对于服务端而言:两次握手是不够的。
  5. 到目前为止,服务端只知道一件事,客户端发给我的消息我能收到,但是我响应给客户端的消息,客户端能不能收到我是不知道的。所以,还需要进行第三次握手,第三次握手就是当客户端收到服务端发送的确认响应报文之后,还要继续去给服务端进行回应,也是一个ack标志位置1的确认消息。
  6. 通过以上三次连接,不管是客户端还是服务端,都知道我既能给对方发送消息,也能收到对方的响应。那么,这个连接就被安全的建了。
四次挥手
  1. 四次握手机制也是由客户端去发起,客户端会发送一个报文,在报文里面FIN位标志位置一,当服务端收到这个报文之后,我就知道了客户端想要和我断开连接,但是此时服务端不一定能做好准备。
  2. 当客户端发起断开连接的这个消息的时候,对于服务端而言,他和还有可能有未发送完的消息,他还要继续发送,所以呢,此时对于服务端而言,我只能进行一个消息确认,就是我先告诉服务端,我知道你要给我断开连接了,但是我这里边还可能没有做好准备,你需要等我一下,等会儿我会告诉你。
  3. 发完这个消息确认包之后,可能稍过片刻它就会继续发送一个断开连接的一个报文啊,也是一个FIN位置1的报文也是由服务端发给客户端的啊,这个报文表示服务端已经做好了断开连接的准备。
  4. 那么当这个报文发给客户端的时候,客户端同样要给服务端继续发送一个消息确认的报文一共有四次,那么,通过这四次的相互沟通和连接,我就知道了,不管是服务端还是客户端都已经做好了断开连接的
响应过程
  1. 输入地址并确认后,浏览器对域名进行访问,浏览器对域名进行解析,如果浏览器有域名对应的DNS相关信息的缓存。
  2. 有的话可以拿到服务端的IP地址;如果没有的话,会去本地的host文件查看是否进行了配置,如果host文件没有配置相关的信息,那么就会发起DNS的请求用来获取对应的服务器的IP地址。
  3. 应用端会构造DNS的请求报文,应用层会调用传输层的UDP的相关协议进行数据传输,会在DNS的基础上加上UDP的请求头然后传输信息至网络层。
  4. 网络层会在UDP的请求报文基础上加上IP的请求头然后到数据链路层。
  5. 数据链路层会实现二层寻址,会加上自己的mac信息和通过网络层的ARP协议里拿到的下一步基地的mac信息一起通过物理层一起传输出去。
  6. 通常传到路由器,然后路由器这个三层设备最终会通过运营商的路线传输到下一个路由器地址,达到服务器后信息通过相同步骤进行层层解析HTTP的请求报文,然后构造HTTP响应报文沿着相同的步骤传输至客户端

标签:断开连接,协议,HTTP,报文,发送,详解,握手,服务端,客户端
From: https://www.cnblogs.com/superJade/p/17593320.html

相关文章

  • evhttp post get 处理
    evhttp处理POST请求的技巧-爱码网(likecs.com)evhttp是libevent提供的一个轻量级的基于消息驱动的HTTPServer,详细的资料可以参考libevent的主页:http://monkey.org/~provos/libevent/ ,本文主要描述如何处理POST请求。 美中不足:evhttp不支持POST?evhttp在evhttp_request接......
  • HTTPS Everywhere Rulesets (zz)
    HTTPSEverywhereRulesets文件夹,HTTPSEverywhereUserRules//z2013-03-0414:41:[email protected][T229,L3029,R95,V3290]照这这个样子写,就可以了。不过这个add-on似乎被firefox官方网站给移除了,原因不明;使用有风险。。。。<rulesetname="Twitter"><t......
  • 【补充】on_delete的参数详解
    【补充】on_delete的参数详解models.CASCADE(级联删除):当删除与该字段关联的对象时,所有相关的对象将被级联删除。例如,如果一个出版社对象被删除了,与该出版社相关联的所有图书对象也会被删除。models.SET_DEFAULT:(设置为默认值):当删除与该字段关联的对象时,该字段的值将设置为字段......
  • 流媒体协议之SRS源码分析0731
    流媒体协议之SRS源码分析分析的源码具体版本号为:SRS(SimpleRealtimeServer)v6.0.36源码下载路径:https://down.chinaz.com/soft/51363.htm  启动流程图: SrsServer类图关系: ......
  • Flutter 3.0+ 利用VLC播放器使用rtsp协议,本地测试和打包压缩
    Flutter中使用rtsp协议在Flutter中可以集成VLC播放器通过rtsp协议连接到监控相机来实现远程监控,当然也可以用来做直播APP。使用flutter_vlc_player库扩展包地址点我跳转。首先在pubspec.yaml中添加库引用:dependencies:flutter_vlc_player:^7.2.0安卓端配......
  • spring RestTemplate用法详解
    前面介绍过spring的MVC结合不同的view显示不同的数据,如:结合json的view显示json、结合xml的view显示xml文档。那么这些数据除了在WebBrowser中用JavaScript来调用以外,还可以用远程服务器的Java程序、C#程序来调用。也就是说现在的程序不仅在BS中能调用,在CS中同样也能调用,不过你需要......
  • CAN转EtherNet/IP网关can协议是什么意思
    JM-EIP-CAN 是自主研发的一款ETHERNET/IP 从站功能的通讯网关。该产品主要功能是将各种CAN 总线和ETHERNET/IP 网络连接起来。本网关连接到ETHERNET/IP 总线中做为从站使用,连接到CAN 总线中根据节点号进行读写。技术参数ETHERNET/IP 技术参数网关做为ETHERNET/I......
  • http实现浏览器端大文件分块上传
    ​ 前言文件上传是一个老生常谈的话题了,在文件相对比较小的情况下,可以直接把文件转化为字节流上传到服务器,但在文件比较大的情况下,用普通的方式进行上传,这可不是一个好的办法,毕竟很少有人会忍受,当文件上传到一半中断后,继续上传却只能重头开始上传,这种让人不爽的体验。那有没有......
  • 工业机器人坐标系详解(基于六轴串联机器人和SCARA机器人)
    工业机器人的坐标系机器人的坐标系是重中之重,它是理解机器人运动的基础。机器人所有运动的点位都是建立在坐标系的基础之上,所以如果坐标系不理解,那么就很难真实了解机器人是如何运动的。什么是坐标系?我们需要移动机器人来工作,但是如何让机器人移动?当然我们可以单独控制机器人的......
  • websocket应用的是哪个协议
    WebSocket应用的是WebSocket协议。WebSocket是一种在单个TCP连接上进行全双工通信的协议,它允许在客户端和服务器之间建立持久性的连接,并支持双向实时数据传输。相比传统的HTTP请求-响应模式,WebSocket具有更低的延迟和更高的性能,适用于实时性要求较高的应用场景,如在线聊天、实时游戏......