这是一篇实践教程,能够让你更加深刻的理解HTTP协议,因此需要一定的HTTP基础。

协议:一种规定,规定了你应该怎么去做,如w3c规定了浏览器应该怎么去解析HTML,CSS,JS。而HTTP则规定了客户端怎么和服务器端进行数据传输,简单来说就是我们得按照它的格式去写。

前几天花了点时间学习HTTP协议,但觉得光知道不行啊,还得实践一般,现在我的学习方法就是:要么学,要么不学,学就得学通来,当然不是真的通,而是至少得明白它是干嘛的,怎么用,怎么更好的用....除非这东西花了很久时间都没看懂,就先放着,因为以前学东西的时候总是东点西学点,还没有搞明白呢就跑去学其他的了,最后发现还是得回去重新学,这样反而浪费了大把时间,最后啥也没有学到,对于HTTP之前是没有把它当回事的,但随着时间的流逝发现学它实在是太有必要了,因此为了更好的理解HTTP协议,这里用PHP来实践一下。毕竟要玩转HTTP还是得用点后端的东西的,虽然对后端了解不是很多,但用来学这个足以。

需要用来的工具:

1.php环境   我们需要用来与客户端进行数据交换。

2.telnet   telnet:可以用来与远程服务器进行连接。

win7默认没有开启telnet,如果开启可以看这篇文章:Win7如何解决telnet不是内部或外部命令的方案

cmd输入 telnet ip 80   回车       本机ip可以通过ipconfig来查看

telnet 192.168.1.100 80

我们还需要进入到回显模式。按 Ctrl + ]

再按一次回车 OK。

我们接下来可以书写HTTP格式。

先测试一下GET。

输入:GET /文件路径 HTTP/1.1 回车          这个回车表示请求行结束

Host: ip地址  回车  这个回车表示结束这个请求头

回车 这个回车表示结束输入,发送请求。

GET /index.php HTTP/1.1

Host: 127.0.0.1

index.php

<?php

  echo 'Hello HTTP';

?>

返回的数据

请求行

  GET:请求方式

  ./index.php: 请求路径

  HTTP/1.1: HTTP版本

请求头

  Host: 127.0.0.1   :ip地址

GET没有请求体

从这个例子中我们可以看出,HTTP不一定得有浏览器,但发送HTTP一定得按照它的格式。

可以看到它们的大体执行过程:

  建立连接 - 响应连接 - 关闭连接

原来浏览器帮我们做了很多事情,比如Host,浏览器通过我们的URL解析出来的,HTTP版本根据浏览器自身提供,路径也是通过URL解析出来的。

POST测试:

POST /index.php HTTP/1.1
Host: 127.0.0.1
Content-type: application/x-www-form-urlencoded
Content-length: 10

name=rrraa

  这里必须写上Content-length和Content-type不然发送不成功。

  Content-length: 客户端会根据这个进行接收数据的长度,超出的不管。

  Content-type: 告诉客户端发送的这个数据类型是什么。

index.php

<?php

  $str = implode($_POST,"\n"); 接收数据

  print_r($str); 响应数据

?>

通过HEAD方法在不获取内容的情况下,检查服务器某个文件是否存在,以前面试的时候还问了这个问题,当时没答上。

HEAD /index.php HTTP/1.1

Host: 127.0.0.1

Accept: *

  必须加上Accept不然还是会获取内容,就和GET方法一样了。

这样我们就可以在不通过获取文件内容的情况下,通过状态码进行判断文件是否存在了以及是否修改。

我们访问一个假路径看看什么情况。

404了,正是我们想要的效果。

通过这些对HTTP协议的实践真的很不错,学习到了很多新东西,要是光看理论实在是不行。

大家还可以试试其他的。

转载于:https://www.cnblogs.com/pssp/p/5819601.html

