【网络编程】HTTP简介&URL
前言
1. http 简介
1.1 概念
HTTP协议是 Hyper Text Transfer Protocol(超文本传输协议)的缩写。
用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。

1.2 原理
原理:
- HTTP是一个基于 TCP/IP通信协议 来传递数据(HTML 文件, 图片文件, 查询结果等)。
- 是基于 客户端-服务器 模型运作的。
- 是一个应用层协议。
通信过程:
- HTTP 客户端(如浏览器)通过 URL 向 HTTP 服务端(如web服务器)发送请求。
- HTTP 服务端 接收到请求后,向客户端发送响应信息。
web服务器:
- Apache服务器。
- IIS服务器(Internet Information Services)。
- etc。
1.3 特点
HTTP协议的特点:
- 简单:客户端向服务器请求服务时,只需要传送请求方法和资源路径即可获得资源。
- 快捷:由于HTTP协议简单,所以HTTP服务器程序规模小,通信快。
- 灵活:HTTP允许传输任意类型的数据对象,传输的类型由Content-Type加以标记。
- 无连接:服务器每处理客户端的一个请求,响应并获得客户端的应答后,断开连接。(断开TCP连接)。
- 注意:HTTP1.1 后便有了持久连接的方法。即是任意一端只要没有提出断开连接,则保持TCP连接。
- 无状态:HTTP协议对于事务处理没有记忆能力,即无法根据之前的状态进行本次的请求处理。如果后续处理需要前面的信息,它必须重传数据。
- 解决:引入Cookie技术,让服务器知道用户上一次的操作,并且记录存储在客户端之中。
2. URL 简介
2.1 概念
URL 是 Uniform Resource Locator 的缩写。统一资源定位器。
URL 是一个网页地址:
- 可以由字母组成,如 baidu.com。
- 也可以是物联网协议(IP)地址:180.76.76.76。
2.2 URL 通用格式
一个URL的组成有多个不同的组件,一个URL的通用格式如下:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
说明:
| 组件 | 名称 | 描述 |
|---|---|---|
| scheme | 方案 | 指定访问服务器获取资源时使用哪种协议,有HTTP、HTTPS、FTP、SMTP等协议。 |
| user | 用户 | 某些访问资源时候需要指定用户名,才有权限获取资源。 |
| password | 密码 | 用户名后面可能需要密码进行验证,用户名与密码直接使用“:”冒号分隔连接。 |
| host | 主机 | 资源宿主服务器的主机名或者IP地址(点分十进制)。 |
| port | 端口 | 资源宿主服务器正在监听的端口号。 |
| path | 路径 | 服务器本地资源的路径。 |
| params | 参数 | 某些方案会使用这个组件来输入参数,可以拥有多个参数,使用“;”符号 与路径分隔开。 |
| query | 查询 | 某些方案会使用这个组件传递参数以激活应用程序,查询组件的内容没有通 用的格式,用 ? 字符与其他组件分隔开 |
| frag | 片段 | 这个字段是在客户端内部使用,不会发送到服务器,通过“#”字符与其他组件分隔开 。 |
注意:
- 以上组件不是全部都必须填上的,根据方案填写需要的组件即可。
- 端口port:端口号,可以不用自己填写,比如HTTP默认使用80端口,HTTPS默认使用443 端口。端口不是一个URL必须的部分。
2.3 网页地址 实例说明
网页地址:https://www.cnblogs.com/lizhuming/p/13834535.html
- https:方案scheme。安全超文本传输协议。
- www.cnblogs.com:主机host。博客园的域名。
- lizhuming/p/13834535.html:路径path。博客园服务器上的路径。
- 13834535.html:资源文件。html格式。
- 端口省略,即是默认使用https的默认端口 443。
在浏览器中按 F12 进入浏览器控制台,可以看到很多 URL。
3. HTTP 消息结构
3.1 客户端请求消息
客户端请求消息由四部分组成:
- 请求行(request line)。
- 请求头部(header)。
- 空行。
- 请求数据。
如图:


