网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向传输层提供最基本的端到端的数据传送服务。(百度百科)
图片源自链接https://github.com/wolverinn/Waking-Up/blob/master/_v_images/20191129195451183_16713.png]
划重点:
网络层协议存在于:主机和路由器
网络层提供的服务:两台主机(host)之间
网络层:分组(发送方将数据段封装成分组)从发送主机传送到接收方主机(接收方将分组解封装后将数据段递交给传输层)
疑问:
啥意思啊??
转发:路由器将收到的分组移动到适当的输出链路
分组在单一的路由器从一条入链路到一条出链路的路径
术语:
routing:决定分组从源端口到目的端口所经过路径的过程
forwarding:经过分组从一个输入链路接口转移到适当输出链路接口的过程
选路:决定分组从源端到目的端所经过的路径
涉及一个网络所有路由器
分组从发送方向接收方时,网络层巨鼎这些分组所采用的路由或路径(路由选路算法)
在网络数据开始流动之前,在源和目的端(包括中间经过的路由器)需要建立虚连接路径
???一整个大问号
某些网络体系结构上:ATM,帧中继,x.25
路由器主要由以下几个部分组成:输入/输出接口部分、包转发或交换结构部分(switching fabric)、路由计算或处理部分。
路由器的软件系统主要有五个组成部分:
1、进程:由执行特定任务的独立线程和相关的数据组成,如系统配置维护的telnet守护进程、客户端进程,FTP进程、TFTP进程,SNMP进程,各种协议进程:IP、TCP、UDP、RIP、OSPF、BGP、ARP、ICMP、IGMP,其它有加解密进程、报文过滤进程、NAT进程等。
2、内核:为系统的其它部分提供基本的系统服务,如存储器管理、进程调度、定时器和时钟管理。它为进程提供了硬件(CPU和存储器)资源的管理。
3、报文缓冲:用来存放将要被交换的报文。
4、设备驱动程序:控制网络接口硬件设备及其它外围设备(如Flash)。设备驱动程序接口位于进程、内核、硬件之间,同时与交换控制软件有接口。
5、交换控制软件:根据转发方式控制报文的交换,在高端线速路由器中该部分功能由硬件实现。https://blog.csdn.net/zqixiao_09/article/details/51064175
分组使用目的主机地址进行转发
将分组从输入缓冲区交换到适当的输出缓冲区的速度叫做交换速度,交换结构有三种
当分组从交换结构到达的速率快于输出链路速率时,需要缓存。这时候输出端口排队造成延迟,输出端口缓冲区溢出时引起分组丢失。
同理,当交换速度比所有输入端口综合速度慢时候,输入端口产生排队,排队产生延迟,缓存溢出将引起分组丢失。而排在队列前面的分组阻止队列中其他的分组向前移动的现象叫做线头拥塞(Head-of-the-Line(HOL)blocking)
怎么选择???不理解
图片来源https://camo.githubusercontent.com/e458e8998827725dfdd45430ff7ea4e3dcc4f261a6ba7fb934deb7be102527d8/68747470733a2f2f63732d6e6f7465732d313235363130393739362e636f732e61702d6775616e677a686f752e6d7971636c6f75642e636f6d2f38356330356662312d353534362d346335302d393232312d3231663233316364633863352e6a7067
图片内容补充:
版本 : 有 4(IPv4)和 6(IPv6)两个值;
首部长度 : 占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为固定部分长度为 20 字节,因此该值最小为 5。如果可选字段的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。
区分服务 : 用来获得更好的服务,一般情况下不使用。
总长度 : 包括首部长度和数据部分长度。
生存时间 :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。
协议 :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。
首部检验和 :因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。
标识 : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。
片偏移 : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。
子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。 子网掩码不能单独存在,它必须结合IP地址一起使用。https://baike.baidu.com/item/%E5%AD%90%E7%BD%91%E6%8E%A9%E7%A0%81/100207
链接:https://github.com/CyC2018/CS-Notes/blob/master/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E7%BD%91%E7%BB%9C%E5%B1%82.md#ip-%E6%95%B0%E6%8D%AE%E6%8A%A5%E6%A0%BC%E5%BC%8F
IP 地址的编址方式经历了三个历史阶段:
2.子网划分
老师没讲这部分
通过在主机号字段中拿一部分作为子网号,把两级 IP 地址划分为三级 IP 地址。
IP 地址 ::= {< 网络号 >, < 子网号 >, < 主机号 >}
要使用子网,必须配置子网掩码。一个 B 类地址的默认子网掩码为 255.255.0.0,如果 B 类地址的子网占两个比特,那么子网掩码为 11111111 11111111 11000000 00000000,也就是 255.255.192.0。
注意,外部网络看不到子网的存在。
3.CIDR
怎样获取IP地址中的网络号部分?
从ISP的地址空间划分一块给申请者
层次寻址
ISP如何得到一块地址?
ICNN:分配地址;管理DNS;分配域名,解决域名纷争
DHCP具有能将主机连接进一个网络的网络相关方面的自动能力,故它又常称被称为即插即用协议
每当一台主机加入时,DHCP服务器从其当前可用的地址池中分配一个任意的地址给它;每当一台主机离开时,其地址便被收回这个池中
https://zh.wikipedia.org/wiki/%E7%BD%91%E7%BB%9C%E5%9C%B0%E5%9D%80%E8%BD%AC%E6%8D%A2看一下维基百科吧,,
用于解决内网中的主机要和因特网上的主机通信。由NAT路由器将主机的本地IP地址转换为全球IP地址,分为静态转换(转换得到的全球IP地址固定不变)和动态NAT转换。
专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用 NAT 来将本地 IP 转换为全球 IP。
在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。
ICMP: Internet Control Messae Protocol 因特网控制报文协议
用于主机路由器之间彼此交流网络层信息
差错报告: 不可到达的主机, 网络,端口,协议
请求/应答 (用于ping,traceroute)
ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议
https://camo.githubusercontent.com/598b24c2dbb1cd72db45501ace7efcc7754b40267a96c78299ad2e56b70045bf/68747470733a2f2f63732d6e6f7465732d313235363130393739362e636f732e61702d6775616e677a686f752e6d7971636c6f75642e636f6d2f65333132343736332d663735652d343663332d626138322d3334316536633938643836322e6a7067
ICMP 报文结构: 类型字段, 编码字段 以及引起该ICMP报文的IP分组的前8字节
ICMP 报文分为差错报告报文和询问报文。
https://camo.githubusercontent.com/e32adca8dddfd5414550c58747a21d8ca2bdd6ae0e785258f9cbbcff6c85cefc/68747470733a2f2f63732d6e6f7465732d313235363130393739362e636f732e61702d6775616e677a686f752e6d7971636c6f75642e636f6d2f61613239636338382d373235362d343339392d386337662d3363663461363438393535392e706e67
Ping 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。
Ping 的原理是通过向目的主机发送 ICMP Echo 请求报文,目的主机收到之后会发送 Echo 回答报文。Ping 会根据时间和成功响应的次数估算出数据包往返时间以及丢包率。
Traceroute 是 ICMP 的另一个应用,用来跟踪一个分组从源点到终点的路径。
Traceroute 发送的 IP 数据报封装的是无法交付的 UDP 用户数据报,并由目的主机发送终点不可达差错报告报文。
https://github.com/CyC2018/CS-Notes/blob/master/notes/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%20-%20%E7%BD%91%E7%BB%9C%E5%B1%82.md#2-traceroute
双栈:一些路由器具有双重栈 (v6, v4) 能够在两种格式中转换
隧道: 在穿过IPv4路由器时,IPv6分组作为 IPv4分组的负载