首页 > 编程语言 >【网络编程】基础知识(Web Server和HTTP协议)

【网络编程】基础知识(Web Server和HTTP协议)

时间:2023-07-24 20:06:16浏览次数:45  
标签:Web HTTP 请求 TCP Server 服务器 客户端

Web Server

一个Web Server就是一个服务器软件(程序),或者是运行这个服务器软件的硬件(计算机)。其主要功能是通过HTTP协议与客户端(通常是浏览器(Browser))进行通信,来接收,存储,处理来自客户端的HTTP请求,并对其请求做出 HTTP响应,返回给客户端其请求的内容(文件、网页等)或返回一个Error 信息。

【网络编程】基础知识(Web Server和HTTP协议)_服务器

通常用户使用Web浏览器与相应服务器进行通信。在浏览器中键入“域名”或“P地址:端口号”,浏览器则先将你的域名解析成相应的IP地址或者直接根据你的IP地址向对应的 Web服务器发送一个HTTP请求。这一过程首先要通过TCP协议的三次握手建立与目标Web服务器的连接,然后HTTP协议生成针对目标Web服务器的HTTP请求报文,通过TCP、IP等协议发送到目标Web服务器上。

HTTP协议(应用层的协议)

简介

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。HTTP是万维网的数据通信的基础。

概述

HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。我们称这个客户端为用户代理程序(user agent)。应答的服务器上存储着一些资源,比如HTML文件和图像。我们称这个应答服务器为源服务器(origin server)。在用户代理和源服务器中间可能存在多个"中间层”,比如代理服务器、网关或者隧道(tunnel)。

尽管TCP/IP协议是互联网上最流行的应用,HTTP协议中,并没有规定必须使用它或它支持的层。事实上,HTTP可以在任何互联网协议上,或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用。因此也就是其在TCPIP协议族使用TCP作为其传输层。

通常,由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。

工作原理

HTTP 协议定义 Web 客户端如何从 Web 服务器请求 Web 页面,以及服务器如何把 Web 页面传送给客 户端。HTTP 协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方 法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版 本、成功或者错误代码、服务器信息、响应头部和响应数据。

以下是 HTTP 请求/响应的步骤:

  1. 客户端连接到 Web 服务器 一个HTTP客户端,通常是浏览器,与 Web 服务器的 HTTP 端口(默认为 80 )建立一个 TCP 套接字连接。例如,http://www.baidu.com
  2. 发送 HTTP请求,通过 TCP 套接字,客户端向 Web 服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据 4 部分组成。
  3. 服务器接受请求并返回 HTTP响应,Web 服务器解析请求,定位请求资源。服务器将资源复本写到 TCP 套接字,由客户端读取。一个 响应由状态行、响应头部、空行和响应数据 4 部分组成。
  4. 释放连接 TCP 连接,若connection 模式为 close,则服务器主动关闭 TCP连接,客户端被动关闭连接,释放 TCP 连接;若connection 模式为 keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
  5. 客户端浏览器解析 HTML 内容,客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的 HTML 文档和文档的字符集。客户端浏览器读取响应数据 HTML,根据 HTML 的语法对其进行格式化,并在浏览器窗口中显示。

例如:在浏览器地址栏键入URL,按下回车之后会经历以下流程:

  1. 浏览器向DNS服务器请求解析该URL中的域名所对应的IP地址;
  2. 解析出IP地址后,根据该IP地址和默认端口80,和服务器建立TCP连接;
  3. 浏览器发出读取文件(URL中域名后面部分对应的文件)的HTTP请求,该请求报文作为TCP三次握手的第三个报文的数据发送给服务器;
  4. 服务器对浏览器请求作出响应,并把对应的HTML文本发送给浏览器;
  5. 释放TCP连接;
  6. 浏览器将该HTML文本并显示内容。

标签:Web,HTTP,请求,TCP,Server,服务器,客户端
From: https://blog.51cto.com/u_16188116/6838255

