当前位置: 首页 > 后端技术 > PHP

Http协议理解

时间:2023-03-29 17:49:41 PHP

Http协议理解HTTP协议定义:全称超文本传输??协议(HypertextTransferProtocol),主要功能是客户端与服务器端的交互,实现文本从WWW到WWW的传输渲染显示的客户端,就是我们常说的c/s,clientandserver模式。而且是问答模式。只有当客户端发送请求时,服务器才会响应发送数据,这是单向的。现在webservice可以实现server端主动向client端发送数据。HTTP的两大特点:1.无连接:HTTP在传输前需要建立tcp/ip连接。我的理解是建立通道,建立一个从客户端到服务端的通道,然后HTTP开始发送请求;之前的版本,每次http请求和响应完成后,这个连接会自动关闭,所以每次请求都会频繁建立一个tcp/ip连接。http1.1版本之后,在header中有一个connection来控制这个connection;当connection:close时,会像之前一样在响应后关闭;如果设置为connection:keep-alive;它会监控一定时间内是否还有请求,如果没有则关闭;这个时间是由超时控制的。2.无状态:每一个http事务都没有连接。也就是说同一个client的请求和server端的上一次请求是无法区分的,所以用cookie和session来解决stateless协议;用于识别同一用户;如何理解HTTP是一个应用层协议:换句话说,它是一个软件上的协议。下面是ISO模型和TCP/IP模型的对比。我们说的HTTP协议是工作在顶层的协议,再往下看,会到传输层,再到网络层,即建立tcp/ip连接;最后通过我们的实际链接进行传输交互;这里扩展一个知识点:TCP和UDP的区别。TCP首先要请求服务器问我是否可以传输数据。当服务器给出回复时,它就会被建立。连接建立,然后客户端开始发送请求数据;但UDP直接发送数据而不征求您的同意。在这种情况下,有利也有弊。1、第一,服务器可能暂时无法接收和处理数据,你强行给,肯定会造成数据丢包,这是最大的漏洞;2、UDP减少了查询时间,当然效率也比较高。而我们一般使用TCP,相对安全,不会丢包。如果数据量小且不重要,可以考虑UDP;个人想法;HTTP工作流:http的每一个过程都称为一个事务,这个事务没有记忆能力。第一步:根据URL上的域名,在本地主机中搜索ip和端口号,如果没有,则在DHCP中搜索;第二步:根据ip和端口,访问web服务器,请求建立连接,即TCP三次握手的第一步;第三步:服务器响应请求,响应可以开始传输数据;TCP三次握手的第二步;第四步:HTTP发送请求数据,第三步TCP三次握手第五步:服务器收到http请求数据后响应,返回一定的数据;第六步:客户端根据获取到的数据继续渲染显示。URL:Uniformresourcelocator统一资源定位器,其实就是描述资源所在的位置,以便我们通过http协议获取。例子:http://www.baidu.com/admin/in...?name=maoxiaohai#第一个:http表示使用http协议;第二种:www.baidu.com会去域名池,也就是DHCP去获取对应的ip和端口。http默认端口是80,而https是用ssl的,默认端口是443,第三个是admin/,就是文件夹路径。第四种:index.php就是我们访问的文件。第五:name=maoxiaohai之后?是我们过去携带的参数。第六个A:#是主播,具体没研究。民间专家可以留言,互相请教;下一步是关于http请求和响应的格式。1、请求:请求行、请求头、请求数据如上图所示:第1部分:请求行,包括请求方法、ur资源路径、协议版本号。第二部分:开头是header,由headername组成:headernameformat;第三部分:请求数据;请求方法主要包括getpost方法。其他的,比如headputdelete等等,不知道具体应用在哪里。有高手的可以给我留言。最难理解的是header,它实际上是向服务器传输一些数据;我们可以通过$_server获取header信息,比如我们可以看到浏览器信息,请求的主机名等。1.Host:是我们请求的主机名和域名;2.Connection:控制tcp/ip的连接关闭3.Cach-Controll:缓存控制,其实就是控制缓存是否存在客户端;浏览器的一些配置信息和系统配置信息主要用于服务器根据一定的规则判断是手机还是PC。5.Accept:接收什么格式的文件,一般是text/html文件6.Accept-Encoding:可接受的压缩格式,大家都知道压缩后文件的传输速度要快很多,HTTP传输会先压缩,以及然后调过来,再解压。这是告诉服务器我可以接收哪些格式的压缩文件,然后你就可以按这种格式传输。7.Accept-Language:接受的语言代码8.Cookie:发送cookie过去。2、响应:状态行、响应头、响应数据前几个是百度自定义的头文件。Content-Type:返回内容的类型和编码格式Expires:缓存的过期时间Server:Web服务器信息Set-Cookie:设置cookieTransfer-Encoding:阻止传输,更多自行百度定义。版权属于作者。商业转载请联系作者授权,非商业转载请注明出处。互联网+时代,我们要时刻保持学习,携手前锋PHP,DreamItPossible。标签:php,php培训,前锋,php学习