HTTP协议请求分析OSI七层网络 TCP/IP协议

http协议

HTTP协议,即超文本传输协议(Hypertext transfer protocol)

当你输入一个URL的时候,你就会去这个URL域名对于的这条服务器上面下载一个页面

当我们打开一个浏览器访问网站的时候如百度:https://www.baidu.com

浏览器在帮你,去对应的连接上面下载一个文本(index.html)

URL

什么是URL:
# 统一资源定位符(唯一标识符,该标识符可通过Unicode编码转换)   协议 + 主机 + 端口 + 文件路径
https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3

https://www.baidu.com/s?  百度网址
wd=%E7%BE%8E%E5%A5%B3     需要查找的内容

URL的组成
协议+主机+端口+文件路径
http://www.biadu.com:90/epel/1.txt

http://   www.biadu.com:     90     /epe/1.txt
协议:      主机            端口    服务站点下的,目录和文件

HTTP工作原理

当在浏览器中输入一个http://www.123.com/index.html
1.先分析url中的域名是谁   :  www.driverzeng.com
2.请求DNS服务器做解析     : 10.0.0.41
    - 检查localDNS
    - 检查13个根域
    - 递归查询
    - 迭代查询

3.DNS把10.0.0.41 返回给浏览器
4.跟 10.0.0.41的80端口建立连接(建立TCP连接)
5.你好,我用的GET方法,你把index.html给我
6.10.0.0.41 把页面返回给浏览器
7.断开TCP连接
8.浏览器就能显示页面了


http请求页面分析

1.请求头:浏览器向服务器发送请求的内容

2.响应头:服务器向浏览器响应返回请求的内容

3.主体:内容(如请求的是一张图片,那么主体表示的就是一张图片)

页面分析(火狐浏览器)

# General(基本信息)
请求的URL
Request URL: https://123p2.sogoucdn.com/imgu/2020/05/20200511143510_190.jpg     
请求的方法
Request Method: GET                                                             
状态码   
Status Code: 200 OK                                                            
远程连接的地址:端口
Remote Address: 112.13.114.218:443                                              
推荐人的政策   
Referrer Policy: unsafe-url(不安全的URL)                                       

# 请求头部
## 请求的资源类型
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/\*=0.8,application/signed-exchange;v=b3
## 资源类型压缩
Accept-Encoding: gzip, deflate
## 资源类型的语言
Accept-Language: zh-CN,zh;q=0.9
## 缓存控制:服务端没有开启缓存
Cache-Control: no-cache
## 长连接
Connection: keep-alive
## 访问的主机:www.biadu.com
Host: www.biadu.com
##  项目缓存:没有开启
Pragma: no-cache
## 客户端优先加密
Upgrade-Insecure-Requests: 1
## 用户访问网站的客户端工具
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36


# 响应头部
# 建立长连接
Connection: keep-alive  
# 解析方式和字符集
Content-Type: text/html;charset=utf-8   
# 日期
Date: Wed, 13 May 2020 02:29:35 GMT 
#该网站服务器,使用的软件和版本号
server:Nginx/1.14.1     
# 状态码
status: 200 

HTTP请求方法

方法(Method) 含义
GET 请求读取一个Web页面(使用浏览器下载的一个文本文件也就是一个页面)
POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改
DELETE 删除Web页面
CONNECT HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
HEAD 类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
TRACE 回显服务器收到的请求,主要用于测试或诊断。
OPTION 允许客户端查看服务器的性能

HTTP响应方法

用以表示网页服务器超文本传输协议响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774 与 RFC 4918 等规范扩展。所有状态码的第一个数字代表了响应的五种状态之一。所示的消息短语是典型的,但是可以提供任何可读取的替代方案。 除非另有说明,状态码是HTTP / 1.1标准(RFC 7231)的一部分。

我们在使用浏览器打开网站的时候,如该连接未有登入过或者清理缓存,相对较慢。如该连接已登入过未有清除缓存的,那么登入的速度会相对比较快些