头部信息参考:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
//请求报文
<method> <request-URL> <version>
<headers>
<entity-body>
3.2 服务器响应消息
服务器响应消息也是由四部分组成:
- 状态行。
- 消息报头。
- 空行。
- 响应正文。
如图:


//响应报文
<version> <status> <reason-phrase>
<headers>
<entity-body>
响应状态码说明:
| 范围 | 已定义范围 | 描述 |
|---|---|---|
| 100 : 199 | 100 : 101 | 信息提示 |
| 200 : 299 | 200 : 206 | 成功 |
| 300 : 399 | 300 : 305 | 重定向 |
| 400 : 499 | 400 : 415 | 客户端错误 |
| 500 : 599 | 500 : 505 | 服务器错误 |
tips:具体的状态码到参考链接了解。
3.3 实例
打开浏览器,F12 进入后台,点击 network 查看。

4. HTTP 请求方法
HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
| 方法 | 描述 |
|---|---|
| GET | 请求指定的页面信息,并返回实体主体。 |
| HEAD | 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头。 |
| POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。 |
| PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
| DELETE | 请求服务器删除指定的页面。 |
| CONNECT | HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。 |
| OPTIONS | 允许客户端查看服务器的性能。 |
| TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
| PATCH | 是对 PUT 方法的补充,用来对已知资源进行局部更新 。 |
5. HTTP 响应头信息
| 应答头 | 描述 |
|---|---|
| Allow | 服务器支持哪些请求方法。 |
| Content-Encoding | 文档的编码(Encode)方法。 |
| Content-Length | 内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。 |
| Content-Type | 表示后面的文档属于什么MIME类型。 |
| Date | 当前的GMT时间。 |
| Expires | 文档有效期截止时间。过期不缓存。 |
| Last-Modified | 文档的最后改动时间。 |
| Location | 表示客户应当到哪里去提取文档。 |
| Refresh | 表示浏览器应该在多少时间之后刷新文档。单位 秒。 |
| Server | 服务器名字。 |
| Set-Cookie | 设置和页面关联的Cookie。 |
| WWW-Authenticate | 客户应该在Authorization头中提供什么类型的授权信息。 |
tips:使用应答头参数时,建议到参考链接了解其作用。
参考
- http详细文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP
- 菜鸟速学:https://www.runoob.com/http/http-tutorial.html
- HTTP2简介:https://developers.google.com/web/fundamentals/performance/http2/?hl=zh-cn
- github《HTTP权威指南》笔记:https://github.com/woai30231/http
【网络编程】HTTP简介&URL的更多相关文章
- java基础篇---网络编程(IP与URL)
一:IP与InetAddress 在Java中支持网络通讯程序的开发,主要提供了两种通讯协议:TCP协议,UDP协议 可靠地连接传输,使用三方握手的方式完成通讯 不可靠的连接传输,传输的时候接受方不一 ...
- Java网络编程-URI和URL
前提 前面的一篇文章<Java中的Internet查询>分析完了如何通过IP地址或者主机名确定主机在因特网中的地址.任意给定主机上可能会有任意多个资源,这些资源需要有标识符方便主机之间访问 ...
- unix网络编程之简介
通常客户一次只与一个服务器通信, 上图为:一个服务器同时处理多个客户的请求. 上图为:客户与服务器使用TCP协议在同一个以太网中通信. 路由器是广域网的架构设备.今天,最大的广域网是因特网. 上图为: ...
- python入门(九):网络编程和多线程
一.网络编程 Socket简介 Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯. ...
- UNIX网络编程---简介
UNIX网络编程---简介 一. 概述 a) 在编写与计算机通信的程序时,首先要确定的就是和计算机通信的协议,从高层次来确定通信由哪个程序发起以及响应在合适产生.大多数 ...
- Java 网络编程(三) 创建和使用URL访问网络上的资源
链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/09/2951877.html 创建和使用URL访问网络上的资源 URL(Uniform Reso ...
- 【unix网络编程第三版】阅读笔记(二):套接字编程简介
unp第二章主要将了TCP和UDP的简介,这些在<TCP/IP详解>和<计算机网络>等书中有很多细致的讲解,可以参考本人的这篇博客[计算机网络 第五版]阅读笔记之五:运输层,这 ...
- 【Android 应用开发】Android 网络编程 API笔记 - java.net 包 权限 地址 套接字 相关类 简介
Android 网络编程相关的包 : 9 包, 20 接口, 103 类, 6 枚举, 14异常; -- Java包 : java.net 包 (6接口, 34类, 2枚举, 12异常); -- An ...
- javase的网络编程(InetAddress,UDP,TCP,URL,Socket,DatagramSocket)
通过一段时间对java网络编程相关内容的学习,写下这篇随笔,对这一部分的知识进行梳理和总结. 网络编程 一.网络编程三要素: IP地址:网络会给每个联网的主机分配一个数字的编码地址,该地址就是IP地址 ...
- 基于URL的高层次Java网络编程
一致资源定位器URL URL(Uniform Resource Locator)是一致资源定位器的简称,它表示Internet上某一资源的地址.通过URL我们可以访问Internet上的各种网络资源, ...
随机推荐
- 所有的 Unix Like 系统都会内建 vi 文书编辑器。vim 是vi的升级版本,它不仅兼容vi的所有指令 ,而且还有一些新的特性在里面。
所有的 Unix Like 系统都会内建 vi 文书编辑器.vim 是vi的升级版本,它不仅兼容vi的所有指令 ,而且还有一些新的特性在里面. https://blog.csdn.net/carolz ...
- Linux_源码安装包管理理论概述
一.源码包基本概述 1️⃣:源码包的编译用到了linux系统里的编译器,通常源码包都是用C语言开发的,这也是因为C语言为linux上最标准的程序语言 2️⃣:Linux上的C语言编译器叫做gcc,利用 ...
- STM32F7系列时钟相关问题:HSE模式配置(旁路模式、非旁路模式
从时钟源的角度,分为两类外部时钟(E)和内部时钟(I).从时钟速率的角度,分为两类高速时钟(HS)和低速时钟(LS).而把它们组合起来就有四种时钟:HSE.HIS.LSE.LSI.至于为什么会有这么复 ...
- Assignment Problem的若干思考
最近受到南京一个同学的push,又开始了博客园写作之旅.欢迎大家联系我做代码实现工作,QQ:1198552514.权当赚点生活费~ 我的研究也经常用的Assignment problem,而且很多 ...
- Spring 是什么?
概述 Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好.易于测试.可重用的代码. Spring 框架是一个开源的 Ja ...
- 使用Typora编写Markdown你真的会了吗
目录 Typora 介绍 使用 常用快捷键 概述 标题 一级标题 二级标题 方式(推荐) 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 段落 粗体斜体删除线 下划线 注释 分割线 脚注 ...
- week-03
1.简述HTTP交互原理 1.浏览器分析输入访问的地址 域名(IP)+$uri 2.读取浏览器缓存 3.请求DNS服务器,解析域名,返回IP 4.建立TCP连接,三次握手 5.发送请求 6.接收返回请 ...
- 解决使用go get 下载模块下载超时的问题
解决使用go get 下载模块下载超时的问题 解决使用go get 下载模块下载超时的问题 使用go env可以看到,默认的GOPROXY的值是https://proxy.golang.org, ...
- python做反被爬保护的方法
python做反被爬保护的方法 网络爬虫,是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.但是当网络爬虫被滥用后,互联网上就出现太多同质的东西,原创得不到保护.于是,很 ...
- day05对象和类
day06作业: 第一题:分析以下需求,并用代码实现 手机类Phone 属性: 品牌brand 价格price 行为: 打电话call() 发短信sendMessage() 玩游戏playGame() ...