《图解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协议

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状态码

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协议——《图解HTTP》相关推荐

  1. 如何通过抓包实战来学习Web协议?

    我发现大部分技术人,多多少少都会遇到下面的困惑,比如: AJAX 跨域访问时总被浏览器的同源策略阻止,其背后的原理及符合其设计思想的解决方案是什么? 缓存可以提升性能,但什么样的 HTTP 消息才会被 ...

  2. Java NIO学习笔记之图解ByteBuffer

    转载自 Java NIO学习笔记之图解ByteBuffer ByteBuffer前前后后看过好几次了,实际使用也用了一些,总觉得条理不够清晰. <程序员的思维修炼>一本书讲过,主动学习,要 ...

  3. 用进化的观点学习网络协议

    一般而言,我们比较习惯于用分层的观点来学习网络协议,这也是大学的教学方法.然而这种方式在前期如果有个地方理解不了只有死记硬背了.如果我们带着问题,并且试图去解决这些问题,最终恍然大悟,得到" ...

  4. 深入学习TCPIP协议

    下决心深入学习TCPIP协议 认真理解阅读<TCP-IP详解卷1 协议> 加油! 目      录 译者序 前言 第1章   概述 1 1.1   引言 1 1.2   分层 1 1.3 ...

  5. Regeorg 从python2改造为python3-从实战中学习socks5协议

    Regeorg 从python2改造为python3-从实战中学习socks5协议 问题描述 解决过程 环境准备 过程 这两天没啥工作,一般这时候我都不会发挥自己的主观能动性去主动找活,于是乎只能上网 ...

  6. 简单粗暴学习SPI 协议之CC2530

    简单粗暴学习SPI 协议之CC2530 一.定义 :SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总 ...

  7. 测试dali协议的软件,最新DALI协议图解

    <最新DALI协议图解>由会员分享,可在线阅读,更多相关<最新DALI协议图解(8页珍藏版)>请在人人文库网上搜索. 1.DALI协议图解 DALI 协议 D A L I 数字 ...

  8. USB学习2-USB协议层数据格式

    本片博客是基于对韦东山老师的USB相关学习视频.<USB2.0>.<MindShare USB 3.0 Technology>.<vdocuments.mx_univer ...

  9. 计算机常用端口和协议/图解TCP/IP

    计算机常用端口和协议/图解TCP/IP ISO国际标准化组织 OSI开放式通信系统互联参考模型 MAC地址:介质访问控制 media access control WWW:万维网 word wide ...

最新文章

  1. Qt DOM读写XML文件
  2. Codeforces Round #355 (Div. 2) D. Vanya and Treasure dp+分块
  3. 内外受阻,金融壹账通还能走多远?
  4. Intel Realsense D435 在windows系统下运行时请修改相机隐私设置以确保摄像头正常运行(没啥子用,还是掉线)
  5. linux--几种常见的进程调度算法
  6. java rhino 运行 js_Mozilla Rhino :如何从Java调用JS函数
  7. laravel 提交Request 请求后会莫名多出一个s参数,导致数据库报错问题的解决方法
  8. bzoj 4260 REBXOR —— Trie树
  9. 三:Java+SpringBoot框架使用(携带cookies信息访问的get接口开发)
  10. 抛出与抽象相对应的异常(61)
  11. 优秀的程序员都应当知道的11个警句
  12. resultMap和resultType的整体的区别和联系
  13. linux网卡取消混杂模式,Linux下网卡混杂模式设置和取消
  14. 【测试】ESP8266ESP32wifi中继器测试数据
  15. 消防信号总线原理_消防二总线的构成以及工作原理?
  16. [NSSCTF][羊城杯2020]WEB复现
  17. java compile_java中compile函数用法
  18. 好玩又有趣的Python实例小游戏代码,我能在电脑上琢磨一天
  19. VBA学习笔记3-数据结构类型SortedList
  20. 前端安装项目报错1.gyp info it worked if it ends with ok

热门文章

  1. 如何设计一个结构合理的java项目
  2. google/uuid
  3. 80年计算机专业硕士,多年多份多种多类的工作经验总结和分享,并提供技术咨询和培训、大学生志愿报考、专业学习及就业和面试指导
  4. 入选数据库顶会 VLDB:如何有效降低产品级内存数据库快照尾延迟?
  5. Tomcat配置图片保存路径
  6. C++中含有无符号类型的表达式——有符号数与无符号数相加
  7. item_sku-获取淘宝商品sku详细信息接口接入获取方案
  8. 计算机毕业设计谢辞怎么写,计算机论文致谢范文计算机专业本科毕业设计论文致谢写...
  9. 5.询问姓名及电话号码
  10. 二维码生成与解析代码实现