Referer

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。

.com 商业机构,任何人都可以注册
.edu 教育机构
.gov 政府部门
.int 国家组织
.mil 美国军事部门
.net 网络组织,例如因特网服务商和维修商,现在任何人都可以注册
.org 非盈利组织,任何人都可以注册
.biz 商业
.info 网络信息服务组织
.pro 用于会计、律师和医生
.name 用于个人
.muserm 用于博物馆
.coop 用于商业综合体
.arero 用于航空工业
.xxx 用于成人,色情网站
.idv 用于个人

详细的http原理

用输入域名 - > 浏览器跳转 - > 浏览器缓存 - > Hosts文件 - > DNS解析(递归查询|迭代查询)

1.用输入域名 
    客户端向服务端发起查询 - > 递归查询
    服务端向服务端发起查询 - > 迭代查询
2.由浏览器向服务器发起TCP连接(三次握手)
    客户端     -->请求包连接 -syn=1 seq=x           服务端
    服务端     -->响应客户端syn=1 ack=x+1 seq=y     客户端
    客户端     -->建立连接 ack=y+1 seq=x+1          服务端
3.客户端发起http请求:
    1)请求的方法是什么:     GET获取
    2)请求的Host主机是:     blog.driverzeng.com
    3)请求的资源是什么:     /index.html
    4)请求的端端口是什么:    默认http是80 https是443
    5)请求携带的参数是什么:   属性(请求类型、压缩、认证、浏览器信息、等等)
    6)请求最后的空行
4.服务端响应的内容是
    1)服务端响应使用WEB服务软件
    2)服务端响应请求文件类型
    3)服务端响应请求的文件是否进行压缩
    4)服务端响应请求的主机是否进行长连接
5.客户端向服务端发起TCP断开(四次挥手)
    客户端     --> 断开请求 fin=1 seq=x          -->    服务端
    服务端     --> 响应断开 fin=1 ack=x+1 seq=y  -->    客户端
    服务端     --> 断开连接 fin=1 ack=x+1 seq=z  -->    客户端
    客户端     --> 确认断开 fin=1 ack=x+1 seq=sj -->    服务端

网络协议

OSI七层模型

OSI七层协议

ip+mac可以标识全世界范围内独一无二的一台计算机的位置

port可以标识一台计算机之上唯一的一个基于网络通信的应用软件

ip+mac+port:可以标识全世界范围内独一无二的一个应用软件(基于网络通信)

物理层

物理层主要是一些硬件,为计算机的最基础层

数据链路层

以太网协议

ethernet规定:

1.必须要有一块网卡,每块网卡的每个RJ45接口都需要有一个全世界独一无二的MAC地址

#什么是MAC地址
没一块网卡的每个RJ45口在一出厂的时候就会有一个MAC地址,也就是每个网卡的身份证号码

#作用
局域网络通信:在一个空间内的网络,如一个学校的每个班级,每个班级的网段不同,一个班级就是一个局域网络。

2.一组电信号构成一组数据包,叫做‘帧’,

#数据包
我们在上网的时候请求或者下载东西,都是通过网络来传输的。
#电信号
我们在使用电的时候会产生+ -级,也就是0和1

#所有我们的数据都是通过0和1的二进制进行传输的,(一组数据包就是由0和1组成的)一组数据包叫做帧

3.每一个数据帧,被分为报头(网络中交换和传输数据的帧源),请求头又可以叫做请求报文

报头:head 数据:data

#head包含:固定的18个字节
发送者/原来地址:6个字节
接受者/目标地址:6个字节
数据类型:6个字节

#data包含:(最短46字节,最长1500个字节)
数据包的具体字节
head+data=最短64个字节,最长1518字节

计算机通信,基本靠吼

广播:广播风暴是一种故障

网络层

为了解决广播风暴,形成一个局域网络。把所有的计算机通过一个局域网隔绝开来

IP

是由四段十进制的数字组成,每一段的范围是0-255,点分十进制

