学习HTTP协议——《图解HTTP》

news/2024/5/17 18:00:25 标签: HTTP, tcp, ip

HTTPHTTP_0">《图解HTTP》——学习HTTP

    看过很多的关于http的博客,但还是有些模糊,偶尔看到《图解HTTP》这本书,终于有了清晰的认识,PS:文末附电子书下载链接

——以下内容来自于对书中的梳理和总结——

一、网络基础TCP/IP

TCP/ IP 是在 IP 协议的通信过程中,使用到的协议族的统称。
协议——不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。

TCP/IP 协议族按层次分别分为以下 4 层:
应用层、传输层、网络层和数据链路层。

TCP/IP 协议族各层的作用如下。

1、应用层

应用层决定了向用户提供应用服务时通信的活动。TCP/IP 协议族内预存了各类通用的应用服务。比如,FTP(File TransferProtocol,文件传输协议)和 DNS(Domain Name System,域名系统)服务就是其中两类。HTTP 协议也处于该层。

2、传输层

传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Data Protocol,用户数据报协议)。

3、网络层(又名网络互连层)

网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起
的作用就是在众多的选项内选择一条传输路线。

4、链路层(又名数据链路层,网络接口层)

用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。

    利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往应用层往上走。发送端与接收端之间每次都会经过添加首部和消去首部的过程
在这里插入图片描述
    为了准确无误地将数据送达目标处,TCP 协议采用了三次握手(threeway handshaking)策略。用 TCP 协议把数据包送出去后,TCP 不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了 TCP 的标志(flag) —— SYN(synchronize) 和ACK(acknowledgement)。
在这里插入图片描述
    IP(Internet Protocol)网际协议位于网络层。Internet Protocol这个名称可能听起来有点夸张,但事实正是如此,因为几乎所有使用网络的系统都会用到 IP 协议。TCP/IP 协议族中的 IP 指的就是网际协议,协议名称中占据了一半位置,其重要性可见一斑。可能有人会把“IP”和“IP 地址”搞混,“IP”其实是一种协议的名称。

——IP 协议的作用是把各种数据包传送给对方。而要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是 IP 地址和 MAC 地址(Media Access Control Address)。

——IP 地址指明了节点被分配到的地址,MAC 地址是指网卡所属的固定地址。IP 地址可以和 MAC 地址进行配对。IP 地址可变换,但 MAC 地址基本上不会更改.
在这里插入图片描述
DNS 协议提供通过域名查找 IP 地址,或逆向从 IP 地址反查域名的服务。
在这里插入图片描述

用一张图,将所有相关协议和http协议联系起来
                    在这里插入图片描述

HTTP_48">二、HTTP协议

    HTTP 协议规定,请求从客户端发出,最后服务器端响应该请求并返回。
在这里插入图片描述

在这里插入图片描述
    接收到请求的服务器,会将请求内容的处理结果以响应的形式返回。
在这里插入图片描述
    HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。由此Cookie就出现了Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。

    Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。
在这里插入图片描述
    用于 HTTP 协议交互的信息被称为 HTTP 报文。请求端(客户端)的HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应报文。
在这里插入图片描述
    下图是请求报文和响应报文
在这里插入图片描述
——请求行
包含用于请求的方法,请求 URI 和 HTTP 版本。
——状态行
包含表明响应结果的状态码,原因短语和 HTTP 版本。
——首部字段
包含表示请求和响应的各种条件和属性的各类首部。一般有 4 种首部,分别是:通用首部、请求首部、响应首部和实体首部。
—1>通用首部字段(General Header Fields)请求报文和响应报文两方都会使用的首部。
—2>请求首部字段(Request Header Fields)从客户端向服务器端发送请求报文时使用的首部。补充了请求的附加内容、客户端信息、响应内容相关优先级等信息。
—3>响应首部字段(Response Header Fields)从服务器端向客户端返回响应报文时使用的首部。补充了响应的附加内容,也会要求客户端附加额外的内容信息。
—4>实体首部字段(Entity Header Fields)针对请求报文和响应报文的实体部分使用的首部。补充了资源内容更新时间等与实体有关的信息
——其他
可能包含 HTTP 的 RFC 里未定义的首部(Cookie 等)

HTTP_75">三、HTTP状态码

    HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。
http协议响应码:

1xx:信息响应类,表示接收到请求并且继续处理

2xx:处理成功响应类,表示动作被成功接收、理解和接受。(如200,请求成功)

3xx:重定向响应类,为了完成指定动作,必须接受进一步处理

4xx:客户端错误,客户请求包含语法错误或者是不能正确执行(如404,请求资源不存在)

5xx:服务器错误,服务器不能正确执行一个正确的请求(如500,检查URL地址是否正确)

——《图解HTTP》链接
https://pan.baidu.com/s/12SXWNmFzr2PVzY7OUYJn0g

参考:
1、《图解HTTP
2、慕课网课程——《JMeter之HTTP协议接口性能测试》


http://www.niftyadmin.cn/n/781382.html

相关文章

selenium 鼠标和键盘事件的操作

seleniumpython 鼠标和键盘的操作 1、鼠标事件操作 perform():执行所有ActionChains存储的行为 context_click():右击 double_click():双击 drag_and_drop():拖动 move_to_element():悬停 from selenium import web…

python (describe())_python爬虫如何爬取各大招聘网站?看完本文你就会了

拉勾网爬虫笔记——selenium爬取拉勾网职位信息初步爬虫框架构造第一页职位信息爬取第二页等页面的职位信息爬取爬取数据的保存细节处理爬取过程中出现需要登录的处理爬取过程中网页崩溃的处理文末有源码以及最新python下载地址在拉勾网的爬虫过程中,由于反爬虫机制…

内外网互通项目测试

内外网互通项目测试 一、相关基础了解 内外网互通方式 参考文章: https://blog.csdn.net/climber1977/article/details/77670639 一般通过前置机来实现 前置机的作用 参考文章: https://blog.csdn.net/zhongguomao/article/details/52798443 二、各种相关的文档 我们接触…

python语句分号_Python 为什么不用分号作终止符?

一般而言,编程语言中使用分号“;”来实现两种目的:作为语句分隔符:使用分号来分隔语句(statement),这样就能在一行代码中书写多条语句(一行多句) 作为语句终止符:使用分号…

python最基本的两种循环结构_Python语言基础03-分支和循环结构

1.分支结构 1.1应用场景 迄今为止,我们写的Python代码都是一条一条语句顺序执行,这种代码结构通常称之为顺序结构。然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的通关条件是玩家获得1000分&#xff0c…

兼容性测试,电脑的显示器分辨率大全

测试电脑的显示分辨率整理 测试的电脑分辨率,其实最好是用显示屏来测试,当测试环境有限的情况下,就只能修改电脑的分别率。 注:修改电脑的分辨率跟实际显示屏有一些小差别 5:4屏对应分辨率有(800640、12801024、…)   4:3屏对应…

lstm不收敛_时空序列预测模型GAN+LSTM

一、AddressICC 2019的一篇paper,为清华团队所写思路很有趣,也很容易想到,就是用比较火的GAN加上LSTMSatellite Image Prediction Relying on GAN and LSTM Neural Networks二、Introduction and Model2.1 主要创新点2.2 主要任务本质上是时空…

测试工程师常用linux命令—查看版本、磁盘大小、内存、文件及软件的安装

详细学习——推荐菜鸟教程 查询linux命令——Linux命令大全 1、查看版本 1>查看linux版本: cat /proc/version2>查看linux内核版本: lsb_release -a 3>查看安装的软件及版本 dpkg -l | grep 软件名关键字2、查看磁盘: df –m/…