HTTP协议理解——计算机网络

http

    • 一、概念
      • 传输流程
      • HTTP请求/应答应的步骤如下:
    • 二、特点
    • 三、工作原理
    • 四、URL
      • 4.1定义
      • 4.2语法
    • 五、状态码
      • 5.1http常见状态码
      • 5.2状态码分类
      • 5.3常用端口号

一、概念

1.http(超文本传输协议)是一种用于从WWW服务器传输超文本到本地浏览器的传输协议
2.涉及两个对象:服务端和客户端
3.采用请求/应答方式:客户端请求服务,服务端为客户端提供服务,服务端随时准备被客户端请求。

传输流程

1、地址解析
如用客户端浏览器请求这个页面:http://localhost.com:8080/index.html从中分解出协议名、主机名、端口、对象路径等部分,对于我们的这个地址,解析得到的结果如下:
协议名:http
主机名:localhost.com
端口:8080
对象路径:/index.html
在这一步,需要域名系统DNS解析域名localhost.com得主机的ip地址。

2、封装HTTP请求数据包
把以上部分结合本机自己的信息,封装成一个HTTP请求数据包

3、封装成TCP包并建立连接
封装成TCP包,建立TCP连接(TCP的三次握手)

4、客户机发送请求命令
客户机发送请求命令:建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号、后边是MIME信息包括请求修饰符、客户机信息和内容。

5、服务器响应
服务器接到请求后,给予响应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

6、服务器关闭TCP连接
服务器关闭TCP连接:一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码Connection:keep-alive,TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

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文本解析并显示内容。

二、特点

1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GETPOST、HEAD。每种方法规定了客户与服务器联系的类型不同。
由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。一次请求,对应一次响应。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
注:参考百度

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)

三、工作原理

HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
HTTP默认端口号为80,但是你也可以改为8080或者其他端口
客户端请求消息:请求行、请求头部、空行和请求数据
服务器响应消息:状态行、消息报头、空行和响应正文

四、URL

4.1定义

URL(统一资源定位符)是 Internet 上标准资源的地址, 互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。

4.2语法

协议://用户:密码@子域名.域名.顶级域:端口号/目录/文件名.后缀?参数=值#标志

五、状态码

5.1http常见状态码

200:请求成功
301:资源(网页等)被永久转移到其它URL
404:请求的资源(网页等)不存在
500:内部服务器错误

5.2状态码分类

1xx 服务器收到请求,请求者需继续执行操作
2xx (成功)请求被正常处理
3xx (重定向)浏览器需要执行某些特殊的处理以正确处理请求
4xx 客户端错误
5xx 服务器错误

5.3常用端口号

服务端口
mysql3306
tomcat8080
sqlserver1433
http80
ftp21
ssh22
oracle1521

相关链接:
HTTP和HTTPS的主要区别(面试常考)——计算机网络

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568901.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AutoCAD2013 以上利用AccoreConsole+ c# NetApi Windows Froms 封装

1# 封装类 1 public static class CmdHelper2 {3 /// <summary>4 /// 调用AutoCAD 安装目录下的AccoreConsole.exe来实现批量处理图纸(Net Api dll)5 /// </summary>6 /// <param name"cmsStr">NetApi中注册…

广域网、局域网和城域网的理解

定义 局域网&#xff1a;Local Area Network&#xff1b;简称LAN&#xff0c;是一个可连接家庭、学校、企业等有限区域的计算机网络 城域网&#xff1a;Metropolitan Area Network&#xff1b;简称MAN&#xff0c;是一个城市范围内所建立的计算机通信网 广域网&#xff1a;Wid…

C# 的一些便捷用法

