七层模型:
应用层 --》人机交互
表示层 --》数据格式,压缩,加密,呈现格式
会话层 --》建立会话
传输层 --》端到端传输,可靠传输
网络层 --》路由,寻找最佳路径
数据链路层--》建立链路转发,MAC寻址
物理层--》二进制传输(脉冲信号),接口,电器,电压,线路
ISO国际标准化组织
四层模型–》IETF 组织
:互联网工程组织会 事实上的模型,现有协议后有模型
上三层统一为应用层
传输层
网络层
网络接口层
IP的编址
32个二进制使用点分十进制分成的
网络位 主机位
IANA
主类
A 单播 0XXXXXXX /8 | 1-126 10.0.0.0/8 127.0.0.0/8(回环地址)
B 单播 10XXXXXX /16 | 128-191 172.16.0.0-172.31.0.0/16
C 单播 110XXXXX /24 | 192-223 192.168.0.0-192.168.255.0/24
D 组播 1110XXXX | 224-239
E 科研保留
无类/可变长子网
引入了掩码,规则1表示网络位,0表示主机位
192.168.1.0 255.255.255.0
10.1.1.0/24 划出10个子网 借位–》把主机位借为网络位
2^4=16 24+4=28
TCP(传输层的可靠连接)
C —>syn seq=10000 S
Cseq=200 syn seq=10001 ACK<–S 半开队列(有大小) 计时器
C -->ack seq=201 S 全连队列
1.为什么需要三次握手?(双向确认)*
所谓的“三次握手”:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。
为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包的序号,并需要这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP。
2.syn半开攻击,发送大量syn包不回确认ack,导致半开队列被占满,服务器无法提供连接服务
防御:syn_cookie技术 记录syn半开连接者的IP,下次连接时不会将其放入半开队列(等于丢弃)
分布式的半开攻击用以上技术不能防御,只能依赖于僵尸网络库,或者代理技术,流量清洗技术来防御
四次断开(标准)
C----》FIN sep=3000 S
C seq=3001 ack《--- S
C seq=4000 FIN 《--- S
C --》ack seq=4001 s
可以三次 把FIN ack一次发送
也可以两次 一般是服务器为了节约资源
为什么需要四次断开?
由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
(1) TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。
(2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
(3) 服务器关闭客户端的连接,发送一个FIN给客户端。
(4) 客户端发回ACK报文确认,并将确认序号设置为收到序号加1。
DHCP