[图解tcp/ip读书笔记] 网络层(二)

4.4路由控制

路由表
1. 静态手工配置
2. 动态路由协议

4.4.1 IP地址与路由控制

最长匹配原则

ip地址:172.20.100.52
下一跳地址
127.20/16 / 127.20.100/24
选择最长匹配,后一个进行转发

路由表不转发地址

下一跳地址是某个主机或者其路由器IP本身地址,表明在同一链路里.不转发
例如路由器1的路由表前两项

默认路由

类此switch语句中的default,
没有匹配的都走这
默认路由标识 0.0.0.0/0(注意前面不是ip地址)

主机路由

IP地址/32 整个ip地址都参与路由
主机路由用于不希望通过网络地址路由的情况,但是这会使路由的开销急剧变大
类似于全匹配

环回地址

127.0.0.1 
主机名localhost,使用这个地址或者让主机名,数据包不会流向网络
通常测试网络程序的正确性

4.4.2 路由表的聚合

将192.168.2.0/24和192.168.3.0/24
可以合并为 192.168.2.0/23
0011 ->3
0010 ->2
&
1110 ->23
等于和主机路由(精确转发)相对而生,模糊化转发(将目的转发地址的掩码尽可能缩小)

4.5 IP分割处理与在构造

4.5.1数据链路不同

IP层的最大传出单元(MTU)和其下层数据链路层各种数据链路不统一,
为了将其底层数据链路抽象,必须不限于底层数据链路的MTU,
所以解决办法是分片

4.5.3 路径mut发现

不希望路由器进行分片处理
分片由主机进行处理
分片可以抽象数据链路层底部,但是对路由其的
处理压力会变大(本来一次转发要分成N次)
)
而且分片一个片段丢了,所有的报文都丢失了
路由MTU 就是在发送端和接收端找到一条尽可能不分片的数据链路
那么肯定是路径中最小的MTU 为标准

4.6 ipv6

5.2 DNS

DNS(Domain Name System) 域名系统
将域名和ip地址关联起来的服务,(wwww.baidu.com /百度的IP)

5.2.3 域名 构成

一级域名又叫顶级域名,就像我们现在的网站建设网站网址http://www.shenzaixian.com是一级域名如果http://sz.shenzaixian.com 就是二级域名了。
一级域名:http://www.shenzaixian.com(前面是ww的通用网址)
二级域名:http://sz.shenzaixian.com (ww替换成了别的)
二级目录:http://ww.shenzaixian.com/mxsy/
一般来讲,越是一级域名,利化了排名则越好。二级域名的效果大概是一级的95%效果(基本上类似了)。
一个完整的域名由二个或二个以上部分组成,各部分之间用英文的句号’ “来分隔,最后一个“的右边部分称为顶级域名(TLD,也称为一级域名),最后一个’w的左边部分称为二级域名(SLD),二级域名的左边部分称为三级域名,以此类推,每一级的域名控制它下一级域名的分配。
定义是这样的,在域名中包含两个点的,就叫二级域名,只包含一个点的,就是一级域名。

5.2.4域名服务器

域名服务器是指管理域名的主机和相应的软件

主机和www.baidu.com不在一个域名下
向根服务器查询www.baidu.com的域名服务器
根服务器返回www.baidu.com ip地址

5.2.5DNS 互联网中的分布式数据库

管理 主机名和ip地址的映射,还有其他的信息

5.3 ARP

在统一数据链路中通信,需要MAC地址,所以当一个IP数据包进入一个数据链路中,需要知道目的IP的MAC地址,ARP(地址解析协议)就是解决从
IP地址到MAC地址转换的协议

5.3.3 IP地址和MAC地址缺一不可

“数据链路上只要知道接收端MAC地址,就可以发送,不需要知道IP地址”
这里数据链路有可能跨过了不同的数据链路,那么不同的数据链路必须在网络层
转发(路由器),那么就需要IP地址了


