常见私有IP段:10.0.0.0 ~10.255.255.255

00001010.00000000.00000000.00000000~000001010.11111111.11111111.11111111

​ 172.16.0.0~172.31.255.255

11000000.00010000.00000000.00000000~11000000.00100000.11111111.11111111

​ 192.168.0.0~192.168.255.255

11000000.10101000.00000000.00000000~11000000.101010000.11111111.11111111

网络协议分层

应用层

提供应用功能;包含c/s p2p模型;

常见的有http,smtp(TCP协议 25端口),ftp(文件传输协议 21)dns协议

传输层

有两个传输协议:

  1. TCP:大部分应用使用的是TCP传输层协议,有流量控制、超时重传、拥塞控制。保证数据包可靠的传输给对方。
  2. UDP:相对简单,只负责发生数据包,不保证数据包是否抵达对方,实时性更好,传输效率也高。在应用层实现TCP的特性也可以实现可靠传输。

网络层

TCP/IP协议:寻址,路由。

ip地址:网络号(标识ip地址是哪一个子网的),主机号(标识同一个子网的不同主机)

数据链路层

网卡->MAC;(ARP协议)

物理层

二进制信息传输;数据包转为电信号,让其可以在物理介质中传输。这一层就是物理层。

IP协议

网关:默认寻找IP。

路由表:寻找目标;
可用命令:

1
route print

IP和MAC的关系:MAC实现直连的两个设备之间通信,IP则负责在没有直连的两个网络之间进行通信传输;

源MAC地址和目标MAC地址一直在变化。源ip和目的ip不会变化。

2^32=4294967269

A类地址:0 0.0.0.0 ~127.255.255.255 1677w7214 2^24-1

B类地址:10 128.0.0.0 ~191.255.255.255 6w5534 2^16-1

C类地址:110 129.0.0.0~223.255.255.255 254 2^8-1

d类地址:1110 224.0.0.0~239.255.255.255 组播地址:用于多播:多播用于将包发送给特定组内的所有主机

[!NOTE]

  • 224.0.0.0 ~ 224.0.0.255 为预留的组播地址,只能局域网中,路由器是不会进行转发的
  • 224.0.1.0 ~ 238.255.255.255 为用户可用的组播地址,可以用于 Internet 上
  • 239.0.0.0 ~ 239.255.255.255 为本地管理组播地址,可供内部网在内部使用,仅在特定的本地范围内有效

e类地址:11110 240.0.0.0~255.255.255 留待用处

CIDR:无分类地址。前面是网络号,后面是主机号 加上/x

子网掩码与IP地址按位计算&,可得到网络号

子网掩码还有一个作用,那就是划分子网

子网划分实际上是将主机地址分为两个部分:子网网络地址和子网主机地址

napt协议:ip地址加上端口。

[!TIP]

私有 IP 地址通常是内部的 IT 人员值管理,公有 IP 地址是由 ICANN 组织管理,中文叫「互联网名称与数字地址分配机构」。

主机号全0为网络地址,全1为广播地址(用于同一链路相互连接的主机之间发送数据包)本地广播会被接受,不同网络的直接广播默认不会设置转发。

IP协议

DNS协议:域名解析协议;将网站自动转为ip

域名存在三个层级:根dns服务器(保存在所有互联网的dns服务器中);顶级域dns服务器(com,cn);权威dns服务器

为了方便记忆而诞生的域名解析协议:过程如下。

  1. 查看DNS缓存 浏览器缓存->操作系统缓存->host缓存; 没有转2
  2. 发出DNS请求,询问冰发给本地DNS服务器
  3. 本地DNS服务器查找缓存 没有转3
  4. 寻找根域名服务器->给与顶级域名服务器地址
  5. 本地dns询问顶级域名服务器
  6. 本地询问询问权威DNS服务器
  7. 权威dns服务器将对应的ip地址告诉本地
  8. 本地dns返回ip地址给客户端,建立连接

ARP与RARP协议:

解析IP所在的MAC地址;主机通过广播发送ARP请求,包含想要知道的MAC地址的主机IP地址。同一链路的所有设备收到ARP请求时,如果拆开ARP请求包中的内容,目标IP和自己的IP一致,该设备就将自己的MAC地址塞入ARP响应包返回给主机。操作系统会缓存ARP获得的MAC地址;超过一定期限,,缓存内容被清除

解析MAC地址的IP(需要架设以太RAPR服务器,在该服务器上注册设备的MAC地址和IP地址,设备会发送自己的MAC地址,RARP收到该消息会返回MAC地址为xxx的IP地址为xxx);

DHCP协议:

动态获取IP协议;

  1. 客户端发起 ==DHCP发现报文(DHCP DISCOVER)== 的 IP数据包,没有ip地址,不知道dhcp服务器的地址,使用UDP广播通信,目的地址255.255.255.255(端口:67)使用0.0.0.0(68端口)作为源IP地址;dhcp客户端将该IP数据传给链路层,然后将帧广播到所有网络设备中。

  2. dhcp服务器收到 DHCP 发现报文后,用==DHCP提供报文(DHCP OFFER)==向客户端做出响应。任然使用IP广播地址255.255.255.255,该报文信息携带服务器可租约的IP地址,子网掩码,默认网关,dns服务器以及ip地址租用期。

  3. 客户收到一个或多个服务器的DHCP提供报文后,选择一个服务器,发送==FHCP请求报文(DHCP REQUEST)==进行响应,回显配置的参数

  4. 服务端最后用==DHCP ACK报文==对DHCP请求报文进行响应。

    全程使用udp广播通信。不在同一个局域网的话,DHCP中继代理,对不同网段的IP地址分配可以由一个DHCP服务器进行统一管理。

NAT:

