赞
踩
在复杂的网络环境中确定一个合适的路径.
基本概念
主机: 配有IP地址;
路由器: 即配有IP地址, 又能进行路由控制;
节点: 主机和路由器的统称;
IP地址分为两个部分, 网络号和主机号
通过合理设置主机号和网络号, 就可以保证在相互连接的网络中, 每台主机的IP地址都不相同.
那么问题来了, 手动管理子网内的IP, 是一个相当麻烦的事情
过去曾经提出一种划分网络号和主机号的方案, 把所有IP 地址分为五类, 如下图所示(该图出 自[TCPIP])
随着Internet的飞速发展,这种划分方案的局限性很快显现出来,大多数组织都申请B类网络地址, 导致B类地址很快就分配完了, 而A类却浪费了大量地址;
针对这种情况提出了新的划分方案, 称为CIDR(Classless Interdomain Routing):
可见,IP地址与子网掩码做与运算可以得到网络号, 主机号从全0到全1就是子网的地址范围;
IP地址和子网掩码还有一种更简洁的表示方法,例如140.252.20.68/24,表示IP地址为140.252.20.68, 子网掩码的高24位是1,也就是255.255.255.0
我们知道, IP地址(IPv4)是一个4字节32位的正整数. 那么一共只有 2的32次方 个IP地址, 大概是43亿左右. 而TCP/IP协议规定, 每个主机都需要有一个IP地址.
这意味着, 一共只有43亿台主机能接入网络么?
实际上, 由于一些特殊的IP地址的存在, 数量远不足43亿; 另外IP地址并非是按照主机台数来配置的, 而是每一个网卡都需要配置一个或多个IP地址.
CIDR在一定程度上缓解了IP地址不够用的问题(提高了利用率, 减少了浪费, 但是IP地址的绝对上*限并没有增加), 仍然不是很够用. 这时候有三种方式来解决:
如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址
在复杂的网络结构中, 找出一条通往终点的路线;
路由的过程, 就是这样一跳一跳(Hop by Hop) “问路” 的过程.
所谓 “一跳” 就是数据链路层中的一个区间. 具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间
IP数据包的传输过程也和问路一样.
那么如何判定当前这个数据包该发送到哪里呢? 这个就依靠每个节点内部维护一个路由表;
假设某主机上的网络接口配置和路由表如下
转发过程例1: 如果要发送的数据包的目的地址是192.168.56.3
转发过程例2: 如果要发送的数据包的目的地址是202.10.1.2
路由表生成算法(选学)
路由表可以由网络管理员手动维护(静态路由), 也可以通过一些算法自动生成(动态路由).
请同学们课后自己调研一些相关的生成算法, 例如距离向量算法, LS算法, Dijkstra算法等.
用于两个设备(同一种数据链路节点)之间进行传递.
以太网的帧格式如下所示:
MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制.
由于数据链路层MTU的限制, 对于较大的IP数据包要进行分包
让我们回顾一下UDP协议:
让我们再回顾一下TCP协议:
MSS和MTU的关系
看硬件地址和MTU
使用ifconfig命令, 即可查看ip地址, mac地址, 和MTU;
虽然我们在这里介绍ARP协议, 但是需要强调, ARP不是一个单纯的数据链路层的协议, 而是一个介于数据链路层和网络层之间的协议;
ARP协议的作用
ARP协议建立了主机 IP地址 和 MAC地址 的映射关系.
ARP协议的工作流程
ARP数据报的格式
DNS是一整套从域名映射到IP的系统
TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆.
于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系.
最初, 通过互连网信息中心(SRI-NIC)来管理这个hosts文件的
这样就太麻烦了, 于是产生了DNS系统.
至今, 我们的计算机上仍然保留了hosts文件. 在域名解析的过程中仍然会优先查找hosts文件的内容.
域名简介
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称
域名使用 . 连接
ICMP协议是一个 网络层协议
一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输. 如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因
ICMP功能
.ICMP正是提供这种功能的协议; ICMP主要功能包括:
ICMP的报文格式 (选学)
关于报文格式, 我们并不打算重点关注, 大家稍微有个了解即可.
ICMP大概分为两类报文:
ping命令
ping命令基于ICMP, 是在网络层. 而端口号, 是传输层的内容. 在ICMP中根本就不关注端口号这样的信息.
traceroute命令
也是基于ICMP协议实现, 能够打印出可执行程序主机, 一直到目标主机之前经历多少路由器.
之前我们讨论了, IPv4协议中, IP地址数量不充足的问题
NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能
NAT IP转换过程
NAPT
那么问题来了, 如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的IP都是相同的. 那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?
这时候NAPT来解决这个问题了. 使用IP+port来建立这个关联关系
这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项
NAT技术的缺陷
由于NAT依赖这个转换表, 所以有诸多限制:
NAT和代理服务器
路由器往往都具备NAT设备的功能, 通过NAT设备进行中转, 完成子网设备和其他子网设备的通信过程.
代理服务器看起来和NAT设备有一点像. 客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户端.
那么NAT和代理服务器的区别有哪些呢?
代理服务器是一种应用比较广的技术.
代理服务器又分为正向代理和反向代理.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。