如果不通过arp 找到特定主机,直接广播
广播会使路由器多次转发数据包

在以太网发送IP包,:下次要经过哪个路由器发送数据包, 下一个路由器就是MAC地址(一个局域网内,主机将发送的数据包交给局域网中的路由器,路由器封装成网络层,查找下一跳地址)

5.3.3 代理ARP

ARP通常不会经过路由器转发,因为要在一个局域网中通过IP找到MAC地址
但是采用代理ARP,可以将ARP请求发送给邻近网段.(合并成一个局域网)

5.4 ICMP

ICMP(internet Ctrotl Message Protecl) 网络控制报文协议

在网络层用于差错控制的协议, 被封装在ip包头内,ip报头内的上层协议标识码会将其识别为ICMP报文

ICMP的封装

ICMP封装在IP报进行传输。ICMP报文本身被封装在IP数据报的数据区中,而这个IP数据报又被封装在帧数据中。在IP数据报报头中的协议(Protocol)字段设置成1,表示该数据是ICMP报文

5.4.2消息类型

5.4.1 查询内容

ICMP目标不可达(类型 3)

IP路由器无法将IP数据包发送给目的地址.
会给发送端主机返回一个不可达的ICMP消息
其中还有类型1 表示主机不可达(路由表内没有该主机),在局域网内arp请求失败

重定向

发现了一条更好的路径,但是路由网络状态是动态变化的,只要将数据包抵达即可,万一更优的路径下次就不可达了,那就GG,所以路由器一般不设置重定向.

ICMP超时消息

ip报文中TTL为0,就会给发送端主机发送超时报文

traceroute命令

发送生存周期为 1,2,3….的udp探测报文,
强制接受返回的imcp超时消息,
这样就可以知道报文在网络上转发经过了哪些路由器,
我自己实验了一下,发现全是*,可能是
本地的路由器TP-LINK设置了过滤返回的imcp超时报文,(不想让使用者知道真实的网络状况)

ICMP回送消息

ping命令的实现 (package internetwork Groper)
作为ip报文的数据发送出去 imcp协议

5.5 DHCP

DHCP服务器可以自动给局域网内的DHCP服务器 设置IP
采用服务器/客户端模式
协议主要在应用层,其实每层都有参与, 传输层采用UDP,网络层采用IP协议,
数据链路层使用以太网,
客户端给服务器发送DHCP发现包,(其实是广播发送),因为没有IP地址,所以
目的地址是255.255.255.255(路由器不转发,只在本地局域网广播)
源地址是0.0.0.0(未知)
DHCP接收到发现包后, 将分配的IP,默认网关等消息作为应用层数据封装成包,
发送给客户端
详细的过程参考
https://www.zhihu.com/question/23337642

5.5 NAT

5.6.1 NAT定义

NAT(Network Address Translator)网络地址转换协议, 私有IP地址 <-> 共有IP地址 转换的协议,解决 ipv4 不够的问题

工作原理


这幅图只解决了 内->外的转换,

问题1 外->内如何映射

当发生 外-> 内时 需要用到 ip:port 标识此时协议名称NATPT

这样恰好 TCP 建立连接时也可以区分不同的连接

