网络协议分析3 -- HTTP

在浏览器输入URL,回车以后发生了什么?
第一,找到服务器
  • 通过DNS域名解析找到IP:先到浏览器DNS缓存中查找 --> 再到本地host文件中查找 --> 都没有的话,就会发给DNS服务器来查找 ( DNS服务器有递归、迭代两种方式去找 )

  • IP的通信又要依赖MAC:IP需要通过ARP表查找MAC地址

第二,建立TCP连接
  • 三次握手
第三,建立HTTP连接
  • 服务器接收HTTP请求,处理后把资源返回给浏览器
  • 浏览器拿到资源后,内核和JS引擎就会解析和渲染这个页面
第四,断开TCP连接
  • 四次挥手 ( 由于是TCP连接是全双工 )

客户端和服务器端的通信遵守了HTTP协议,自然需要封装HTTP报文:
HTTP请求报文:
  • 报文首部:请求行、请求头
  • 报文主体:请求体

在这里插入图片描述

请求行:方法(GET/POST/…) 、URL、版本(1.1/…)
HTTP协议的请求方法有:

GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT

请求头:如下
常见的请求头字段解释
Accept可接受的响应内容类型(Content-Types)
Origin发起一个针对跨域资源共享的请求
Host客户端的主机、端口号
User-agent客户端程序
ConnectionTCP连接持久或非持久
Accept客户端能接受的媒体格式
Accept-Encoding可接受的响应内容的编码方式
Accept-Language客户端能处理的编码方案
Cookie把该Cookie发给服务器
Cache-Control缓存机制(是否可缓存这个对象及缓存有效时间)
Content-Length请求体的长度
Content-Type请求体的MIME类型
Date发送该消息的日期和时间
User-Agent浏览器的身份标识字符串

HTTP响应报文:
  • 报文首部:响应行、响应头
  • 报文主体:响应体
    在这里插入图片描述
响应行:版本(1.1/…)、状态(200/…)、短语(OK/…)
HTTP响应状态码:

1XX信息提示。表示请求已被服务器接受,但需要继续处理,范围为100~101
2XX请求成功。范围为200~206
3XX客户端重定向。重定向状态码用于告诉客户端浏览器,它们访问的资源已被移动,并告诉客户端新的资源位置。客户端收到重定向会重新对新资源发起请求。范围为300~305
4XX客户端信息错误。客户端可能发送了服务器无法处理的东西,比如请求的格式错误,或者请求了一个不存在的资源。范围为400~415
5XX服务器出错。客户端发送了有效的请求,但是服务器自身出现错误,比如Web程序运行出错。范围是500~505

常见的状态码:

200客户端请求成功
204:请求成功,到找不到资源
206:只请求一部分资源,请求成功
301:永久重定向
302:临时重定向
303:重定向,并要求改用GET
304服务器上资源没有改动,告诉你不必再请求
307:同302,但禁止POST改为GET
400:请求语法错误,服务器无法理解
404请求资源不存在
403:服务器拒绝提供服务
500服务器内部错误
503:服务器当前不能处理客户端请求,可能需要一段时间后才能恢复正常
响应头:如下

常见的响应头解释
Access-Control-Allow-Origin指定哪些网站可以跨域源资源共享
Allow对于特定资源的有效动作(GET, HEAD…)
Server服务器相关内容
Content-Type请求体的MIME类型
Content-Language语言
Content-Length文档长度
Content-Encoding编码类型
Set-Cookie设置HTTP cookie
Cache-Control缓存机制(是否可缓存这个对象及缓存有效时间)
Date此条消息被发送时的日期和时间
Age响应对象在代理缓存中存在的时间
Refresh用于重定向,或者当一个新的资源被创建时。默认会在5秒后刷新重定向
Status当前HTTP连接的响应状态
Connection针对该连接所预期的选项

代理:

原封不动地将请求/响应进行转发


HTTPS协议和HTTP协议的区别:

1.http是超文本传输协议,信息是明文传输,https 则是具有安全性的 ssl 加密传输协议。
2.http的连接很简单,是无状态的;而https由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议, 要比http协议安全
2.http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443
3.在 OSI 网络模型中,http 工作于应用层,而https 工作在传输层