网络地址转换协议;进阶NAPT;ip地址+端口号;可以将私有地址转为公有地址,以不同的端口号进行区分。

ICMP协议:

互联网控制报文。

主要功能:确认IP是否成功送达目标地址,报告发送过程中被废弃的原因和改善网络设置等等。

1.查询报文类型

1
2
0	回送应答
8 回送请求

2.差错报文

1
2
3
4
3	目标不可达
4 源点抑制
5 重定向或改变路由
11 超时

HTTP介绍:

http是超文本传输协议;Hypertext TransferProtocol

分为三个部分:超文本;传输;协议;

协议:

http是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流的规范,以及相关的各种控制和错误处理方式。

传输:

数据利用http协议进行传输,由浏览器进行渲染,就可以看见图片,视频。

超文本:

http传输的内容就是超文本。

总结:HTTP是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。

URL:

统一资源定位符;具有标准的语法;其中https端口会默认省略是443;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
protocol://[[user[:password]@]host[:port]][/path][?query][#fragment]

[协议名]://[用户名]:[密码]@[主机名]:[端口]/[路径]?[查询参数]#[片段ID]
protocol:指定使用的传输协议,最常用的是通过 HTTP/HTTPS 协议来定位网络资源。
mailto: 用户打开邮箱的客户端
ftp: 用来做文件的转换
file: 用来获取文件
user:password 需要认证后才能访问时的账号密码。
host:表示合法的因特网主机域名或者IP地址。
port:用于表示在传输层上交换信息的进程端口号,标明了获取服务器资源的入口,
http协议默认端口号为80,不同的协议默认端口号不同。
path:指定请求服务器上资源的路径。
?query:可选,用于给动态网页传递参数,可以有多个参数,用"&"符号隔开,每个参数的键值之间用"="隔开。
#fragment:信息片断字符串,用于指定网络资源中的片断。例如一个网页中有多个名词解释,可使用fragment直接定位到某一名词解释。
例:
https://en.wikipedia.org:443/wiki/Hypertext_Transfer_Protocol?id=123#HTTP/1.1_response_messages

image-20240522133715771

URI:

统一资源标识符;用来标识抽象字符或物理资源的一个紧凑字符串。

http使用统一资源标识符URI 来传输数据和建立连接

同样差不多的是URN,统一资源名称,通过特定命名空间中的唯一名称或id来标识资源

Request:

包含四个部分:请求行;请求头部;空行;请求正文;每部分使用\r\n(CRLF //回车符,换行符)分隔开

请求行

1
2
3
4
5
6
Method Request-URI HTTP-Version CRLF

Method:表示请求方法;
Request-URI:是一个统一资源标识符;
HTTP-Version:表示请求的HTTP协议版本;
CRLF:表示回车和换行

请求方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
GET 请求获取Request-URI所标识的资源

POST 在Request-URI所标识的资源后附加新的数据
#get post是最常见的请求;
HEAD 请求获取由Request-URI所标识的资源的响应消息报头

PUT 请求服务器存储一个资源,并用Request-URI作为其标识

DELETE 请求服务器删除Request-URI所标识的资源
#put,delete只要存在就可能出问题;可能存在任意文件上传,删除
TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断

OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

CONNECT 保留将来使用,HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

PATCH 用于将局部修改应用到资源。(由 RFC 5789 指定的方法)

请求头部字段

1
2
3
#查看所有的的
https://tools.jb51.net/table/http_content_type
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers

常见字段:

image-20240522134529886

1)Host:

1
2
3
Host: www.A.com
指定服务器的域名
#host碰撞漏洞

2)Content-Length

1
2
3
Content-Length: 1000
表明本次回应的数据长度
#不存在漏洞

3)Connection

1
2
3
4
Connection: keep-alive
常用于客户端要求服务器使用TCP持久连接,以便其它请求复用
https默认持久连接,为了兼容老版本,需要指定首部为keep-Alive
Connection: keep-alive

4)Content-Type

1
2
3
4
用于服务器回应时;告诉客户端,本次数据格式
Content-Type: text/html; charset=utf-8
客户端请求时;可以使用Accept声明接受那些数据格式
Accept: */*

5)Content-Encodeing

1
2
3
4
说明数据的压缩方法,表明服务器返回数据使用了什么压缩格式
Content-Encoding: gzip
客户端请求时;可以使用Accept-Encoding声明接受那些数据格式
Accept-Encoding: gzip, deflate

6)Origin

1
2
指名当前请求来自哪个站点
存在csrf漏洞

7)Referer

1
先前网站的地址;当前请求网页紧跟其后

空行

表示请求头结束,请求正文开始

请求正文

get方法提交数据时,数据参数会作为url的一部分,放在文件路径后面发送给服务器,称为查询字符串

Responce:

包含四个部分:状态行;消息报头;空行;响应正文;

状态行

1
2
3
4
5
HTTP-Version Status-Code Reason-Phrase CRLF

HTTP-Version:表示服务器HTTP协议的版本;
Status-Code:表示服务器发回的响应状态代码;
Reason-Phrase:表示状态代码的文本描述。

包含五大状态码:

1xx:基本看不见。协议处理的中间状态

2xx:成功处理了客户端的请求

3xx:重定向 301;永久重定向 302;临时重定向 304;不具有跳转的含义;读取浏览器缓存

4xx:客户端发送的报文有误;403:禁止访问 404:访问不存在

5xx:服务器错误

响应头部字段

image-20240522162932923

空行

表示响应头结束,响应正文开始

响应正文

服务器返回的资源内容

[!NOTE]

http和https区别:

https加入了ssl/tls安全协议,报文能够加密传输

http连接建立相对简单,

端口号不同80 、443

https需要向ca(证书权威机构)申请数字证书