网络层>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
IP协议
- IP协议,又称网际协议,是TCP/IP协议的核心。它负责Internet上网络之间的通信,并规定了将数据报从一个网络传输到另一个网络所应遵循的规则。
IP协议不但定义了数据传输时的基本单元和格式,还定义了数据报的递交方法和路由选择。此外,在TCP/IP网络中,主机之间进行通信所必需的地址,也是通过IP协议来实现的。
补充:IP协议主要用于互联异构型网络,例如将LAN与WAN(使用X.25技术)互联。尽管这两类网络中采用的低层网络协议不同,但通过网关中的IP可使LAN中的LLC帧和WAN中的X.25分组之间互相交换。各种网络的帧格式、地址格式等差别很大,TCP/IP通过IP数据报和IP地址将它们统一起来,向上层(主要是传输层)提供统一的IP数据报,使低层物理帧的差异对上层协议不复存在,达到屏蔽低层、提供一致性的目的。
虽然IP协议保证了计算机之间可以发送和接收数据报,但它不负责解决数据报传达的可靠性等安全问题,这些安全因素主要由TCP协议负责完成。
网段划分(重要)
- IP地址分为两个部分, 网络号和主机号
网络号: 保证相互连接的两个网段(网段:一般指一个计算机网络中使用同一物理层设备能够直接通讯的那一部分)具有不同的标识;
主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号;
补充:
1.不同的子网其实就是把网络号相同的主机放到一起.
2.如果在子网中新增一台主机, 则这台主机的网络号和这个子网的网络号一致, 但是主机号必须不能和子网中的其他主机重复.
3.通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的IP地址都不相同.
4.有一种技术叫做DHCP, 能够自动的给子网内新增主机节点分配IP地址, 避免了手动管理IP的不便.
5.一般的路由器都带有DHCP功能. 因此路由器也可以看做一个DHCP服务器.
过去曾经提出一种划分网络号和主机号的方案, 把所有IP 地址分为五类
A类 0.0.0.0到127.255.255.255
B类 128.0.0.0到191.255.255.255
C类 192.0.0.0到223.255.255.255
D类 224.0.0.0到239.255.255.255
E类 240.0.0.0到247.255.255.255
- IP地址与子网掩码做与运算可以得到网络号。
为了更大限度的使用IP地址,可将一个网络划分为多个子网,IP地址的结构变为三部分:网络号、子网号和主机号。网络号和子网号唯一标识一个网络。使用子网掩码确定IP地址中哪些部分属于网络号和子网号,哪些部分属于主机号。子网掩码为“1”的部分对应IP地址的网络号和子网号,为“0”的部分对应主机号。子网的划分提高了IP地址的利用率,在一定程度上缓解了IP地址短缺的问题。
特殊的IP地址
将IP地址中的主机地址全部设为0, 就成为了网络号, 代表这个局域网;
将IP地址中的主机地址全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包;
127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
IP地址的数量限制
IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方 个IP地址, 大概是43亿左右. 而TCP/IP协议规定, 每个主机都需要有一个IP地址.实际上, 由于一些特殊的IP地址的存在, 数量远不足43亿; 另外IP地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个IP地址.
CIDR(CIDR将路由集中起来,使一个IP地址代表主要骨干提供商服务的几千个IP地址,从而减轻Internet路由器的负担)在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上限并没有增加), 仍然不是很够用. 这时候有三种方式来解决:
1.动态分配IP地址: 只给接入网络的设备分配IP地址. 因此同一个MAC地址的设备, 每次接入互联网中, 得到的IP地址不一定是相同的;
2.NAT技术(一种将私有IP和全局IP相互转化的技术方法);
3.IPv6: IPv6并不是IPv4的简单升级版. 这是互不相干的两个协议, 彼此并不兼容; IPv6用16字节128位来表示一个IP地址; 但是目前IPv6还没有普及;
私有IP地址和公网IP地址
如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址
10.* 前8位是网络号,共16,777,216个地址
172.16.到172.31. 前12位是网络号,共1,048,576个地址
192.168.* 前16位是网络号,共65,536个地址
包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP);
- 一个路由器可以配置两个IP地址, 一个是WAN口IP, 一个是LAN口IP(子网IP).
路由器LAN口连接的主机, 都从属于当前这个路由器的子网中.
不同的路由器, 子网IP其实都是一样的(通常都是192.168.1.1). 子网内的主机IP地址不能重复. 但是子网之间的IP地址就可以重复了.
每一个家用路由器, 其实又作为运营商路由器的子网中的一个节点. 这样的运营商路由器可能会有很多级,最外层的运营商路由器, WAN口IP就是一个公网IP了.
子网内的主机需要和外网进行通信时, 路由器将IP首部中的IP地址进行替换(替换成WAN口IP), 这样逐级替换, 最终数据包中的IP地址成为一个公网IP. 这种技术称为NAT(Network Address Translation,网络地址转换).
如果希望我们自己实现的服务器程序, 能够在公网上被访问到, 就需要把程序部署在一台具有外网IP的服务器上. 这样的服务器可以在阿里云/腾讯云上进行购买
路由
- 路由可以在复杂的网络结构中, 找出一条通往终点的路线;
当IP数据包, 到达路由器时, 路由器会先查看目的IP;
路由器决定这个数据包是能直接发送给目标主机, 还是需要发送给下一个路由器;
依次反复, 一直到达目标IP地址;
路由表:路由表中的最后一行,主要由下一跳地址和发送接口两部分组成,当目的地址与路由表中其它行都不匹配
时,就按缺省路由条目规定的接口发送到下一跳地址。