HTTPS的工作原理:

HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL中使用了非对称加密,对称加密以及HASH算法

1.浏览器将自己支持的一套加密规则发送给网站。
2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息。
3.浏览器获得网站证书之后浏览器要做以下工作:
a) 验证证书的合法性
b) 如果证书受信任,或者是用户接受了不受信的证书,浏览器会生成一串随机数的密码,并用证书中提供的公钥加密。
c) 使用约定好的HASH算法计算握手消息,并使用生成的随机数对消息进行加密,最后将之前生成的所有信息发送给网站。
4.网站接收浏览器发来的数据之后要做以下的操作:
a) 使用自己的私钥将信息解密取出密码,使用密码解密浏览器发来的握手消息,并验证HASH是否与浏览器发来的一致。
b) 使用密码加密一段握手消息,发送给浏览器。
5.浏览器解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。

Cookie技术的组成:

(1)在Web服务器端有一个cookie数据库
(2)在HTTP响应报文中有一个Set-Cookie字段
(3)在HTTP请求报文中有一个Cookie字段
(4)在客户端中保存一个cookie文件

HTTP使用 Cookie ,允许Web站点跟踪用户。
在这里插入图片描述
举栗子:,
①客户端第一次访问一个网站,该网站将产生一个唯一标识码,保存在cookie数据库中;
②后台服务器用一个包含Set-Cookie的HTTP响应报文给客户端浏览器;
③客户端浏览器在自己的Cookie文件中添加一行;
④客户端继续浏览网站时,每请求一个Web页面,都会从cookie文件中获取网站的识别码,放到HTTP请求报文头部的Cookie字段里,带着去访问页面;
⑤后台服务器可根据该识别码跟踪客户在该站点的活动。

查看本机中的Cookie文件:

C:\Documents and Settings\ Administrator \ Local Settings \Temporary Internet Files

设置本机浏览器接受Cookie的条件:

浏览器/工具/Internet选项/隐私/


URI和URL

URI:统一资源标识符 (用字符串标识网络中某一资源)
URL:统一资源定位符(资源的地点)
URL是 URI 的子集。

(1) HTTP超文本传输协议用于定义web页面(超文本)在网络上的交互方式的应用层协议,使用客户/服务器的工作方式。HTTP协议定义了web客户端(浏览器)如何向web站点请求web网页以及web服务器如何将web页传送给客户机。当用户请求一个页面时,浏览器会向web服务器发出对该页及其引用的相关对象的HTTP请求报文,服务器响应这些请求报文,生成HTTP响应报文,并将请求的对象附在HTTP响应报文后发送给客户端。 (2) 由于网页文档的传输需要可靠性的保证,所以HTTP协议使用TCP协议,TCP协议是一个面向连接的协议,在通信时需要建立连接,通信结束要释放连接,TCP建立连接时需要三次握手,提供可靠的数据传输,HTTP协议默认端口为80. (3) HTTP协议包括HTTP1.0:RFC1945和HTTP1.1:RFC 2068.HTTP1.1兼容HTTP1.0。HTTP1.0是采用非持续连接和非流水线作业方式,而HTTP1.1采用持续连接和流水线作业方式。 (4) Web缓存的进一步讨论,保证web缓存代理服务器缓存页面能够和web服务器的最新页面一致的方法。 (5) HTTP协议的无状态性:服务器无法通过HTTP协议记录用户的登录信息。使用Cookie保存信息。 (1) 打开wireshark开始抓包,然后上网至江西师大教务在线网(www.jxnu.edu.cn),连接后停止(stop)抓包。设置过滤规则:udp.port==53||tcp.port==80.(HTTP协议默认使用传输层TCP协议的80端口),考虑到我的电脑未能连网,所以选择老师抓好的包做实验分析。 (2) 分析HTTP协议报文。 (2) 第一阶段:TCP建立连接阶段。第三帧是web客户端(即浏览器,源IP地址为192.168.0.250)发给web服务器端(目标IP地址为218.65.113.46)的TCP连接的第一次握手(SYN)。第四帧是web服务器端与web客户端的TCP连接的第二次握手(SYN,ACK)。第五帧是浏览器与web服务器的TCP连接的第三次握手(ACK),此时TCP连接建立。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值