相关文章

  • 基于web的网上书城系统
    完整资料进入【数字空间】查看——baidu搜索"writebug"一、摘要随着前端各种新兴技术的崛起,我们编写前端已经不仅仅局限于html,css,js,而是有了更多的选择,用更加简洁的代码就可以实现更加完美的功能。“基于web的网上书城系统”的前端开发就是采用vue和基于vue开发的桌面组件库element......
  • CTFer成长记录——CTF之Web专题·bugku-啊哒
    一、题目链接  https://ctf.bugku.com/challenges/detail/id/6.html?id=6二、解法步骤  打开图片:  显示完整,似乎没有文件高度的问题。右键查看属性——>文件详细信息:发现一串16进制数:尝试转换成字符串:https://www.sojson.com/hexadecimal.html  得到:sdnisc_20......
  • HTTP请求时哪些请求头是默认携带的?
    提起HTTP的请求头和响应头总是一头雾水,因为总是看上去一大堆,好多还不知道是什么意思。今天我们先研究请求头,我就想,如果我们能弄清楚,在我们什么都不做的情况下,一个最简单的HTTP请求会携带哪些请求头,那么复杂的情况无非是在这上面做加法,我们对请求头就能做到心中有数了。我从以下4......
  • CTFer成长记录——CTF之Web专题·bugku-眼见非实
    一、题目链接  https://ctf.bugku.com/challenges/detail/id/5.html二、解法步骤  解法压缩包是一个.docx文件,打开该文件后发现一堆乱码:  结合题意:“眼见非实”,猜测该docx文件融合了其他的文件。用010打开看看:  发现了压缩包的文件头,于是用binwalk尝试文件拆分:binwal......
  • 利用Nginx http_image_filter_module模块来裁剪过大的图片
    http_image_filter_module是nginx提供的集成图片处理模块,支持nginx-0.7.54以后的版本,在网站访问量不是很高磁盘有限不想生成多余的图片文件的前提下可,就可以用它实时缩放图片,旋转图片,验证图片有效性以及获取图片宽高以及图片类型信息,由于是即时计算的结果,所以网站访问量大的话,不建......
  • 忽略证书的HTTPS请求实现
    publicstaticvoidhttpsTest(StringhttpUrl){//忽略证书的https请求try{SSLContextsslContext=newSSLContextBuilder().loadTrustMaterial(null,newTrustStrategy(){@OverridepublicbooleanisTrusted(X509Certificate[......
  • httprunner
    httprunner(仅作为个人笔记,如有雷同,请联系删除。。)https://www.cnblogs.com/aichixigua12/p/13162479.htmlHttpRunner是一款面向HTTP(S)协议的通用测试框架,只需编写维护一份YAML/JSON脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。1、特点:继承Requ......
  • Vue WebSocket的实现 含断线重连
    vue客户端 main.jsimport{createApp}from'vue'import{reactive}from'vue'importAppfrom'./App.vue'import{webSocketUrl}from'/public/static/config.json'letwebsock=null;constapp=createApp(App);......
  • 深入理解 Serverless 计算的并发度
    作者:西流背景2019年Berkeley预测Serverless将取代Serverful计算[1],成为云计算的计算新范式。Serverless为应用程序开发提供了一种全新的系统架构,其凭借着弹性伸缩省事省心,按需付费更低成本、聚焦业务降低OPS这三大核心价值,将开发人员从繁重的手动资源管理和性能成本优......
  • 深入理解 Serverless 计算的并发度
    作者:西流背景2019年Berkeley预测Serverless将取代Serverful计算[1],成为云计算的计算新范式。Serverless为应用程序开发提供了一种全新的系统架构,其凭借着弹性伸缩省事省心,按需付费更低成本、聚焦业务降低OPS这三大核心价值,将开发人员从繁重的手动资源管理和性能成......