TCP/IP分层概念

TCP/IP , (Transmission Control Protocol /Internet Protocol ) 传输控制协议/因特网互联协议,是指能够在多个不同网络间实现信息传输的协议簇。 TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTP、SMTP、ARP等许多协议。只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
在TCP/IP协议中,它们被简化为了四个层次:

image.pngimage.png

(1)网络接口层 (数据链路层和物理层)

因为数据链路层和物理层的内容相差不多,所以在TCP/IP协议中它们被归并在网络接口层一个层次里。
以太网协议规定,接入网络的设备都必须安装网络适配器,即网卡,数据包必须是从一块网卡传送到另一块网卡。而网卡地址就是数据包的发送地址和接收地址,有了MAC地址以后,以太网采用广播形式,把数据包发给该子网内所有主机,子网内每台主机在接收到这个包以后,都会读取首部里的目标MAC地址,然后和自己的MAC地址进行对比,如果相同就做下一步处理,如果不同,就丢弃这个包。
所以链路层的主要工作就是对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方。

(2)网络层★

(IP协议)网络层引入了IP协议,制定了一套新地址,使得我们能够区分两台主机是否同属一个网络,这套地址就是网络地址,也就是所谓的IP地址。IP协议将这个32位的地址分为两部分,前面部分代表网络地址,后面部分表示该主机在局域网中的地址。如果两个IP地址在同一个子网内,则网络地址一定相同。为了判断IP地址中的网络地址,IP协议还引入了子网掩码,IP地址和子网掩码通过按位与运算后就可以得到网络地址。
(ARP协议)即地址解析协议,是根据IP地址获取MAC地址的一个网络层协议。其工作原理如下:ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址,然后这个数据包会在链路层进行再次包装,生成以太网数据包,最终由以太网广播给子网内的所有主机,每一台主机都会接收到这个数据包,并取出标头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包。ARP接收返回消息,以此确定目标机的MAC地址;与此同时,ARP还会将返回的MAC地址与对应的IP地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
(路由协议)首先通过IP协议来判断两台主机是否在同一个子网中,如果在同一个子网,就通过ARP协议查询对应的MAC地址,然后以广播的形式向该子网内的主机发送数据包;如果不在同一个子网,以太网会将该数据包转发给本子网的网关进行路由。网关是互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将该数据包转发到目标IP所在的子网中,然后再通过ARP获取目标机MAC,最终也是通过广播形式将数据包发送给接收方。而完成这个路由协议的物理设备就是路由器,路由器扮演着交通枢纽的角色,它会根据信道情况,选择并设定路由,以最佳路径来转发数据包。
网络层的主要工作是定义网络地址、区分网段、子网内MAC寻址、对于不同子网的数据包进行路由。

(3)传输层★★

作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。且在运输层中,TCP和UDP也同样起到了中流砥柱的作用。链路层定义了主机的身份,即MAC地址,而网络层定义了IP地址,明确了主机所在的网段,有了这两个地址,数据包就从可以从一个主机发送到另一台主机。但实际上数据包是从一个主机的某个应用程序发出,然后由对方主机的应用程序接收。而每台电脑都有可能同时运行着很多个应用程序,所以当数据包被发送到主机上以后,是无法确定哪个应用程序要接收这个包。因此传输层引入了UDP协议来解决这个问题,为了给每个应用程序标识身份。
UDP)协议定义了端口,同一个主机上的每个应用程序都需要指定唯一的端口号,并且规定网络中传输的数据包必须加上端口信息,当数据包到达主机以后,就可以根据端口号找到对应的应用程序了。(UDP协议比较简单,实现容易,但它没有确认机制,数据包一旦发出,无法知道对方是否收到)可靠性较差,为提高网络可靠性,TCP协议就诞生了。
TCP)即传输控制协议,是一种面向连接的、可靠的、基于字节流的通信协议。简单来说TCP就是有确认机制的UDP协议,每发出一个数据包都要求确认,如果有一个数据包丢失,就收不到确认,发送方就必须重发这个数据包。为了保证传输的可靠性,TCP协议在UDP基础之上建立了三次对话的确认机制,即在正式收发数据前,必须和对方建立可靠的连接。TCP数据包和UDP一样,都是由首部和数据两部分组成,唯一不同的是,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
传输层的主要工作是定义端口,标识应用程序身份,实现端口到端口的通信,TCP协议可以保证数据传输的可靠性。
image.pngimage.png

