目录
1 OSI参考模型
1.1 什么是OSI模型
OSI模型(Open System Interconnect),即开放式系统互连。 一般都叫OSI参考模型,是国际标准化组织ISO在1985年研究的网络互连模型。该体系结构标准定义了网络互连的七层框架,即OSI开放系统互连参考模型。
1.2 层次划分的好处
- 各层之间相互独立,每一层都有独自的功能
- 灵活性好,各层内部操作不会影响到其他层
- 结构上可分割
- 易于实现和维护
- 便于模块化开发
1.3 层次结构及功能
OSI参考模型由下至上以此为:
- 物理层:在设备之间传输比特流,规定了电平、速度和电缆针脚等物理特性
- 数据链路层:将比特组合成帧,使用使用MAC地址来访问介质,并进行差错检测
- 网络层:定义了逻辑地址(IP地址),提供路由选路功能,负责将数据从源网络传输到目的网络
- 传输层:提供面向连接或非面向连接的数据传输以及进行重传前的差错检测
- 会话层:负责建立、管理、维护和终止表示层之间的会话
- 表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别
- 应用层:OSI模型中的最高层,建立用户与数据之间的连接,为应用程序提供网络服务
2 TCP/IP参考模型
2.1 TCP/IP常见协议
TCP/IP协议定义了一系列的标准协议
应用层 | Telnet | FTP | TFTP | SNMP |
HTTP | SMTP | DNS | DHCP | |
传输层 | TCP | UDP | ||
网络层 | ICMP | IGMP | ||
IP | ||||
数据链路层 | PPPoE | |||
Ethernet | PPP | |||
物理层 | …… |
2.2 与OSI模型的对应关系
TCP/IP协议在一定的程度上参考了OSI七层模型,将其简化为四层,即应用程、传输层、网络层和链路层。我们平时说的五层模型是将链路层在划分回了数据链路层和物理层。
2.3 TCP和UDP协议
2.3.1 TCP和UDP的报文格式
TCP报文头部:
-
Source Port:源端口,标识那个应用程序发送。长度为16比特
-
Destination Port:目的端口,标识由哪个应用程序接收。长度为16比特
-
Sequence Number:序号字段。TCP链接中传输的数据流每个字节都编上一个序号。序号字段的值指的是本报文段所发送数据的第一个字节的序号。长度为32比特
-
Acknowledgment Number:确认序号,是期望收到对方下一个报文字段的第1个字节的序号,即上次已成功接收到的数据段的最后一个字节数据的序号加1。只有Ack标识为1,此字段有效.长度为32比特
-
Header Length:头部长度,指出TCP报文头部长度,以32比特(4字节)为计算单位。若无选项内容,则该字段为5,即头部为20字节
-
Reserved:保留,必填0。长度为6比特
-
Control bits:控制位,包括FIN、ACK、SYN等标志位,代表不同状态下的TCP数据段
-
Window:窗口TCP的流量控制,这个值表明当前接收端可接受的最大的数据总数(以字节为单位)。窗口最大为65535字节。长度为16比特
-
Checksum:校验字段,是一个强制性的字段,由发端计算和存储,并由收端进行验证。在计算检验和时,要包括TCP头部和TCP数据,同时在TCP报文的前面加上12字节的伪头部。长度为16比特
-
Urgent:紧急指针,指出本报文段中紧急数据有多少个字节,长度为16比特
-
Options:可选字段,长度为0-40字节
UDP报文头部:
- Source Port:源端口,标识由哪个应用程序发送。长度为16比特
- Destination Port:目的端口,标识由哪个应用程序接收。长度为16比特
- Length:指定了UDP报头和数据的总长度。可能的最小长度是8字节。长度为16比特
- Checksum:校验字段,覆盖UDP头部和UDP数据的校验和。长度为16比特
2.3.2 TCP的三次握手
TCP建立连接分为三步
- 客户端发送一个SYN,序列号(Seq)为a,确认序列号(Ack)为0。a和后面的b都是由设备生成的一个随机的数字。
- 服务端在收到客户端的SYN后,回复一个SYN,序列号为b,确认序列号为a+1,表示确认收到SYN。
- 客户端在收到服务端回复的SYN后,在发送一个序列号为a+1,确认序列号为b+1的SYN,表示确认收到服务端的SYN。在服务端收到该SYN后,双方成功建立连接。
之后的数据中,双方的序列号和确认序列号成等差数列递增。
2.3.3 TCP的四次挥手
当双方的数据传输完毕后,双方通过以下四步断开连接:
- 客户端发送一个FIN标记的包,告知数据发送已经结束,其中包含Seq为x
- 服务端收到后将回复一个ACK标记的包,Ack为x+1,告知服务端还没准备好断开连接
- 服务端准备好断开连接时也发送一个FIN标记的包,包含Seq为y
- 客户端收到后也回复一个ACK标记的包,Ack为y+1。服务器在收到后关闭连接,客户端则在等待固定时间没有收到来自服务器的ACK包后断开连接
3 IP地址
3.1 IP地址的构成
IP地址是一个32位的二进制数,通常以8为为一组,以点分十进制的形式出现在我们的视野中。
一个IP地址有一下三部分组成
- 网络号:用来标识一个网络
- 主机号:用来表示网络内不同的主机
- 子网掩码:区分一个IP地址中的网络号和主机号
3.2 IP地址的划分
为了方便管理和组网,IP地址被分为了A、B、C、D、E这五类,其二进制的起首分别是0、10、110、1110、1111,同过查看IP地址的前几位就可以轻松的判断这是哪类IP。
在ABCDE这五类IP中,ABC三类是单播地址,只有这三类地址才会分配给主机使用(部分特殊地址除外),此外的D类为组播IP,E类专门用于特殊的实验目的。
ABC三类IP的区分如下:
- A类IP网络号为8比特,子网掩码为255.0.0.0,地址范围为0.0.0.0~127.255.255.255
- B类IP网络号为16比特,子网掩码为255.255.0.0,地址范围为128.0.0.0~192.255.255.255
- C类IP网络号为24比特,子网掩码为255.255.255.0,地址范围为192.0.0.0~223.255.255.255
为了解决地址池枯竭的问题,私有地址和公有地址的概念被提出,在ABC三类IP中各有各一网段被划分为私网地址,分别是10.0.0.0~10.255.255.255,172.16.0.0~172.16.31.255,192.168.0.0~192.168.255.255
3.3 子网划分
根据有类IP划分的子网大小固定,ip的利用率不高,因此诞生了VLSM(Variable Length Subnet Mask),可变长子网划分的概念,通过加长子网掩码来获得更合适的子网。
具体方法建议去看大佬的讲解
3.4 小练习
3.4.1 练习1
题目:
201.222.200.111/18计算主机数?子网掩码?说明计算方法。
解答:
主机数=2^(32-子网掩码位数)-2=2^14-2=16382
子网掩码=11111111.11111111.11000000.00000000=255.255.192
3.4.2 练习2
题目:
当A(10.0.1.1/16)与B(10.0.2.2/24)通信,A如何判断是否在同一个网段?A和B能否通信?
解答:
要判断它们是否在同一个网络段,需要比较它们的网络地址部分。
A 的IP地址是 10.0.1.1/16,网络地址为 10.0.0.0。
B 的IP地址是 10.0.2.2/24,网络地址为 10.0.2.0。
由于A和B的网络地址不同,它们并不在同一个网络段。在这种情况下,A 和 B 无法直接通信,需要经过路由才能实现通信
3.4.3 练习3
题目:
如何将10.0.0.0/8划分32个子网?求每个子网的掩码,主机数。
解答:
∵ 32=2^5
∴ 子网掩码为11111111.11111000.00000000.00000000
子网掩码:255.248.0.0
主机数:2^(3*8-5)-2=524286台