昨晚半夜看鸟哥,看网络数据包那章的时候,有一些东西很零乱,有一些问题也没有具体来说明,昨晚想了一脑子浆糊,主要是纠结于nat这层,今天查了一些介绍,算是能理清楚了。整理一下,讲述下一个网络数据包的故事。
一.我在哪里?你又在哪里?
这个问题很哲学,我在哪里?你又在哪里?呃,如果你不知道我在哪里你怎么找我?我不知道你在哪里我又怎么找你呢?那我们就来看看一个数据包的结构吧(以TCP为例):
|<– MAC数据包总长度 –>|
| |<– IP数据包总长度 –>|
| |<– TCP数据包总长度 –>|
| MAC数据包表头 | IP数据包表头 | TCP数据包表头 | 实际内容 |
这里不难看出,数据包的层次关系来,MAC数据包包包裹着IP数据包,IP数据包又包裹着TCP数据包,TCP数据包里面是要传输的内容。下面来说说这个MAC IP TCP都是神马东东。
- MAC(Medium Access Control)
- 媒体介入控制层,属于OSI模型中数据链路层下层子层。
- IP(Internet Protocol)
- 网络之间互连的协议的缩写,中文简称为“网协”,也就是为计算机网络相互连接进行通信而设计的协议。
- TCP(Transmission Control Protocol)
- 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输协议。
MAC也表示网卡滴硬件地址,就是你滴网卡那串00:11:22:33:44:55:66形式滴硬件地址。下面说说各个包的表头里面都有一些什么重要滴东西(当然,这里只介绍那些最重要的东西)。
MAC的表头里面标明了目的地址与来源地址,这两个地址都是硬件MAC地址,因为MAC帧在数据链路层,这层是整个OSI的物理层之上,也就是物理层是直接负责将这些数据进行网卡之间的传输滴,所以这里的地址是硬件地址。MAC从硬件上说明了我在哪里与你在哪里。但是这个MAC的表头会跟随数据的传输而逐步变化。
IP的表头里面也有类似的目标地址与来源地址,这里的地址是用IP表示的。当然,无论你是私有IP还是公有IP,这里的IP地址也是会变化滴,正向发出的时候目标IP是不会变化的,返回的时候,来源IP也不变化,也就是说你要访问的那个IP地址在传输过程中并不会改变,变化的是源地址source IP。
TCP的表头里面没有地址,只有端口,分目标端口与来源端口。这个端口多数是随机产生的,当然,目标端口一般不是随机产生的,比如你要访问一个web服务,那么目标端口一般就是80咯,关于端口的知识各位可以百科下。这里跟IP很相似,目标端口不会变化,但是来源端口会跟随着路由变化。具体为什么变化哩,奶牛在下节中回来跟大家说明。
好了,这样子,“我在哪里?你在哪里?”的问题基本上就有了一个明确的定位,虽然上面看着有些零乱,而且有很多变化,但是,我们可以知道一些变化的,一些不变化的,而且这里我们也可以想到一个问题,TCP/IP是协议簇,为啥他俩这么暧昧哩,因为他俩在一起可以确定一条传输的路径哇,有些联系在一起密不可分滴关系里,暧昧暧昧哇~~~
好了,如果感兴趣滴朋友就期待奶牛滴下一节吧~~~