网络 系列 IP

开启 网络 探索新篇章

Posted by lichao modified on May 10, 2020

IP 协议主要解决网络路由和寻址问题。

IP 的主要作用就是在复杂的网络环境中将数据包发给最终的目标地址。

网络

## IP 三大作用模块

  1. IP 寻址: 在计算机通信中,为了识别通信段,必须要有一个类似于地址的识别码进行标识。而在数据链路层,使用 MAC 地址来标识同一个链路中不同计算机的一种识别码。在网络层,则叫做 IP 地址。
  2. 路由(最终节点为止的转发): 路由控制(Routing)是指将分组数据发送到最终目标地址的功能。即使网络非常复杂,也可以通过路由控制确定到达目标地址的通路。因此,一个数据包之所以能够成功地到达最终的目标地址,全靠路由控制。

Hop 中文叫“跳”,它是指网络中的一个区间,IP 包正是在网络中一个跳间被转发。数据链路实现某一个区间(一跳)内的通信,而IP实现直至最终目标地址的通信(点对点)。

网络

为了将数据包发送给目标主机,所有主机都维护者一张路由控制表(Routing Table),该表记录IP数据在下一步应该发给哪一个路由器。IP包将根据这个路由表在各个数据链路上传输。

网络

  1. IP 分包与组包: IP 面向无连接,即在发包之前,不需要建立与对端目标地址之间的连接。上层如果遇到需要发送给IP的数据,该数据会被立即压缩成IP包发送出去。

IP为什么面向无连接:

  1. 简化:面向连接比起面向无连接处理相对复杂!
  2. 提速:每次通信之前都需要建立连接,会降低处理速度!
    需要有连接时,可以委托上一层(传输层)提供此项服务,因此,IP为了实现简单化与高速化采用面向无连接方式。

相关技术

DNS

DNS (Domain Name System 的缩写)的作用非常简单,就是根据域名查出IP地址 网络

ARP

ARP 是一种解决地址问题的协议,以目标地址为线索,用来定位下一个应该接收数据分包的网络设备对应的 MAC 地址。不过,ARP 只适用于 IPv4,不适用于 IPv6。

网络

RARP 则是将 ARP 反过来,从 MAC 地址定位 IP 地址的一种协议。

ICMP

一个刚刚搭建好的网络,需要验证该网络的设置是否正确。ICMP(Internet Control Message Protocol)这是提供这类功能的一种协议,其主要功能包括:确认IP包是否成功送达目标地址,通知在发送过程中IP包被废弃的具体原因等等。例如我们经常使用 ping 命令,就是一个典型的ICMP的具体应用。

DHCP

如果逐一地为每一台主机设置 IP 地址会非常繁琐,于是为了实现自动设置 IP 地址、统一管理 IP 地址分配,就产生了 DHCP(Dynamic Host Configuration Protocol)协议。有了 DHCP,计算机只要连接到网络,就可以进行 TCP/IP 通信。

NAT

NAT(Network Address Translator)用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。使用本地地址的主机和外界通信时,都要在 NAT 路由器上将本地地址转换成全球IP地址,才能和因特网连接。

网络

主要思想:端口多路复用(Port address Translation, PAT)是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation) ,即采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节 约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

IP隧道

在一个网络环境中,假如网络A、B使用IPv6,中间位置的网络C支持使用IPv4的话,网络A与网络B之间无法直接进行通信。为了让他们之间正常通信,这时需要采用IP隧道的功能。 网络 IP隧道中可以将那些从网络A发过来的IPv6的包统和为一个数据,再为之追加一个IPv4的首部以后转发给网络C,这种在网络层的首部后面继续追加网络层首部的通信方法就叫做“IP隧道”。 网络

网络层(IP协议)

IP 协议是 TCP/IP 协议的核心,所有的 TCP,UDP,IMCP,IGMP的数据都以IP数据格式传输。要注意的是,IP不是可靠协议,这是说,IP协议没有提供一种数据未传达以后的处理机制,这被认为是上层协议:TCP或UDP要做的事情。

在数据链路层中我们一般通过 MAC 地址来识别不同的节点,而在 IP 层我们也要有一个类似的地址标识,这就是IP地址。

32 位 IP 地址分为网络位和地址位,这样做可以减少路由器中路由表记录的数目,有了网络地址,就可以限定拥有相同网络地址的终端都在同一个范围内,那么路由表只需要维护一条这个网络地址的方向,就可以找到相应的这些终端了。

  • A类IP地址: 0.0.0.0~127.255.255.255
  • B类IP地址: 128.0.0.0~191.255.255.255
  • C类IP地址: 192.0.0.0~239.255.255.255
IP协议头:

网络

这里只介绍:八位的TTL字段。这个字段规定该数据包在穿过多少个路由之后才会被抛弃。某个IP数据包每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃。 这个字段的最大值也就是255,也就是说一个协议包最多在路由器里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一样,一般是32或者是64。 ARP及RARP协议: ARP 是根据IP地址获取MAC地址的一种协议。 ARP(地址解析)协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址对应表缓存)。 如果查询的IP-MAC值对不存在,那么主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的主机。 而广播主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方)。发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作。 ICMP协议: IP协议并不是一个可靠协议,它不保证数据被送达。那么自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。ICMP不是高层协议,而是IP层协议。 当传送IP数据包发生错误。比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会,这也就是为什么说建立在IP层以上的协议是可能做到安全的原因。 ping: ping可以说是ICMP的最著名的应用,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。 例如:当我们某一个网站上不去的时候。通常会ping一下这个网站。ping会回显出一些有用的信息。一般的信息如下: 网络

ping这个单词源自声纳定位,而这个程序的作用也确实如此,它利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应。 ping程序来计算间隔时间,并计算有多少个包被送达。用户就可以判断网络大致的情况。我们可以看到, ping给出来了传送的时间和TTL的数据。 Traceroute: Traceroute是用来侦测主机到目的主机之间所经路由情况的重要工具,也是最便利的工具。 Traceroute的原理是非常非常的有意思,它收到目的主机的IP后,首先给目的主机发送一个TTL=1的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的ICMP数据报给主机。主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据 报。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器IP。 网络

参考

https://www.cnblogs.com/wangle1001986/p/6087194.html