如:192.168.1.12,以点来区分开来10进制

子网掩码

一般常见的是:255.255.255.0

IP和子网掩码可以计算出来IP的概念

计算方式
#IP:192.168.1.12      netmask:255.255.255.0
ipaddress:11000000.10101000.00000001.00001100

netmask:  11111111.11111111.11111111.00000000

计算结果:  11000000.10101000.00000001.00000000

#网段:192.168.1.0

#注意:如果只有IP提供没有子网掩码提供是无法计算出来IP的

AND运算

AND在编程术语中表示一种运算方法,不可逆

常用符号:&(按位与),&&(逻辑与)

其运算规则如下:

1&1=1; 真&&真=真;

1&0=0; 真&&假=假;

0&1=0; 假&&真=假;

0&0=0; 假&&假=假;

即与0则0,常用此特性来将某些位置0或保存某些位。

如汇编语句:AND EAX,80000007,其位31、2、1、0不变,其余位置0。

ip数据包

ip数据包也分为head和data部分,无须为ip包定义单独的栏位,直接放入以太网包的data部分

head:长度为20到60字节

data:最长为65,515字节。

而以太网数据包的”数据”部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送了。

下图是一个传输的过程

# ARP协议(Address Resolution Protocol)

arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我门了解到

通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议

arp协议功能:广播的方式发送数据包,获取目标主机的mac地址

#IP是需要和MAC地址绑定在一起的

# ARP协议(Address Resolution Protocol)

arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我门了解到

通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议

arp协议功能:广播的方式发送数据包,获取目标主机的mac地址

#IP是需要和MAC地址绑定在一起的

可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

TCP/IP协议

客户端和服务器建立连接的过程(3次握手)

1.客户端向服务端发送syn

2.服务端收到后返回ACK(客户端建立连接)但是服务端不确定客户端是否收到,所有向服务端发送一个syn向客户端确认是否有收到了吗?

3.客户端确认收到后给服务端确认返回了ACK(服务端建立连接)

建立连接完成后开始数据传输(数据传输的过程)

4次挥手

1.客户端向服务端发送断开连接fin

2.服务端收到后返回ACK

3.服务端同时发送一个是否要端口连接

4.客户端给服务端确认返回了ACK

服务端和客户端就开始断开连接

TCP协议的11种状态

三次握手中:
1.SYN_SENT
2.LISTEN
3.SYN_REVD(syn洪水攻击)****半连接池
4.ESTABLISHED

四次挥手中:
1.FIN_WAIT_1
2.CLOSE_WAIT
3.FIN_WAIT_2
4.LAST_ACK
5.TIME_WAIT(TIME_WAIT多,证明服务器上有大并发)

关闭状态:
1.CLOSED(被动关闭端在接收到ack包后,进入CLOSED状态关闭TCP连接)
2.CLOSING(客户端和服务端同时发起断开连接)

总结

在浏览器中输入一个域名

1.浏览器找DNS(递归查询,迭代查询,本地LOCKDNS)最终需要给浏览器返回一个IP

2.我们用的是HTTP协议端口:80

3.浏览器会通过‘IP+端口’就可以确定我们需要找的主机

4.浏览器就会吼一下我需要找这台机器

5.报头就会传输数据,就会报这个数据拆开确认是哪台机器,确认机器吼返回MAC地址

6.带着IP+端口+MAC建立tcp连接

7.客户端给服务器发送一个syn

7.1.客户端向服务端发送syn

7.2.服务端收到后返回ACK(客户端建立连接)但是服务端不确定客户端是否收到,所有向服务端
送一个syn向客户端确认是否有收到了吗?

7.3.客户端确认收到后给服务端确认返回了ACK(服务端建立连接)
Copyright © 2009 - Now . XPBag.com . All rights Reserved.
夜心的小站 » HTTP协议请求分析OSI七层网络 TCP/IP协议

提供最优质的资源集合

立即查看 了解详情