tip/ip是什么?之前在学习socket的时候我想我就没有搞明白,今天特意去看了一下,以下是我的一点认识。
- 互联网是什么?
说到tcp协议就不得不先说一下整个互联网的组成了,其实用Linux中万物皆是对象来看待互联网似乎有点道理。
为了使互联网的复杂程度降低,普遍将互联网分为七层或者四层,在这里我参照阮一峰的博文将互联网分成五层,从上到下分别为:
- 应用层
- 传输层
- 网络层
- 链接层
- 实体层
应用层是什么?
应用层负责对我们操作所产生的数据(接收的数据包)按照其规定的格式或者协议进行打包(或者解析)
传输层是什么?
传输层负责对应用层打包好的数据进行发送,在该层设立绑定端口解决了多应用数据哪来哪去的问题,使得数据传输不会产生混乱。 端口是每一个使用网卡程序的编号,通过这种编号实现程序各取所需。另外端口号为0-65535,即16个二进制位,0-1023端口被系统占用,不能被使用。
传输层是端口到端口的通信
网络层是什么?
网络层即一套最著名的ip协议,通过ip协议实现了电脑与电脑的互联,即相隔遥远但是接入互联网的两台电脑能该够相连,ip协议其实质是将整个互联网分成一种网络状结构,通过这种树状结构实现找到目标计算机的效率更加高效。
果然将整个过程逆转过来讲比较的麻烦,整个体系是相辅相成的,底层可以包容上层。
好吧,说了一堆废话,感觉没有表达清楚,以下转自:http://blog.csdn.net/yibulianhua/article/details/5348839 思路非常清晰。
好的,现在我们来看一下 pcA 是如何发送数据给 pcB 的
交换机的工作原理前面我们已经介绍过了,它维护了一张 MAC 地址表,用来反映各端口和 MAC 地址的对应关系,以便做好数据转发工作。下面我们来看一下路由器的工作原理,在路由器中也要维护一张表格,叫做路由条目表,用来反映如何到达某个 IP 地址网段,同时在路由器中也有 ARP 高速缓存,反映了该路由器各直接网段的 IP 地址和 MAC 地址的对应关系
1) 由于 B 的 IP 地址并没有和 A 在一个网段,所以当 A 向 B 发送数据时, A 并不会直接把数据给 B ,而是交给自己的网关,也就是 192.168.0.254 ,所以 A 首先会 ARP 广播请求 192.168.0.254 的 MAC 地址
2) A 得到网关的 MAC 地址后,以它为数据帧的目标 MAC 地址进行封装数据,并发送出去
3)
routerA 收到该帧后,检查该帧的目标 IP
,并到自己的路由表查找如何到达该网段(目的IP与各网络的掩码相与:直接较付->特定主机路由->间接交付->默认路由),找到下一跳地址是
routerB 的 s0 端口,于是将数据重新封装,将源地址改为 s0 端口 MAC 地址,目标 MAC 地址改为 routerB 的 s0
端口 MAC 址址,并发送给 routerB
4) 中间路由器传递过程同理
5) 最后一个路由(此例为 routerC
)收到该帧,发现目标 IP 就在自己的直连网段,于是查看 ARP 缓存,如果找到该 IP 的 MAC 地址,则以该 MAC
地址封装数据发送出去,如果在 ARP 缓存没找到,则发出 ARP 广播,请求该 IP 的 MAC 地址,得到对应的 MAC 地址后,再发送给主机
B
在以上数据传递过程中,我们发现,数据帧的源 IP 和目标 IP 始终是不变的,而经过每个路由进行重新封装数据时 MAC 地址则在不断的变化,总是以自己的地址作为源 MAC 地址,下一跳的地址作为目标 MAC 地址
好的,关于数据包寻址过程今天就介绍到这里,希望对各位的学习能有所帮助!
附:IGMP:因特网组管理协议(UDP);内部网关协议:RIP(路由信息协议:基于距离向量的路由选择协议),OSPF(开发最短路径优先协议);ICMP:因特网控制报文协议;CIDR无分类编址;ARP:地址解析协议;RARP:逆地址解析协议;CSMA/CD:载波监听多点接入/碰撞检测);DHCP动态主机配置协议(UDP端口67,68);FTP文件传输(TCP:21);DNS域名系统(UDP:53);TELET(TCP:23);SMTP(TCP:25).
如上所示,
发个总结,什么是互联网,互联网就是各种协议建立起来的一套资源传输体系