问题2: `两个私有地址之间如何建立连接

解决: NAT穿越, 本质是 借用第三方服务器,

假设有A,B两个内网地址, 有一个公网服务器C
A和B要通信, 先向服务器C进行注册
不同NAT 网关后的内部主机如何互访?(P2P如何穿越NAT)?

场景

-* A网中的A1(192.168.30.112)想访问B网中的B1(192.168.40.112);*

向外部固定的服务器注册外部地址和端口号.
首先,A1和B1都要向服务器发起注册,连接中携带用户名,这样服务器收到连接后就能将注册信息中携带的IP地址,端口号和用户名关联,做成一张表:
eg:A,B访问180.34.56.12进行注册.
在客户机看来的请求是

A1 192.168.30.112:4000  -- > 180.34.56.12:5687  
B1 192.168.40.112:4000  -- > 180.34.56.12:5678

在网关路由器上的映射是

A1的网关映射表: 192.168.30.112:4000   --> 222.225.80.51:2345 
B1的网关映射表:192.168.40.112:4000   --> 222.225.50.34:3245 

那么服务器C接受到注册信息是

用户名 网关IP 端口
A1 222.225.80.51 2345
B1 222.225.50.34 3245

此时A1向服务器C请求B1的 IP地址端口号,找到后向其发送连接,
数据包到B的网关后就将包给B1内的网关
参考出处

5.7IP隧道

IPV4和IPV6 不通网络进行通信的技术

如果IPV4报文要经过IPV6网络,就在隧道上封装IPV6的包头,
剩下的情况类似.

5.8 IP的多播,任播,单播,广播

  • 单播(unicast): 是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用单播传输,例如一切基于TCP的协议。
  • 组播(multicast): 也叫多播, 多点广播或群播。 指把信息同时传递给一组目的地址。它使用策略是最高效的,因为消息在每条网络链路上只需传递一次,而且只有在链路分叉的时候,消息才会被复制。
  • 广播(broadcast):是指封包在计算机网络中传输时,目的地址为网络中所有设备的一种传输方式。实际上,这里所说的“所有设备”也是限定在一个范围之中,称为“广播域”。
  • 任播(anycast):是一种网络寻址和路由的策略,使得资料可以根据路由拓朴来决定送到“最近”或“最好”的目的地。

具体说明

单播:

每次只有两个实体相互通信,发送端和接收端都是唯一确定的。
在IPv4网络中,0.0.0.0到223.255.255.255属于单播地址。
你对你老婆喊“老婆”,那么只有你老婆回过头来答应你。

组播

“组播”这个词通常用来指代IP组播。IP组播是一种通过使用一个组播地址将数据在同一时间以高效的方式发往处于TCP/IP网络上的多个接收者的协议。此外,它还常用来与RTP等音视频协议相结合。
互联网架构师戴夫·克拉克是这样描述IP组播的:“你把数据包从一头放进去,网络就会试图将它们传递到想要得到它们的人那里。”
组播报文的目的地址使用D类IP地址, D类地址不能出现在IP报文的源IP地址字段。
你在大街上大喊一声“美女”, 会有一群女性回头看你。

广播

并非所有的计算机网络都支持广播,例如X.25网络和帧中继都不支持广播,而且也没有在“整个互联网范围中”的广播。IPv6亦不支持广播,广播相应的功能由任播(anycast)代替。
通常,广播都是限制在局域网中的,比如以太网或令牌环网络。因为广播在局域网中造成的影响远比在广域网中小得多。

以太网和IPv4网都用全1的地址表示广播,分别是ff:ff:ff:ff:ff:ff和255.255.255.255。
令牌环网络使用IEEE 802.2控制域中的一个特殊值来表示广播。
你在公司大喊一声“放假了”, 全部同事都会响应,大叫爽死了。

任播

拨打 120,119的概念
任播是与单播、广播和组播不同的方式。
在单播中,在网络位址和网络节点之间存在一一对应的关系。
在广播和组播中,在网络位址和网络节点之间存在一对多的关系:每一个目的位址对应一群接收可以复制资讯的节点。
在任播中,在网络位址和网络节点之间存在一对多的关系:每一个位址对应一群接收节点,但在任何给定时间,只有其中之一可以接收到传送端来的资讯。
在互联网中,通常使用边界网关协议来实现任播。
作为老板,你在公司大喊一声“开发组的过来一个人”, 总会有一个人灰溜溜去响应, 挨批还是发钱啊?
参考出处

猜你喜欢

转载自blog.csdn.net/kwinway/article/details/80531724