android rtsp协议转http协议_网络协议HTTP 协议(一)
HTTP协议
是一种无状态的
、应用层的
、以请求/应答
方式运行的协议,它使用可拓展的语义和自描述消息格式,与基于网络的超文本信息
系统灵活地互动。
1.HTTP 请求场景示意图
2.浏览器发起 HTTP 请求流程图
3.DNS 解析流程示意图
DNS解析
的目的就是把域名字符串对应的 ip地址
拿到,有了这个 ip地址
之后就可以向 ip地址
对应的计算机发起通信了:
3.1 DNS 解析流程示意图
3.2 DNS 解析流程说明图
4.构建 HTTP 请求
上述步骤拿到 ip
地址之后通过该 ip
地址完成三次握手建立TCP
接连(TCP 连接的内容会在后续文章介绍),然后就可构建HTTP
请求,填充上下文至HTTP头部
,再发起 HTTP
请求,这个时候就会涉及到 HTTP
协议的格式,下面介绍基于ABNF语言描述的HTTP协议格式
:
4.1 HTTP 协议的格式示意图
Tips:描述图中的 HTTP 格式就需要制定一种严格的规范,通常 HTTP 协议是基于
ABNF
语言来严格定义。
4.2 ABNF(扩充巴科斯-瑙尔范式)操作符
(1)空白字符(SP):用来分隔协议定义中的各个元素
method SP request-target SP HTTP-version CRLF
(2)选择(/):表示可以选择的规则
start-line = request-line / status-line
(3)范围值(%c##-##)
OCTAL = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" 等价于 OCTAL = %x30-37
(4)序列组合(( )):把规则组合起来作为单个元
(5)不定量重复(m*n):
*表示 0 个或多个元素:*(header-field CRLF)1*表示 1 个或多个元素:2*4 表示 2-4 个元素
(6)可选序列([]):
[message-body]
4.3 ABNF(扩充巴科斯-瑙尔范式)规则表
下面列举出 ABNF
描述的字符规则及含义:
规则 | 定义形式 | 含义 |
---|---|---|
ALPHA | %x41-5A / %x61-71 | 大写和小写字母(A-Z,a-z) ASSCII |
DIGIT | %x30-39 | 数字0-9 |
HEXDIG | DIGIT / “A” / “B” / “C” / “D” / “E” / “F” | 十六进制数字(0-9,A-F,a-f) |
DQUOTE | %x22 | 双引号 |
SP | %x22 | 空格 |
HTAB | %x09 | 横向制表符 |
WSP | SP / HTAB | 空格或横向制表符 |
LWSP | *(WSP / CRLF WSP) | 直线空白 |
VCHAR | %x21-7E | 可见(打印)字符 |
CHAR | %x01-7F | 任何7-位 US-ASCII 字符,不包括 NUL(%x00) |
OCTET | %x00-FF | 8位数据 |
CTL | %x00-1F / %x7F | 控制字符 |
CR | %0D | 回车 |
LF | %x0A | 换行 |
CRLF | CRLF | 互联网标准换行 |
BIT | “0” / “1” | 二进制数字 |
4.4 基于 ABNF 描述的 HTTP 协议格式
HTTP-message = start-line *(header-field CRLF) CRLF [message-body]start-line = request-line / status-line request-line = method SP request-target SP HTTP-version CRLFstatus-line = HTTP-version SP status-code SP reason-phrase CRLF header-field = field-name ":" OWS field-value OWS OWS = *(SP / HTAB)field-name = tokenfield-value = *(field-content / obs-fold) message-body = *OCTET
5.Telnet 模拟 HTTP 请求
telnet singwa666.com 80GET /themes/simpleboot3/portal/public/assets/css/moco.css HTTP/1.1Host: singwa666.com
返回如下图所示:
Tips:首先输入
telnet singwa666.com 80
之后会提示和49.234.12.156
连接成功,然后提示输入内容,接下来输入GET /themes/simpleboot3/portal/public/assets/css/moco.css HTTP/1.1
和Host: singwa666.com
两次回车,可以看到请求数据和返回数据都遵循ABNF
规范。
6.小结
本文主要介绍了 HTTP
请求的过程,然后对 DNS
域名解析做了详细的描述,DNS
解析拿到 ip
地址之后就可以完成经典的 TCP/IP
握手,然后就可以发起 HTTP
请求了,文中还对 HTTP
请求的格式规范做了介绍,HTTP
协议规范是基于 ANBF
语言的一种严格定义,最后介绍了如何试用 telnet
工具模拟 HTTP
请求过程。
扫码关注爱因诗贤
android rtsp协议转http协议_网络协议HTTP 协议(一)相关推荐
- arp协议属于哪一层_网络工程师(3):详解ARP协议
提起"协议",我们并不陌生,比如实习协议.租赁协议,等等. 所以,协议,其实就是双方或几方协商一致,需要共同遵守的约定. 网络中各种各样的协议,就是人们为了让电脑或网络设备(比如交 ...
- ptp精准时间协议_网络时钟同步协议– NTP, PTP – 默默的点滴
这篇文章介绍一下两个时钟同步的网络协议:NTP和PTP. 这里不涉及协议的原理和具体实现(想了解的可自行Google),重点是如何搭建起这两个服务. 1. NTP及PTP简介 NTP(Network ...
- Linux的网络协议族是什么,Linux 网络协议的概述
网络层协议 网络层协议主要包括 IP.ICMP(网络控制报文协议).ARP(地址解析协议) IP协议 该协议被设计成互联分组交换通信网,以形成一个网际通信环境.它负责在源主机和目的地主机之间传输来自其 ...
- 智能终端会议系统(20)---网络视频传输协议--RTP/RTCP/RTSP/SIP/SDP 之间关系
网络视频传输协议--RTP/RTCP/RTSP/SIP/SDP 之间关系 RTP/RTCP/RTSP/SIP/SDP 关系 1. RTP Real-time Transport Protocol,是用 ...
- 网络编程_HTTP协议_Web服务器_(TCP3次握手4次挥手,长短连接,伪静态、静态和动态)
Python高级语法--网络编程--进阶学习笔记 文中案例参考: https://github.com/FangbaiZhang/Python_advanced_learning/tree/maste ...
- 判断设备网络状态_生成树RSTP,快速生成树协议,交换网络必用的破环协议,面试必备...
一.RSTP 802.1w 标准定义了快速生成树协议 RSTP(Rapid Spanning Tree Protocol),该协议基于 STP 协议,对原有的 STP 协议进行了改进并实现了快速收敛. ...
- 3 v4 中心节点固定_科研人员提出新型水声网络移动节点接入协议
AUV(Autonomous Underwater Vehicle)等可移动的节点可开展大范围的水下探测工作,但其在由固定节点构成的水下传感器网络中进行上行链路传输时,会加剧网络碰撞,从而导致固定节点 ...
- java udp 协议_网络协议 - UDP 协议详解
¶ 网络协议 - UDP 协议详解 基于TCP和UDP的协议非常广泛,所以也有必要对UDP协议进行详解.@pdai ¶ UDP概述 UDP(User Datagram Protocol)即用户数据报协 ...
- 网络协议osi模型_网络协议|OSI模型第二层数据链路层
MAC 地址 OSI第二层的作用,使局域网中的机器能互相连接并建立通信,还能够侦测传输错误.要向局域网中的其他机器发送信息,就需要借助 MAC 地址,来指定发送信息的目的地. MAC 地址其实就是网卡 ...
- 在网络上请求网页为什么会用到工业以太网协议_网络知识总结
一下笔记是我看互联网协议入门(一) - 阮一峰的网络日志 所记录的笔记. 如果有人要认真学,强烈建议看上面的链接,以此为基础,再去看别的书,以及视频,因为目前来看阮一峰写的东西是最最最通俗易懂的 并且 ...
最新文章
- 投影串口测试程序_【原创】串口通信测试程序
- python三个小题
- ajax返回304,jquery $ajax GET请求在IE浏览器兼容中遇到的304 cache请求的经验分享
- MySQL【环境搭建 01】Linux root 用户部署 mysql-5.7.28 及 not allowed to connect to this MySQL server 和中文乱码问题处理
- C++ set的一些用法
- git cherry-pick合并某个commit
- 学习笔记 利用反射 手写一个简单的实体类 转json 的方法
- ML之FE:利用【数据分析+数据处理】算法对国内某平台上海2020年6月份房价数据集【12+1】进行特征工程处理(史上最完整,建议收藏)——附录
- VMware16的下载安装及搭建Linux环境
- Dell Precision M4800 AppleALC声卡驱动修复教程
- 使用office tool plus清除office激活状态
- 清华教授花费1年总结python学习路线共26章,学会它offer拿到手软
- win10 全屏秒退
- 【网络】远程连接路由器
- csp试题1:小明种苹果
- 三相四线相位表查错误接线方法与步骤
- [USACO09MAR]向右看齐Look Up(单调栈、在线处理)
- 会python_20小时学会Python,可能吗?
- 基于Springboot的小区物业管理系统
- 国内EDA软件公司有哪些?
热门文章
- Angular 依赖注入 useClass 的实例创建位置
- rxjs里scan operator的执行研究
- SAP Spartacus里的标准Banner设计
- Trial accounts of SAP Cloud Platform do not provide an Identity Authentication tenant
- Jerry文章《浅谈Java和SAP ABAP的静态代理和动态代理,以及ABAP面向切面编程的尝试一文的源代码》
- CRM order lock will trigger product read API
- view controller lifecycle discussion - beforeRendering
- Change Fiori launchpad logo
- SAP IBASE father component的创建
- 利用代码生成right scope数据