通过telnet来实践HTTP协议。相关推荐

  1. 使用telnet程序连接qq smtp协议邮箱服务器发送邮件

    使用telnet程序连接qq smtp协议邮箱服务器发送邮件 1. telnet简介 2. 使用telnet程序连接qq邮箱服务器(以centos为例) 1. telnet简介 Telnet是一种应用 ...

  2. 案例 | 魅族云端同步的架构实践和协议细节

    案例 | 魅族云端同步的架构实践和协议细节 http://www.infoq.com/cn/articles/meizu-cloud-synchronization-architecture-and- ...

  3. 那么telnet到底是一个协议还是一个软件呢?

    中国浙江温州小型皮鞋厂老板,面对皮鞋进水发胖问题,没有任何解决的办法! 本周末写点轻松的好玩的事,所谓轻松的好玩的事,那就是既不怕犯错,又不用背锅的事,完全不用负责任,那就说说telnet吧. 如题目 ...

  4. POP3 SMTP DNS DHCP UDP HTTP FTP HTTPS Telnet WIDOWS TFTP 常用协议和默认端口,计算机网络的很需要!!!

    POP3协议用于接收或下载邮件,默认端口110 SMTP协议用于传输或发送邮件,默认端口25 DNS是域名解析的系统,默认端口53 DHCP是动态主机配置协议,默认端口67(服务器) 68(客户) D ...

  5. telnet中使用IMAP协议查看收件箱

    问题 使用命令telnet进去查看收件箱. 步骤 # 使用telnet登录邮件服务器,这里使用的imap协议,不是pop3协议 telnet mail.xxx.com 143 Trying 100.2 ...

  6. 网络编程之Telnet简单远程登录协议

    这里不讲解telnet协议的实现原理,主要用于学习telnet实际的编写方式. 使用的网络协议:tcp/ip telnet协议 编程语言:C/C++ 库:socket套接字 基于Windows的tel ...

  7. Linux远程管理协议(RFB、RDP、Telnet和SSH)

    提到远程管理,通常指的是远程管理服务器,而非个人计算机.个人计算机可以随时拿来用,服务器通常放置在机房中,用户无法直接接触到服务器硬件,只能采用远程管理的方式. 远程管理,实际上就是计算机(服务器)之 ...

  8. telnet协议的Wireshark抓包分析

    文章目录 1.telnet背景介绍 2.telnet服务器的安装 3.使用MobaXterm的telnet连接 4.使用Wireshark进行抓包 1.telnet背景介绍 常用的登录远程服务器的方式 ...

  9. TELNET协议笔记

    TELNET是基于TCP协议的应用层协议,服务器默认监听23端口. 客户端与服务器建立连接后有一个协商过程,这个过程是可选的. 协商完成后,就是数据透传了,服务器发什么客户端就显示什么内容. 有两个细 ...

最新文章

  1. ICRA2021|嵌入式系统的鲁棒单目视觉惯性深度补全算法
  2. HTML5动态圆形导航,jQuery带动画特效的圆形导航菜单特效
  3. python基础之Day23
  4. Flink从入门到精通100篇(五)-flink变种Alink,对阿里巴巴算法平台Alink简介
  5. boost::hana::capture用法的测试程序
  6. 不服来战!PHP 是世界上最好的语言!
  7. mysql没有开启binlog能恢复数据吗_一个妹纸rm -rf把公司整个数据库删没了...
  8. CreateSolidBrush
  9. 投票选举 算法_区块链主流共识算法一文全通
  10. python实现字母的加密和解密 字典_python实现AES加密与解密
  11. 在mysql命令行下执行sql文件
  12. 【Spring】使用数据源连接池访问数据库
  13. numpy : numpy.random
  14. Office 2010 语言包 Office 2010 En english package 包含office professional plus所有组件,还有viso,project!
  15. java adt包_adt下载(Android开发工具)adt离线安装包大集合下载 - 3322软件站
  16. 符冉迪 计算机 培训,宁波大学考研研究生导师简介-符冉迪
  17. 2017年美团Java程序员开发,看我如何拿到offer
  18. Python 模拟登录知乎
  19. 第五章 7-1 输出星期名缩写
  20. 综述:视频和图像去雾算法以及相关的图像恢复和增强研究

热门文章

  1. php 动态图表,excel实现动态图表的3种方法是什么
  2. c++随机打乱数组_编程之路之php数组操作详解【文末有惊喜】
  3. SocketJs报错failed: Error during WebSocket handshake: Unexpected response code: 400
  4. php加载lrc,javascript - 【求助】php如何获取虾米网的LRC地址?
  5. jaxl php,php往mysql写数据,中文乱码有关问题
  6. x内存满白苹果解决_苹果最佳MacBook和Mac:顶级苹果台式机和笔记本电脑
  7. java监听文件改名字_java监听文件目录的改变
  8. java固定资产管理系统_基于jsp的固定资产管理系统-JavaEE实现固定资产管理系统 - java项目源码...
  9. mysql shell无法启动服务_[shell脚本] mysql服务启动脚本
  10. wps如何保存最终状态_怎么让word显示最终状态