(4)应用层(应用层、表示层、会话层)

应用层、表示层、会话层三个层次提供的服务相差不是很大,所以在TCP/IP协议中,它们被合并为应用层一个层次。
理论上讲,有了以上三层协议的支持,数据已经可以从一个主机上的应用程序传输到另一台主机的应用程序了,但此时传过来的数据是字节流,不能很好的被程序识别,操作性差,因此应用层定义了各种各样的协议来规范数据格式如http,ftp,smtp等,在请求Header中,分别定义了请求数据格式Accept和响应数据格式Content-Type,有了这个规范以后,当对方接收到请求以后就知道该用什么格式来解析,然后对请求进行处理,最后按照请求方要求的格式将数据返回,请求端接收到响应后,就按照规定的格式进行解读。 对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协议、远程登录服务应用使用了有TELNET协议。应用层还能加密、解密、格式化数据。应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源。
所以应用层的主要工作就是定义数据格式并按照对应的格式解读数据。

通信过程

传输层

在网络通信的过程中,将发出数据的主机称为源主机,接收数据的主机称为目的主机。当源主机发出数据时,数据在源主机中从上层向下层传送。源主机中的应用进程先将数据交给应用层,应用层加上必要的控制信息就成了报文流,向下传给传输层。传输层将收到的数据单元加上本层的控制信息,形成报文段、数据报,再交给网络层。网络层加上本层的控制信息,形成IP数据报,传给网络接口层。网络接口层将网际层交下来的IP数据报组装成帧,并以比特流的形式传给网络硬件(即物理层),数据就离开源主机。
image.pngimage.png

TCP ( Transmission Control Protocol )

传输层通过port端口号来确定应用层协议 范围在0-65535之间
image.png

  • 0-1023:系统端口或特权端口(仅管理员可用) ,众所周知,永久的分配给固定的系统应用使用,22/tcp(ssh), 80/tcp(http), 443/tcp(https)
  • 1024-49151:用户端口或注册端口,分配给程序注册为某应用使用,1433/tcp(SqlServer), 521/tcp(oracle) 3306/tcp(mysql), 11211/tcp/udp (memcached)
  • 49152-65535:动态或私有端口,客户端随机使用端口,范围定义:/proc/sys/net/ipv4/ip_local_port_range

    范例:调整客户端的动态端口范围

    1. [root@centos8 ~]#cat /proc/sys/net/ipv4/ip_local_port_range
    2. 32768 60999
    3. [root@centos8 ~]#echo 20000 62000 > /proc/sys/net/ipv4/ip_local_port_range
    4. [root@centos8 ~]#cat /proc/sys/net/ipv4/ip_local_port_range
    5. 20000 62000

    nc工具侦听端口

    客户端端口随机,服务端端口固定
    通讯五要素:协议,源IP,目的IP,源端口,目的端口

nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具
(1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
(2)端口的扫描,nc可以作为client发起TCP或UDP连接
(3)机器之间传输文件
(4)机器之间网络测速

[root@localhost ~]$ dnf  install nc -y
[root@localhost ~]$ ss -nt
State           Recv-Q         Send-Q             Local Address:Port          Peer Address:Port                   
ESTAB           0                    0                192.168.50.150:22            192.168.50.1:61654                  
ESTAB           0               52               192.168.50.150:22            192.168.50.1:49281                  
ESTAB           0               0                192.168.50.150:22            192.168.50.1:60813
[root@localhost 8~]$ cat /etc/services    (#查看已有端口)
[root@localhost 8~]$ grep 9527 /etc/services

[root@localhost 8~]$ nc -l 9527    (#指定nc将处于侦听模式。指定该参数,nc被当作server,侦听并接受连接,而非向其它地址发起连接)
[root@localhost 8~]$ ss -ntl
State    Recv-Q     Send-Q             Local Address:Port            Peer Address:Port                  
LISTEN   0          128                0.0.0.0:111                   0.0.0.0:*                     
LISTEN   0          32                 192.168.122.1:53              0.0.0.0:*                                                                                                                   
LISTEN   0          10                 [::]:9527                     [::]:*  

[root@CentOS 7~]$ nc 192.168.50.150 9527    (#另一台client连接8,可以实现通讯)
i am 8
i am 7
[root@localhost 8~]$ ss -nt    (#显示TCP 协议的sockets)
State         Recv-Q      Send-Q              Local Address:Port           Peer Address:Port                  
ESTAB         0           0                   192.168.50.150:22            192.168.50.1:61654                 
ESTAB         0           0                   192.168.50.150:22            192.168.50.1:55271                 
ESTAB         0           0                   192.168.50.150:9527          192.168.50.148:44174     (#8和7正在连接通讯)  

[root@localhost 8~]$ lsof -i :9527    (#显示端口9527正在被占用)
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nc      24292 root    5u  IPv4 266801      0t0  TCP localhost:9527->localhost:44174 (ESTABLISHED)

[root@localhost 8~]$ ss -ntl(端口一旦建立连接,就不再占用端口,9527就被释放、不再处于监听状态了)
State    Recv-Q     Send-Q             Local Address:Port            Peer Address:Port                  
LISTEN   0          128                0.0.0.0:111                   0.0.0.0:*                     
LISTEN   0          32                 192.168.122.1:53              0.0.0.0:* 
[root@localhost 8~]$ nc -l 9527(#就可以再次占用9527,建立新的通讯了)
[root@localhost ~]$ < /dev/tcp/192.168.50.150/80    (#判断端口是否被打开)
[root@localhost ~]$ echo $?
0
[root@localhost ~]$ < /dev/tcp/192.168.50.150/9527
-bash: connect: Connection refused
-bash: /dev/tcp/192.168.50.150/9527: Connection refused
[root@localhost ~]$ echo $?
1

TCP包头结构

image.png

  • 源端口、目标端口:计算机上的进程要和其他进程通信是要通过计算机端口的,而一个计算机端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。源端口、目标端口是用16位表示的,可推算计算机的端口个数为2^16个,即65536序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传送的字节流的每一个字节都会按顺序编号。由于序列号由32位表示,所以每2^32个字节,就会出现序列号回绕,再次从0 开始
  • 确认号:表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。告诉发送方:我希望你下次发送的数据的第一个字节数据的编号为此确认号
  • 数据偏移:表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。该字段的单位是32位(即4个字节为计算单位),4位二进制最大表示15,所以数据偏移也就是TCP首部最大60字节
  • URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效
  • ACK:表示是否前面确认号字段是否有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段
  • PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中
  • RST:如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应,带RST标志的TCP报文段称为复位报文段
  • SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
  • FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段
  • 窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数据,由Window size value * Window size scaling factor(此值在三次握手阶段TCP选项Window scale协商得到)得出此值
  • 校验和:提供额外的可靠性
  • 紧急指针:标记紧急数据在数据字段中的位置
  • 选项部分:其最大长度可根据TCP首部长度进行推算。TCP首部长度用4位表示,选项部分最长为:(2^4-1)*4-20=40字节

    tcp端口号通信过程

    ①序列号和确认号

    image.png

    image.png

    ②固定窗口和滑动窗口

    image.pngimage.png

    ③“三次握手”“四次挥手”

    CLOSED 没有任何连接状态
    LISTEN 侦听状态,等待来自远方TCP端口的连接请求
    SYN-SENT 在发送连接请求后,等待对方确认
    SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
    ESTABLISHED 代表传输连接建立,双方进入数据传送状态
    image.png
    image.png

FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
CLOSING 双方同时尝试关闭传输连接,等待对方确认
image.pngimage.png
image.png

[root@localhost 8~]$ iptables -A INPUT -s 192.168.50.148 -j DROP    (#8设置不接受7的数据)
[root@CentOS 7~]$ ssh 192.168.50.150    (#7连接8时发送第一次握手数据包,请求建立连接)
[root@CentOS ~]$ ss -nta    (#此时7的端口状态为SYN-SENT)
State       Recv-Q Send-Q     Local Address:Port               Peer Address:Port  
SYN-SENT    0      1        192.168.50.148:34246              192.168.50.150:22

超时重传

异常网络状况下(开始出现超时或丢包),TCP控制数据传输以保证其承诺的可靠服务TCP服务必须能够重传超时时间内未收到确认的TCP报文段。为此,TCP模块为每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动。如果超时时间内未收到接收方的应答,TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择,以及最多执行多少次重传,就是TCP的重传策略。与TCP超时重传相关的两个内核参数:
/proc/sys/net/ipv4/tcp_retries1,指定在底层IP接管之前TCP最少执行的重传次数,默认值是3
/proc/sys/net/ipv4/tcp_retries2,指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min)

拥塞控制

网络中的带宽、交换结点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可承受的能力,网络的性能就会变坏。此情况称为拥塞。TCP为提高网络利用率,降低丢包率,并保证网络资源对每条数据流的公平性。即所谓的拥塞控制TCP拥塞控制的标准文档是RFC 5681,其中详细介绍了拥塞控制的四个部分:慢启动(slow start)、
拥塞避免(congestion avoidance)、快速重传(fast retransmit)和快速恢复(fast recovery)。拥塞控制算法在Linux下有多种实现,比如reno算法、vegas算法和cubic算法等。它们或者部分或者全部实现了上述四个部分
当前所使用的拥塞控制算法 /proc/sys/net/ipv4/tcp_congestion_control

UDP ( User Datagram Protocol )

  • 工作在传输层
  • 提供不可靠的网络访问
  • 非面向连接协议
  • 有限的错误检查
  • 传输性能高
  • 无数据恢复特性

image.png

网络层

ICMP

Internet Control Message Protocol
范例: 利用icmp协议判断网络状态

[zhuyuany@ubuntu1804 ~]$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=169 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=128 time=50.0 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=128 time=53.4 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=128 time=56.9 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3008ms
rtt min/avg/max/mdev = 50.046/82.471/169.486/50.297 ms

[zhuyuany@ubuntu1804 ~]$ ping -s 65508 1.1.1.1(#指定数据包大小)
Error: packet size 65508 is too large. Maximum is 65507

[zhuyuany@ubuntu1804 ~]$ ping -s 65507 -f 192.168.50.150(#大量请求,一种网络攻击)
PING 192.168.50.150 (192.168.50.150) 65507(65535) bytes of data.
ping: cannot flood; minimal interval allowed for user is 200ms

ARP

Address Resolution Protocol 地址解析协议
ARP由互联网工程任务组(IETF)在1982年11月发布的RFC 826中描述制定,是根据IP地址获取物理地址的一个TCP/IP协议。

  • 主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;
  • 收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
  • 地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存

image.pngimage.png

#显示所有接口的 ARP 表
[root@localhost ~]$ ip neigh 
192.168.50.2 dev ens160 lladdr 00:50:56:f1:8b:b7 STALE
192.168.50.254 dev ens160 lladdr 00:50:56:f5:1c:32 STALE
192.168.50.1 dev ens160 lladdr 00:50:56:c0:00:08 REACHABLE
[root@localhost ~]$ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.50.2             ether   00:50:56:f1:8b:b7   C                     ens160
192.168.50.254           ether   00:50:56:f5:1c:32   C                     ens160
192.168.50.1             ether   00:50:56:c0:00:08   C                     ens160

#ARP静态绑定可以防止ARP欺骗
[root@localhost ~]$ arp -s 192.168.50.148 52:54:00:72:b7:07
[root@localhost ~]$ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.50.2             ether   00:50:56:f1:8b:b7   C                     ens160
192.168.50.254           ether   00:50:56:f5:1c:32   C                     ens160
192.168.50.148           ether   52:54:00:72:b7:07   CM                    ens160
192.168.50.1             ether   00:50:56:c0:00:08   C                     ens160

Gratuitous ARP
Gratuitous ARP也称为免费ARP,无故ARP。
Gratuitous ARP不同于一般的ARP请求,它并非期待得到ip对应的mac地址,而是当主机启动的时候,将发送一个Gratuitous arp请求,即请求自己的ip地址的mac地址
免费ARP可以有两个方面的作用:
验证IP是否冲突:一个主机可以通过它来确定另一个主机是否设置了相同的 IP地址
更换物理网卡:如果发送ARP的主机改变了物理地址(如更换物理网卡),可以使用此方法通知网络中其它主机及时更新ARP缓存

[root@CentOS 7~]$ reboot
[root@localhost 8~]$ tcpdump -i ens160 arp src 192.168.50.148 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes
13:05:43.530355 ARP, Reply 192.168.50.148 is-at 00:0c:29:5e:d7:63 (oui Unknown), length 46
13:05:43.530510 ARP, Request who-has 192.168.50.254 tell 192.168.50.148, length 46
13:06:43.018303 ARP, Reply 192.168.50.148 is-at 00:0c:29:5e:d7:63 (oui Unknown), length 46

RARP

Reverse Address Resolution Protocol RARP 即将MAC转换成IP
image.pngimage.png

DHCP

动态主机配置协议
image.png

IP协议

Internet 协议特征

  • 运行于 OSI 网络层
  • 面向无连接的协议
  • 独立处理数据包
  • 分层编址
  • 尽力而为传输
  • 无数据恢复功能

image.pngimage.png

#TTL,Time To Live的缩写,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量
TTL值在100至130之间,主机系统为WINDOWS; TTL值在240至255之间,主机系统为UNIX或LINUX
[root@localhost ~]$ cat /proc/sys/net/ipv4/ip_default_ttl (#可以更改TTL)
64
[root@localhost ~]$ echo 128 > /proc/sys/net/ipv4/ip_default_ttl

★IP地址

IP地址由两部分组成
网络ID:标识网络,每个网段分配一个网络ID,处于高位
主机 ID:标识单个主机,由组织分配给各设备,处于低位

IPv4地址格式:点分十进制记法
image.pngimage.png

IP地址分类

image.pngimage.png
私有IP地址:不直接用于互联网,通常在局域网使用
公共IP地址:互联网上设备拥有的唯一地址
image.pngimage.png
特殊地址:

  • 0.0.0.0:不是真正意义上的ip地址,表示所有不清楚的主机和目的网络
  • 255.255.255.255:限制广播地址。对本主机来说这个地址指本网段内(同一广播域)的所有主机
  • 127.0.0.1~127.255.255.254:本机回环地址,主要用于测试。(lo 虚拟网卡)在传输介质中永远不会出现目的地址为127.0.0.1的数据包
  • 224.0.0.0~239.255.255.255:组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器; 224.0.0.5指OSPF 路由器, 地址多用于一些特定的程序以及多媒体程序
  • 169.254.x.x:如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样地址

保留地址:如172.16.0.0网络中的两个地址
网络地址:172.16.0.0
广播地址:172.16.255.255

子网掩码and划分子网

CIDR:无类域间路由,目前的网络已不再按A,B,C类划分网段,可以任意指定网段的范围
CIDR 无类域间路由表示法:IP/网络ID位数,如:172.16.0.100/16
netmask子网掩码:32位或128位(IPv6)的数字,和IP成对使用,用来确认IP地址中的网络ID和主机ID,对应网络ID的位为1,对应主机ID的位为0,范例:255.255.255.0 ,表现为连续的高位为1,连续的低位为0
image.pngimage.png
相关公式:
一个网络的最多的主机数=2^主机ID位数-2
网络(段)数=2^网络ID中可变的位数
网络ID=IP与netmask

★判断对方主机是否在同一个网段:用自已的子网掩码分别和自已的IP及对方的IP相与,比较结果,相同则同一网络,不同则不同网段

划分子网:将一个大的网络(主机数多)划分成多个小的网络(主机数少),主机ID位数变少,网络ID位数变多,网络ID位向主机ID位借位
划分子网的数量由网络ID向主机ID借的位决定
子网数量=2^网络ID向主机ID借位

中国移动10.0.0.0/8 给32个各省公司划分对应的子网
(1)每个省公司的子网的netmask?
        32=2^5(向主机位借5位)  网络位:5+8=13
    对应子网:10.248.0.0

(2)每个省公司的子网的主机数有多少?
        2^(32-13)-2=524286
(3)河南省得到第10个子网,网络ID?
        10.01001 000.0.0/13 (10-1=9=8+1=01001,10.01001 000.0.0/13)
        10.72.0.0/13 

(4)河南省得到第10个子网的最小IP和最大的IP?
        10.72.0.1/13
        10.01001 111.11111111.11111110
        10.72.0.1---10.79.255.254
(5)所有子网中最大,最小的子网的网络ID(NETID)?
    10.00000 000.0.0/13   10.0.0.0/13
    10.11111 000.0.0/13   10.248.0.0/13

合并超网:将多个小网络合并成一个大网,主机ID位向网络ID位借位 (实现路由聚合功能)
image.png
跨网络通信: 路由,选择路径
路由分类:主机路由;网络路由;默认路由
优先级:精度越高,优先级越高