通过telnet来实践HTTP协议。
这是一篇实践教程,能够让你更加深刻的理解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: 10name=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协议的实践真的很不错,学习到了很多新东西,要是光看理论实在是不行。
大家还可以试试其他的。
通过telnet来实践HTTP协议。的更多相关文章
- 在 telnet 中利用HTTP协议传递GET、POST参数
HTTP协议不仅可以用在浏览器中,还可以用在任何支持它的地方,平时用浏览器访问网站时HTTP协议内容是隐藏起来看不到的,用 telnet 就能揭开它的神秘面纱.telnet 开启方法参考文章末尾——t ...
- C项目实践--网络协议和套接字编程
1.TCP/IP协议 TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议,ICMP(Internet Control Message Proto ...
- [LoadRunner]性能测试实践_Hessian协议脚本编写2
协议选取和运行配置请参考:http://www.cnblogs.com/whylaughing/p/5430821.html 这次直接贴代码让大家参考: import lrapi.lr; import ...
- [LoadRunner]性能测试实践_Hessian协议脚本编写
第一步,新建LR的脚本,选择Java Vuser协议: 第二步,编写hessian测试脚本,如下: import lrapi.lr; import java.net.MalformedURLExcep ...
- 后台开发-核心技术与应用实践--TCP协议
网络模型 为使不同计算机厂家的计算机能够互相通信,国际标准化组织 ISO 1981 年正式推荐了一个网络系统结构一一七层参考模型,也叫作开放系统互连模型. ISO 七层网络模型及其功能展示: 这个七层 ...
- linux高性能服务器编程 (一) --Tcp/Ip协议族
前言: 在学习swoole入门基础的过程中,遇到了很多知识瓶颈,比方说多进程.多线程.以及进程池和线程池等都有诸多的疑惑.之前也有学习相关知识,但只是单纯的知识面了解.而没有真正的学习他们的来龙去脉. ...
- Telnet运用and Sqlserver connection failed
今天的工作中,需要远程访问服务器上的数据库.但是,连接错误,Error code is 1326.说句实话,关于SqlServer 不能远程访问这个问题,我遇到过N次.可是每次都不认真去研究到底是什么 ...
- http协议与http代理
TCP/IP协议族 TCP/IP(Transmission Control Protocol/InternetProtocol.传输控制协议/网际协议)是用于计算机通信的一个协议族. TCP/IP协议 ...
- HTTP协议的请求和响应学习
本篇作为学习servlet的前提,http协议是学习JavaWeb开发的基石,不深入了解http协议,就不能说掌握了JavaWeb开发. HTTP协议有两个版本:HTTP1.0和HTTP1.1,那么有 ...
随机推荐
- javascript练习-定义子类
function defineSubclass(superclass, //父类的构造函数 constructor, //新的子类的构造函数 methods, //实例方法:复制至原型中 static ...
- DB_oracle学习笔记_概念分析
概念分析: 1. 数据库(Database): 数据库是一个文件集合,包括数据文件,临时文件,重做日志文件和控制文件.也可以说数据库是物理操作系统文件或磁盘集合.数据库可以由多个实例(sc ...
- Select loop
The Bash Shell also offer select Loop, the syntax is: select varName in list do command1 command2 .. ...
- Handler机制来处理子线程去更新UI线程控件
public class HandlerTestActivity extends Activity { private TextView tv; private static final int UP ...
- 如何判断ScrollView滑动方形
1/判断滚动视图左右滚动 { CGFloat startContentOffsetX;//滚动开始的坐标 CGFloat willEndContentOffsetX; //滚动即将停止的坐标 CGFl ...
- 记AbpSession扩展实现过程
AbpSession只给了userId和TenantId,这次实际项目中并不够用,网上找了很久也没找到好的实现方法.项目初期没有时间进行研究,最近空了试了一下,大致实现添加额外字段并读取相应值的功能. ...
- 树莓派(Raspberry Pi)搭建简单的lamp服务
树莓派(Raspberry Pi)搭建简单的lamp服务: 1. LAMP 的安装 sudo apt-get install apache2 mysql-server mysql-client php ...
- C#函数式编程之可选值
在我们的实际开发中已经会遇到可空类型,而在C#中自从2.0之后就提供了可空类型(Nullable<T>),普通的值类型是不可以赋值为NULL,但是在类型的后面加上问号就变成了可空类型,这样 ...
- 【原创】三分钟教你学会MVC框架——基于java web开发(1)
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法. ...
- [ZigBee] 15、Zigbee协议栈应用(一)——Zigbee协议栈介绍及简单例子(长文,OSAL及Zigbee入门知识)
1.Zigbee协议栈简介 协议是一系列的通信标准,通信双方需要按照这一标准进行正常的数据发射和接收.协议栈是协议的具体实现形式,通俗讲协议栈就是协议和用户之间的一个接口,开发人员通过使用协议栈来使用 ...