分割字符串 这样可以用一串字符串分割并且分为数组 string[] arr System.Text.RegularExpressions.Regex.Split(str, "\r\n"); dynamic 动态类型 List<dynamic> 可以自定义内容并绑定列 List<dynamic> dy new List<dynamic>(); dy.Add(new{Cus…

队列与栈结构的相同点与不同点

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xf…

SQL Server 输出 XML

一、概述 SELECT 查询将结果作为行集返回。在 SQL 查询中指定 FOR XML 子句&#xff0c;从而将该查询的正式结果作为 XML 来检索。FOR XML 子句可以用在顶级查询和子查询中。顶级 FOR XML 子句只能用在 SELECT 语句中。而在子查询中&#xff0c;FOR XML 可以用在 INSERT、UPDAT…

linux重定向输出命令

目录一、符号二、“>”举例2.1举例一2.2举例二三、“>>”举例3.1举例一3.2举例二https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#x…

python面向对象基础之类与实例

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xf…

微信小程序进度条

<button classdown-img bindtapdownImg data-scr{{imageUrl}}>下载图片{{progress}}</button> downImg: function (e) {var _this this;// 获取图片地址(http://www.playsort.cn/...)//var img e.currentTarget.dataset.src;//var img ../pic/U1513P28T52D3414F…

mysql10.3修改默认存储路径

版本为10.3的用该种方式修改&#xff1a; 创建/data/mysql目录 mkdir -p /data/mysql 给这个目录至少要附加读写权限 chmod 777 /data/mysql -r 把mariadb服务停掉 systemctl stop mariadb 把/var/lib/mysql整个目录复制到新路径下 cp -r /var/lib/mysql/* /data/mysql 编辑ma…

计算机硬件系统和软件系统

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xf…

修改mysql锁空间大小

A. 单次生效设置 进入mysql命令 mysql -uroot -p show variables like "%_buffer%";(不要忘记带;号&#xff0c;没有;号表示一条语句没有结束) 默认的innodb_buffer_pool_size8M tmp_table_size 4G max_heap_table_size 256M innodb_file_format Barracuda defa…

TypeError: ‘NoneType‘ object is not callable--python报错解决办法

报错为 翻译过来为&#xff1a;TypeError:“NoneType”对象不可调用 代码&#xff1a; def bibao_one():Jay "哎哟不错哦"def bibao_two():print(Jay)return bibao_two()#执行闭包 execute bibao_one()execute()我们在执行调用函数的时候&#xff0c;把括号去掉就…

洛谷 P2384 最短路题解

题目背景 狗哥做烂了最短路&#xff0c;突然机智的考了Bosh一道&#xff0c;没想到把Bosh考住了...你能帮Bosh解决吗&#xff1f; 他会给你100000000000000000000000000000000000%10金币w 题目描述 给定n个点的带权有向图&#xff0c;求从1到n的路径中边权之积最小的简单路径。…

IndentationError: expected an indented block --python报错 or IndentationError:unexpected indent

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xf…

python闭包与装饰器的代码解释

代码&#xff1a; https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c…

ssh 双机互信

ssh主机互信主机101.9.101.13cd /root/.ssh生成公钥私钥/usr/bin/ssh-keygen -t rsa公钥&#xff1a;id_rsa.pub 私钥&#xff1a;id_rsa把主机上生成的公钥发送给备机 用scp 不是默认端口 -P 指定端口scp -P 6802 ./id_rsa.pub root10.9.10.11:/root/.ssh/备机101.9.101.11cd …

软件测试管理工具禅道开源版下载安装

下载 下载地址&#xff1a;https://www.zentao.net/ 点击下图的开源版 根据自己的电脑配置选择相应的安装包&#xff0c;例如我的电脑是windows 64位的&#xff0c;下载中文版&#xff0c;就如下图了 安装 根据你的下载路径&#xff0c;找到并点击你下载的.exe文件&#…

关于ptype_all和pypte_base中的pt_prev的说明[转]

不知道原帖&#xff0c;我是从这里看到了&#xff0c;解决了迷惑我很久的疑问&#xff0c;抄过来。 看见noble_shi兄弟"关于net_rx_action函数的若干问题"贴中关于pt_prev的问题&#xff0c; 本来想在论坛上找到一个相关的帖子的链接告诉他。但是发现咱们论坛上关于p…

禅道的基本使用(创建项目、维护部门、用户、产品、提出需求、创建测试用例等)

禅道的基本使用一、创建项目二、创建维护部门三、添加用户四、创建产品五、提出需求六、创建测试用例禅道作为一个缺陷的管理工具&#xff0c;对于测试者来说其必不可少&#xff0c;下面将介绍禅道的基本使用 一、创建项目 登录禅道&#xff0c;点击项目&#xff0c;创建一个…

C# 延迟初始化 LazyT

概念&#xff1a;延时初始化重点是延时&#xff0c;用时加载&#xff0c;意思是对象在使用的时候创建而不是在实例化的的时候才创建。延时加载主要应用的场景&#xff1a;数据层&#xff08;ADO.NET或Entity Framework等ORM&#xff0c;Java里面的Hibernate也用到了这种技术&am…