《图解HTTP》学习笔记一

注:1、本文为个人的读书笔记,难免会有误解之处,若有需要请购买《图解HTTP》进行学习。

TCP/IP的分层管理

TCP/IP协议族分为4层:应用层、传输层、网络层和数据链路层

分层设计的好处:
1、灵活、易修改:各层有变化时仅需要修改自身所在层即可,只要不涉及到层间接口的变化就不需要改变其他层
2、方便设计:各层只考虑自身层所在的设计因素即可不需要同时设计其他层

应用层:

应用层决定了向用户提供应用服务时通信的活动。

TCP/IP 协议族内预存了各类通用的应用服务。比如,FTP(File Transfer Protocol,文件传输协议)和 DNS(Domain Name System,域名系统)
服务就是其中两类。

HTTP 协议也处于该层。

传输层:

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

网络层(又名网络互连层):

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

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

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

示意图

在这里插入图片描述

HTTP报文的封装过程:
在这里插入图片描述

实际在传输的过程中,存在同一IP下有多个机器的情况,为了保证数据能正确的传输到指定机器,在IP层会将目标机器的MAC地址也一并进行封装再通过链路层找寻到对应IP下的某个机器。
而实际使用的过程中获取MAC地址需要依赖ARP协议,而从两台计算机间通信通常是要经过多个机器(或路由器)进行中转的,将较远的两点距离拆分成一小段一小段的距离则是中转的过程。
ARP协议的作用则是通过IP地址查询对应的MAC地址。
在这里插入图片描述

网络是如何确定数据已被受到的——TCP协议

TCP协议主要做两个工作:
1、将大数据量的数据切分成小数据量的报文段(segment)为单位的数据包,即字节流服务(Byte Stream Service)。
2、三次握手确保数据送达:
1)、第一次握手,用TCP协议将数据包发送出去后,TCP协议会同时向目标发送SYN(synchronize)数据,然后等待对方回应。
2)、对方在收到数据包及SYN后回传一个SYN/ACK 标志的数据包,表示数据已经收到。
3)、客户端在收到对方发回的SYN/ACK 数据包后,再次回复ACK数据包,表示情况确认 并停止握手。
在这里插入图片描述

www.csdn.net是如何变成ip地址的——DNS服务

首先:网络中机器间的通信是通过IP地址进行互通的,域名只是为了方便人的记忆,数据通信并不使用域名作为地址,所以在数据传输时就需要把域名转换为机器认识的IP地址。

DNS(Domain Name System)服务是和 HTTP 协议一样位于应用层的协议。它提供域名到 IP 地址之间的解析服务。
在这里插入图片描述

网络传输大致流程如下:
在这里插入图片描述

URI与URL

URI(Uniform Resource Identifier,统一资源标识符)
URL(Uniform Resource Locator,统一资源定位符)

URL即如 https://www.csdn.net/ 等域名定位标识
URL是URI的子集,URI包含多种形式,如:
在这里插入图片描述
URI与URL分为:涵盖全部必要信息的绝对 URI、绝对 URL 以及相对 URL。相对 URL
在这里插入图片描述

请求的格式

请求由客户端发起,服务器端在收到请求前不做回应。

下图是客户端向服务端发起请求(Request)的请求报文
在这里插入图片描述

下图是服务器端收到客户端的请求后,将请求的内容进行处理后以响应(Response)的形式进行返回
在这里插入图片描述

HTTP的状态补充—Cookie

HTTP 协议自身不具备保存之前发送过的请求或响应的功能,即无法实现如用户登录之后跳转其他页面也依然保存账户登录状态的功能,此时就有了保持状态的Cookie技术。

待续

HTTP的方法

GET:
向服务器发送请求并期待返回,若范围的资源是文本则保持原样,若请求的如CGI(Common Gateway Interface,通用网关接口)一样的程序则返回程序的执行结果。
在这里插入图片描述

POST:
与GET相似,但更倾向于向服务器发送实体数据。虽然GET也可以发送数据但一般不用GET去发送。
在这里插入图片描述

PUT:
用于向服务器传输文件,鉴于HTTP/1.1的PUT方法自身不带任何验证功能,所以在传送数据时存在风险。一般除使用REST标准或具有WEB程序验证机制的网站外,其他网站不开放PUT方法

在这里插入图片描述

HEAD:
类似于GET但不返回报文的body部分(即如HTML代码),仅返回报文的head,用于确认URI的有效性及资源更新的日期

DELETE:
类似于PUT方法,只不过PUT是像服务器传输文件而DELETE是向服务器发送请求,要求删除某文件。同PUT在HTTP/1.1中不带验证机制 所以一般的网站不开放此具有破坏性的功能。
在这里插入图片描述

OPTIONS:
用来查询指定URI所开放的方法,如 GET POST…
在这里插入图片描述

HTTP 1.0/1.1支持的方法
在这里插入图片描述

HTTP的好帮手 — Cookie

HTTP 是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。

Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。

Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。

服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

在这里插入图片描述
在这里插入图片描述

即:
1、Cookie是服务器端生成的;
2、Cookie在服务器端发送响应时才生成;
3、客户端在收到带有Cookie的Response后,根据Response的Set-Cookie的首部字段信息,保存Cookie;
4、获得服务器传回的Cookie之后的请求均会带有Cookie,以便告诉服务器连接者是谁,当前的状态是什么;

posted @ 2022-06-05 20:49  阿伦alun  阅读(29)  评论(0编辑  收藏  举报