很多人都以为TCP/IP是指TCP与IP两种协议。实际中有时也指这两种协议,因为TCP和IP协议在TCP/IP协议簇中最具代表性。然而在大多数情况下,它只是利用IP进行通信时所必须用到的协议群的统称。IP与ICMP、TCP与UDP、TELNET或FTP、以及HTTP等都属于TCP/IP的协议。它们与TCP和IP的关系紧密,时互联网必不可少的组成部分。TCP/IP泛指这些协议,因此,也称TCP/IP为网络协议簇。
IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。
IP作为整个TCP/IP中至关重要的协议,主要负责将数据包发送给最终的目标计算机(复杂的网络环境中)。因此,IP能够让世界上任何两台计算机之间进行通信。
网络层的下一层----数据链路层的主要作用是在互连同一种数据链路层的节点之间进行包传递。而一旦跨越多种数据链路,就需要借助网络层。网络层可以跨越不同的数据链路,即使是在不同的数据链路层上也能实现两端节点之间的数据包传输。
主机与节点:
在互联网世界中,将配有IP地址的设备叫做“主机”,主机可以是大型计算机,也可以是个人计算机等,细化的话,主机的定义应该是“配有IP地址,但是不进行路由控制的设备”。
既配有IP地址又具有路由控制能力的设备叫做“路由器”,跟主机有所区别,而节点则是主机和路由器的统称。在IPv4中的规范RFC791中,将具有路由控制功能的设备叫做“网关”。
ps:路由控制(Routing)是将分组数据发送到最终目标地址的功能。即
使网络非常复杂,也可以通过路由控制确定到达目标地址的通路。一旦这
个路由控制的运行出现异常,分组数据极有可能“丢失”,无法到达目标地
址。因此,一个数据包之所以能够成功地到达最终的目标地址,全靠路由控制。
IP大致分为三大作用模块:IP寻址、路由(最终节点为止的转发)以及IP分包与组包。
在链路层标识同一个链路中不同计算机的一种识别码是MAC地址,网络层标识的地址信息叫做IP地址,IP地址用于在“连接到网络中的所有主机中识别出进行通信的目标地址”。
路由控制(Routing)
路由控制(Routing)是将分组数据发送到最终目标地址的功能。即使网络非常复杂,也可以通过路由控制确定到达目标地址的通路。一旦这个路由控制的运行出现异常,分组数据极有可能“丢失”,无法到达目标地址。因此,一个数据包之所以能够成功地到达最终的目标地址,全靠路由控制。
跳(Hop),它是指网络中的一个区间。IP包正式在网络中一个跳间被转发。因此IP路由也叫多跳路由。在每一个区间内决定着包在下一跳被转发的路径。下图为多跳路由图:
在下一跳选择时会使用到ARP(Address Resolution Protocol)地址解析协议:是根据IP地址获取物理地址的一个TCP/IP协议,主要作用:解决下一跳跳哪的问题
一跳(1Hop)是指利用数据链路层以下分层的功能传输数据帧的一个区间。
以太网等数据链路中使用MAC地址传输数据帧。此时的一跳是指从源
MAC地址到目标MAC地址之间传输帧的区间。也就是说它是主机或路由
器网卡不经其他路由器而能直接到达的相邻主机或路由器网卡之间的一
个区间。在一跳的这个区间内,电缆可以通过网桥或交换集线器相连,
不会通过路由器或网关相连
多跳路由是指路由器或主机在转发IP数据包时只指定下一个路由器或主机,而不是将到最终目标地址为止的所有通路全部指定出来。因为每一个区间(跳)在转发IP数据包时会分别指定下一跳的操作,直至包达到最终的目标地址。
都应该看过小说,小说里面有什么修炼等级,最厉害的比如天帝,天帝就可以作为我们的最终的目标地址,想要修炼到天帝境界,中间肯定有很多很多个小境界,这些小的境界制成表我们可以看作是路由控制表(Routing Table),因为想要修练至天帝境界,中间的境界都需要走过一遍才可以(这里其实不恰当,因为路由选择是偶然性的不确定的,我们不知道下一跳会跳到哪,但是修炼是规定好的)。
众所周知,必须要修炼到一个境界的瓶颈之后,才能突破至下一个境界,在我们这里突破的功法就是ARP,他会指引我们从这个瓶颈突破至下一个境界,在到了下一个境界之后,经过一段时间的修炼(将IP包装入数据链路层的数据帧,经过寻址后传出去,以以太网为例,目标MAC地址就是下一个路由器的MAC地址),查找修炼等级表确定我们下一步要突破到什么境界,这个过程反复多次,直到修练至天帝境界(数据包就被发送到最终的目标节点)。
IP是实现多个数据链路之间通信的协议。不同数据链路有个最大的区别,就是它们各自的最大的传输单位(MTU:Maxi-mum Transmission Unit)不同。就像寄快递有大小限制一样。
源于图解TCP/IP书,有需要的同学可以私信我哦。
MTU的值在以太网中是1500字节,在FDDI中是4352字节,而ATM则为9180字节。IP的上一层可能会要求传送比这些MTU更多字节的数据,所以必须在线路上传送比包长还要小的MTU。
为了解决这个问题,IP进行分片处理(IP Fragmentation)。分片处理就是把较大的IP包分成多个较小的IP包。注意:IP数据报在传送中可能被多次分片,但分片的数据报仅在目的主机才被重装回原来的数据报从IP的上层看,它完全可以忽略数据包在途中的各个数据链路上的MTU,而只需要按照源地址发送的长度接收数据包。IP就是以这种方式抽象化了数据链路层,上层只使用下层提供的服务即可。更多的信息会在IP数据报首部进行解释。
为什么IP要采用面向无连接呢?
为了提高可靠性,由上层的TCP采用面向连接型,TCP/UDP协议
IP提供尽力服务(Best Effort),意指“为了把数据包发送到最终目标地址,尽最大努力”。然而,它并不做“最终收到与否的验证”。IP数据包在途中可能会发生丢包、错位以及数据量翻倍等问题。如果发送端的数据未能真正发送到接收端目标主机会造成严重的问题。比如北约发送邮件给普京,原意大概是同意俄入北约,不过有条件巴拉巴拉,最后说了一句,如果不同意,就刀兵相向之类的话,但是不幸的是传送过程丢包了,导致接收到的邮件的只有刀兵相向这一句,那结局肯定是Good Game。那这样肯定是不行的
因此提高通信的可靠性很重要。TCP就提供这种功能。如果说IP只负责将数据发给目标主机,那么TCP拥有一套保证数据可靠传输的机制负责保证接收端主机确实接收到完整数据。