通过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: 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协议的实践真的很不错,学习到了很多新东西,要是光看理论实在是不行。

大家还可以试试其他的。

时间: 2024-10-11 21:55:51

通过telnet来实践HTTP协议。的相关文章

常见动态路由实践———RIP协议篇

简介(1)动态路由协议通过路由信息的交换生成并维护转发引擎所需的路由表.当网络拓扑结构改变时动态路由协议可以自动更新路由表(更新周期30s),并负责决定数据传输最佳路径.(2)在动态路由中,管理员不再需要与静态路由一样,手工对路由器上的路由表进行维护,而是在每台路由器上运行一个路由协议.这个路由协议会根据路由器上的接口的配置(如IP地址的配置)及所连接的链路的状态,生成路由表中的路由表项. 动态路由协议分类(1)RIP:是内部网关协议IGP中最先得到广泛使用的协议.RIP是一种分布式的基于距离向

CentOS 6.9中Telnet的安装配置

Telnet:TCP/IP协议中的一员,是Internet远程登录服务的标准协议和主要方式.它为用户提供了在本地计算机上完成远程主机工作的能力.要开始一个Telnet会话,必须输入用户名和密码来登录服务器.Telnet是常用的远程控制Web服务器的方法,监听TCP的23号端口. xinetd:新一代的网络超级守护进程,经常用来管理多种轻量级的Internet服务.xinetd提供类似于inetd+tcp_wrapper的功能,但它更强大更安全.xinetd能够同时监听多个指定的端口,在接受用户请

谈谈telnet和ssh!

telent 1. Telnet是电信(Telecommunications)和网络(Networks)的联合缩写,这是一种在UNIX平台上最为人所熟知的网络协议. 2. Telnet使用端口23,它是专门为局域网设计的. 3. Telnet不是一种安全通信协议,因为它并不使用任何安全机制,通过网络/互联网传输明文格式的数据,包括密码,所以谁都能嗅探数据包,获得这个重要信息. 4. Telnet中没有使用任何验证策略及数据加密方法,因而带来了巨大的安全威胁,这就是为什么telnet不再用于通过公

网络协议分层(七层、四层)

一.概述 网络协议设计者不应当设计一个单一.巨大的协议来为所有形式的通信规定完整的细节,而应把通信问题划分成多个小问题,然后为每一个小问题设计一个单独的协议.这样做使得每个协议的设计.分析.时限和测试比较容易.协议划分的一个主要原则是确保目标系统有效且效率高.为了提高效率,每个协议只应该注意没有被其他协议处理过的那部分通信问题:为了主协议的实现更加有效,协议之间应该能够共享特定的数据结构:同时这些协议的组合应该能处理所有可能的硬件错误以及其它异常情况.为了保证这些协议工作的协同性,应当将协议设计

第12章 网络基础(1)_网络分层和TCP/IP协议族

1. 协议的概念 (1)计算机网络中实现通信必须有一些约定.如对速率.传输代码.代码结构.传输控制步骤和出错控制等约定,这些约定即被称为通信协议 (2)在两个节点之间要成功地进行通信,两个节点之间必须约定使用共同的"语言",这些被通信各方共同遵守的约定.语言.规则被称为协议 (3)在Internet中,最为通用的网络协议是TCP/IP协议. 2. 网络分层模型 (1)应用层:提供用户接口,特指能够发起网络通信的应用程序,如客户端程序.QQ.MSN.浏览器等,服务器程序有Web服务器.邮

电子邮件收发协议总结

说明:本文仅供学习交流,转载请标明出处,欢迎转载!  电子邮件发送协议是一种基于"推"的协议,主要包括SMTP:邮件接收协议则是一种基于"拉"的协议,主要包括POP协议和IMAP协议,在正式介绍这些协议之前,我们先给出邮件收发的体系结构: 从上图可以看出邮件收发的整个过程大致如下: (1)发件人调用PC机中的用户代理编辑要发送的邮件. (2)发件人点击屏幕上的"发送邮件"按钮,把发送邮件的 工作全部交给用户代理来完成.用户代理通过SMTP协议将邮

Telnet运用and Sqlserver connection failed

今天的工作中,需要远程访问服务器上的数据库.但是,连接错误,Error code is 1326.说句实话,关于SqlServer 不能远程访问这个问题,我遇到过N次.可是每次都不认真去研究到底是什么原因造成的?直到今天,我解决这个遇到过N多次的问题时,还是相当棘手.在今天解决这个问题过程中,我深深的明白了一条真理."遇到问题,如果逃避了,这辈子都要被它折磨.如果,忍受着折磨的痛苦去解决它,那么它永远不敢在找你."生活中也是一样,不要去祈祷 life  become  simple,要

Linux程序设计学习笔记----Socket网络编程基础之TCP/IP协议簇

转载请注明出处: ,谢谢! 内容提要 本节主要学习网络通信基础,主要涉及的内容是: TCP/IP协议簇基础:两个模型 IPv4协议基础:IP地址分类与表示,子网掩码等 IP地址转换:点分十进制\二进制 TCP/IP协议簇基础 OSI模型 我们知道计算机网络之中,有各种各样的设备,那么如何实现这些设备的通信呢? 显然是通过标准的通讯协议,但是,整个网络连接的过程相当复杂,包括硬件.软件数据封包与应用程序的互相链接等等,如果想要写一支将联网全部功能都串连在一块的程序,那么当某个小环节出现问题时,整只

第一讲_HTTP协议详解

HTTP协议介绍: 绝大多数的Web开发,都是构建在Http协议之上的Web应用,理解和掌握Http协议,将有助于我们更好的学习和掌握Servlet和Jsp技术,以及其他相关的Web开发技术. 网络基础知识: 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯.网络编程中有两个主要的问题,一个是如何准确定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. ISO/OSI(Open System Interconnection)七层参考模型:应用层(处理网络应用