网络基础
什么是网络?
通信的双方主机,必须对传输的信号做一致的约定:
电磁信号的宽度、高度、速度等。
即,双方必须遵守一定的”协议”.1)点对点网络
2)总线型网络
一台主机和另一台主机发送信号时,
总线上的所有主机都能接收到。
所以,此时,其他主机不能再发送信号!
即不支持多台主机同时发送信号。问题:怎么避免多太主机同时发送信号?
必须使用某个策略,才实现“线路仲裁”.
常有这种策略:CSMA/CD (载波侦听多路访问/冲突检测)
3) 环状网络
网络空闲时,有一个“令牌”,在环状网络中循环发送。
当某台主机需要发送数据时,必须获得该令牌。
当数据发送完毕后,在把这个令牌发送到环状网络。
4)星型网络网络内的“冲突”
当一个网络内的主机,越来越多时,冲突的概率也越来越大
网络的性能下降。解决方案:
使用“网桥”网桥:隔离两个网络的冲突域。
冲突域:在一个冲突域中,最多只有1台主机发送信号。网桥内部,维护了一张“表”,
这个表,记录了每个主机,对应的网桥端口。这个表,是网桥,通过某个“协议”,自主的学习获得。
网桥的特点:只能隔离“冲突域”,不能隔离“广播”
网桥和交换机
交换机,就是一种“特殊的”网桥。
网桥只有2个端口
交换机,就是具有多个端口的”网桥”
所以,交换机具有独特的特点:
1)有多个端口,所以允许多组端口之间同时工作。
2)交换机把系统分成了更多的物理网段(更多的冲突域)
3)交换机更快。
4)交换机对数据的转发方式不同。
了解:
网桥:接收到完整的数据帧,并执行帧检测之后,才转发。
交换机:“存储转发”或”直接转发”路由器
问题:交换机和网桥不能隔离”广播”
解决方案:使用“路由器”逻辑地址(IP地址)
组成: 网络地址.主机地址子网掩码: 用来确定一个主机的IP地址是在哪个网络
比如:
320107 1980….
xxxxxxIP地址 = 网络地址.网内的主机地址
1位.2位
0~1. 00,01,10,11
0.00, 0.01, 0.10, 0.11,
1.00, 1.01, 1.10, 1.111.10 就是110 110 & 100 &就是二进制位的“乘法" --------- 100 子网掩码,就是1.00
扩展:网络地址有8位,主机地址也有八位
0000 0000 ~ 1111 1111. 0000 0000 ~ 1111 1111子网掩码就是: 1111 1111.0000 0000 转换为10进制就是 255.0
结论:如果掩码的最高位有8个1,就表示IP地址的最高8位是网络地址
逻辑地址(IP地址)和物理地址之间的转换:
使用ARP协议路由器内维护一个表:
各个网路的网络地址或主机的IP地址 与 路由器的端口 的对应关系
该表称为“路由表”路由表是怎么生成的:
方法1:人为的设置,静态路由表。
方法2:通过特定的协议(比如RIP2或OSPF等),来主动的学习来获取。总结:
MAC地址(物理地址,就是网卡的序列号):
用来在本地网络内,唯一地标识主机
IP地址(逻辑地址,人为设置的地址)
用来在不同的网络之间,唯一地标识主机。
端口号:
用来标识同一台主机上的不同进程(正在执行的程序)
协议
关于通信的语法、语义的规范。
OSI参考模型
7层
应用层 (http等应用次序,比如在浏览器中输入www.baidu.com并回车,就是请求百度的首页)
表示层 对一些信息做加密处理等。
会话层 管理会话
传输层 封装了源端口号、目的端口号
网络层 封装了源IP地址、目的IP地址
数据链路层: 封装了源MAC地址、目的MAC地址
物理层: 封装了前导码等。
注意:这个模型是 参考模型,实际网络中并不使用。
实际网络中,使用的是TCP/IP网络模型
要求掌握,OSI模型和TCP/IP模型的对应关系。
协议:没一层数据,都是在上一层的数据的基础上,再封装该层的数据。
TCP和UDP的区别
UDP通信:是面向数据报,是不可靠的,有可能会丢包。
发送频繁的发送短小的数据时,效率很高。
很便宜。
TCP通信:面向连接的,可靠的。
TCP通信建立连接:3次握手
TCP通信断开连接:4次断开
IP包的报头分析:
version 版本号 v4, v6(没有推广)
IHL, 报头的长度(行)
实际长度是 IHL x 4 字节
Total Length:总长
Identification, 信息可以被切割成多个IP包,
那么这些被切割的报文就有相同的Identification
Fragmentation Offset, 这个报文在整个信息中的偏移量(即位置)
MF, 表示是否还有更多的包
DF,表示有没有被切割。
TTL(Time To Live):报文的生存时间(是能够经过的路由器的次数)
Protocol,表示上一层所使用的协议的标识。
Header Checksum, 包头的校验信息,用来检查包头信息是否发生错误
Source Address, 源主机的IP地址
Destination Address, 目标主机的IP地址
Data:表示数据
TCP的包头分析:
IP地址的表示
用户常常使用点分10进制。
在计算机内部,使用32位二进制数表示。
IP地址: 网络地址.网内的主机地址
一共32位,4个字节(1个字节8位),每个字节之间用.分隔
网络地址:
A类:
第1位为0,
第1位到第8位用来表示网络地址(从左数起)
A类网络的子网掩码是:255.0.0.0
0 000 0000 ~ 0111 1111 共128个
0000 0000不能作为网络地址, 1 ~ 127
127用于固定的回环地址。
所以,只剩下126个A类地址
一共有126 个A类网络地址
B类:
前2位固定为10
10 00 0000 00000000~ 1011 1111 11111111
128 ~ 191
一共64个B类地址。
子网掩吗是255.255.0.0
C类:
前3位为110
110 0 0000 00000000 00000000 ~ 110 1 111 11111111 11111111
192~223
掩码是255.255.255.0
0000 0000 ~ 1111 1111
0000 0000不能作为主机地址
1111 1111作为广播地址
就只有2^8 - 2 = 254个主机地址
私有地址:
私有地址,是不能直接接入互联网
A类:10.0.0.0/8
B类:172.16.0.0/16 ~ 172.31.0.0/16
16个B类私有地址
C类:192.168.0.0/24 ~ 192.168.255.0/24
256个C类地址
子网的划分
假设某公司有1个C类的网络地址,
公司内有100台主机,但是公司希望前50台主机和后50台主机不能通信
可以使用子网划分:
主机地址有8位
向主机借1位作为网络地址
/25
协议栈和Linux的内核
网桥:有2个端口
可以用来连接两个物理网段
每个物理网段有1个冲突域
可以隔离冲突域。
但是,不能隔离广播。
交换机:相当与带多个端口的网桥
和网桥一样,只能隔离冲突域,不能隔离广播
路由器:可用来隔离广播。
用来连接不同的网络。
路由器内部维护一张路由表:
路由表,记录主机的IP地址或网络的IP地址, 和端口的对应关系。