📜  在TCP协议上构造一个简单的HTTP请求

📅  最后修改于: 2021-08-29 11:27:01             🧑  作者: Mango

HTTP请求:

  • HTTP消息是服务器和客户端之间如何交换数据的方式。在这种情况下,有两种类型的消息,其中一种是HTTP客户端请求,第二种是来自服务器的响应。
  • 消息为文本形式,并且以ASCII形式编码,并且跨多行。在HTTP / 1.1和较早版本的协议中,消息是通过连接公开发送的。在HTTP / 2中,曾经人类可读的消息现在被分为HTTP帧,从而提供了优化和性能改进。
  • 现在,通过实际创建一个HTTP请求和响应,来了解它们的组成部分。 telnet客户端可帮助我们连接到Internet上的其他计算机。格式为telnet主机名端口

笔记 –

您也可以使用此在线telnet客户端。

Opening a TCP connection to server via telnet

在TCP协议上构造简单HTTP请求的步骤

步骤1 :

HTTP的默认端口是80 ,并且telnet命令将我们连接到geeksforgeeks.org上的HTTP端口。 服务器。我们现在可以开始向服务器发送HTTP请求了。

第2步 :

我们如何创建HTTP请求?让我们在这里查看HTTP协议定义文档,以了解如何构建HTTP请求。

Request :
    A request message from a client to server includes, within the 
    first line of that message, the method to be applied to the resource,
    the identifier of the resource, and the protocol version in use.
    
        Request    = Request-Line
                 *((  geneal-header
                 |    request-header
                 |    entity-header ) CRLF )
                CRLF
                [ message-body ]        
                
Request-Line :     
    The Request-Line begins with a method token, followed by the 
    Request-URL and the protocol version, and ending the CRLF.The
    elements are seperated by SP characters. No CR or LF is allowed
    except in the final CRLF sequence.
    
        Request-Line = Method SP Request-URI SP HTTP_Version CRLF

HTTP请求规范:

下面给出的屏幕快照供您参考,其中显示了HTTP请求规范。

HTTP请求-响应组件:

  • 从上图可以看出,HTTP通信的不同部分是:
  • 请求行(HTTP请求)
  • 状态行和响应头(HTTP响应)
  • 响应主体(HTTP响应)
  • 尝试弄清楚其中一些响应标头的含义以及它们的用途–对于初学者,请参阅“ Last-Modified”,“ Content-Length”,“ Content-Type”
  • 如果我们在上述通信过程中分析传输到计算机或从计算机传输的网络数据包,我们将能够理解一些内容(192.168.43.197是客户端计算机,192.241.136.170是服务器)
  • 客户端向服务器发起TCP连接请求(第1行),这是在我们执行telnet命令时执行的
  • HTTP的通信使用已建立的TCP连接进行(请参阅底部列出了用于资源传输的协议的底部)
  • 客户端将HTTP请求行发送到服务器(第6行),服务器使用HTTP状态代码和数据响应该请求,就像我们在telnet输出中看到的那样

笔记 –

我们也可以使用Wire shark分析网络数据包,这将由您完成。