Longstick的学习周记——http协议小解
Longstick的学习周记——第十九周
- 前言
- HTTP跟HTTPS
- HTTP协议简介
- HTTP协议特点
- HTTP工作原理
- HTTP状态码
- HTTP请求方法
- URL(统一资源定位器)
- HTTPS
前言
我超。最近搞面试搞的人都有点麻了,看啥啥不会问啥啥不会。人有点自我否定了,很难受。甚至我发现了之前写过的博客。。。。全都忘记了。果然只是实践才能出真知。
赶紧抱抱佛脚整理一下自己那多的跟火星地表一样的知识大坑。。。
呃,其实也就面了几个,但是仅仅只是几场面试的问题我就有很多不会了。。。。
主要是计网相关知识吧,也确实,计网还没系统的了解过,先对一些基本问题做一点点整理,这次先是HTTP。
HTTP跟HTTPS
HTTP协议简介
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。
HTTP协议特点
- 支持客户/服务器模式
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
- 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
- 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
HTTP工作原理
HTTP协议是基于TCP/IP协议之上的应用层协议
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。
以下是 HTTP 请求/响应的步骤:
客户端连接到Web服务器
一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.baidu.com。发送HTTP请求
通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
服务器接受请求并返回HTTP响应
Web服务器解析请求,定位请求资源。服务器将资源副本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
释放连接TCP连接
若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
例如 在浏览器地址栏键入URL,按下回车之后会经历以下流程:
- 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;
- 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;
- 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;
- 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;
- 释放 TCP连接;
- 浏览器将该 html 文本并显示内容;
HTTP状态码
- 1xx:消息,请求已被接收,继续处理
- 2xx:成功,请求已成功被服务器接收、理解
- 3xx:重定向,需要后续操作
- 4xx:请求错误:服务器无法处理,无法被执行
- 5xx:服务器错误:服务器在处理正确请求时出错
HTTP请求方法
HTTP中定义了八种方法(也叫动作)来以不同方式操作指定资源:
GET
只用在读取数据,不应当用在产生“副作用”的操作中,信息写在URL中,会被网络蜘蛛等随意访问POST
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文(request body)中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。PUT
向指定资源位置上传其最新内容。HEAD
与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。DELECT
请求服务器删除Request-URI所标识的资源。TRACE
回显服务器收到的请求,主要用于测试或诊断。OPTIONS
这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用’*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。
URL(统一资源定位器)
超文本传输协议(HTTP)的统一资源定位符将从因特网获取信息的五个基本元素包括在一个简单的地址中:
- 传送协议。
- 层级URL标记符号(为[//],固定不变)
- 访问资源需要的凭证信息(可省略)
- 服务器。(通常为域名,有时为IP地址)
- 端口号。(以数字方式表示,若为HTTP的默认值“:80”可省略)
- 路径。(以“/”字符区别路径中的每一个目录名称)
- 查询。(GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字-符冲突的问题)
- 片段。以“#”字符为起点
以
http://www.luffycity.com:80/news/index.html?id=250&page=1
为例:
- http,是协议;
- www.luffycity.com,是服务器;
- 80,是服务器上的默认网络端口号,默认不显示;
- /news/index.html,是路径(URI:直接定位到对应的资源);
- ?id=250&page=1,是查询。
- 大多数网页浏览器不要求用户输入网页中“http://”的部分,因为绝大多数网页内容是超文本传输协议文件。同样,“80”是超文本传输协议文件的常用端口号,因此一般也不必写明。一般来说用户只要键入统一资源定位符的一部分(www.luffycity.com:80/news/index.html?id=250&page=1)就可以了。
HTTPS
HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。
具体参考:
HTTP协议超级详解 ——爱文飞翔
HTTP经典详解
Longstick的学习周记——http协议小解相关推荐
- Longstick的学习周记——ES6新特性
Longstick的学习周记--ES6新特性 前言 ES6新特性 1. let 和 const let关键字 const 关键字 2. 模块字符串\` \` 3. 解构 4. 函数的参数默认值 5. ...
- 【转】医疗业务学习笔记--DICOM协议的基础内容!!!!!!!!!!
转自:医疗业务学习笔记--DICOM协议的基础内容 - 知乎 本文首发于"雨夜随笔"公众号,欢迎关注. DICOM协议是医疗领域对如何处理.存储.打印和传输医疗图片的一系列标准.D ...
- raft算法_学习分布式一致性协议:自己实现一个Raft算法
前言 MIT6.824是麻省理工学院开设的一个很棒的分布式系统公开课程,课程的Schedule在这里 ,这门课程的学习方式主要是通过教授的 lecture 讲解.Paper阅读.FAQ答疑,以及实践l ...
- 蓝牙核心协议学习 -- 基带协议(Baseband)翻译最终版
2021-10-27 蓝牙核心协议学习 -- 基带协议(Baseband) 剩余篇章已上传到资源分享,链接如下: baseband翻译.pdf-其它文档类资源-CSDN下载 baseband翻译.pd ...
- 蓝牙核心协议学习 -- 基带协议(Baseband)
目录 1 概述 1.1 蓝牙时钟 1.2 蓝牙设备寻址 1.2.1 保留地址 1.3 访问码(ACCESS CODES) ...
- 九、python学习之HTTP协议
今天学习了HTTP协议,说实话,我并不想做今天的学习笔记,虽然学习的东西不多,但是对于HTTP协议要是往深层去说,所有的名词和用法都解释出来,写他个5篇都算是少的.但是,既然是学习笔记,还是本着总结今 ...
- 第十五周学习周记——微信小程序开发初步
第十五周学习周记 前言 一.小程序简介 二.小程序代码构成 1. JSON配置 2. WXML模板 3. WXSS样式 4. JS逻辑交互 总结 前言 这一周将开始微信小程序的学习. 一.小程序简介 ...
- 组播学习之——IGMP协议简介
CSDN文章转载地址 组播学习之--IGMP协议简介 IGMP 是Internet Group Management Protocol(互联网组管理协议)的简称.它是TCP/IP 协议族中负责IP 组 ...
- HTML第四周学习周记
HTML第四周学习周记,创建一个团队介绍页面 前言 一.如何引入bootstrap代码 1.引用在线的bootstrap样式 2.引用本地的bootstrap 二.创建页面标题 三.创建我们网页的导航 ...
最新文章
- P4568 [JLOI2011]飞行路线
- ansible-playbook-常用
- 什么?程序员还要了解经济学?!
- Python工具 | 4个好用的开源 Python 下载器
- Fiddler+willow使用指南
- Runnable、Callable、Executor、Future、FutureTask关系解读
- 西建大历年电子与通信工程复试真题_学姐分享2020年西安电子科技大学电子与通信工程考研初复试经验指导...
- 2.5. SciTE
- kaggle房价预测(House Prices: Advanced Regression Techniques)详解
- HALCON 21.11:深度学习笔记---有监督训练(6)
- java+spring+vue基于ssm的员工公寓后勤管理系统
- InstantClient+PLSQL安装配置教程
- 高数 | 常用求极限方法总结
- html上传文件出现fakepath,chrome upload file 出现 fakepath,请解决方案
- 坐标转换 | 高斯坐标转经纬度坐标
- 给char赋超过范围的值会发生什么
- 操作系统4————进程同步
- win10更改hosts文件
- Netty 警告 The pipeline contains no upstream handlers; discarding:
- 手机开热点显示互联网无服务器,win10热点无互联网连接的具体解决办法【图文】...