【网络基础理解笔记之三】网络数据包通信小结

数据的传输:

数据要想进行传输必须进行封装:应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部。
封装过程: 首先由用户处理,给数据加上应用层(如:用户封装ftp协议)。之后就交给内核处理通信细节:(1)加上传输层,打上报头(如:给数据加上TCP协议);(2)加上网络层,加上IP段的段首。(3)到网络接口层(链路层),以太网帧协议加上帧头和帧尾。然后就由以太网驱动程序,将我们封装好的数据经网卡加入到以太网环境中,经网线传输到对方接收端。
接收端收到数据封装后,要进行解包,解包的过程和封装相反。

路由: 路由就是指数据包从源地址到目的地址所经过的路径,由一系列路由节点组成。
路由表: 每个路由器都有一个路由表,路由表存储着指向特定网络地址的路径。路由器通过查询路由表来决定向哪个接口发送数据包。
举个例子: A有数据要传输到B,则A中记录则B的IP地址,且这个要传输的数据要经过几个路由器后到达目标IP地址(B)。如果数据是TCP协议,则它的要走的路径是稳定的(要进过的那几个路由器是确定好的);如果是UDP协议,则它是不稳定的,同样的数据传输到B,有可能走两条不一样的路径。

作个网络数据包通信的小结:

第一步:数据从主机A传输到主机B,先进行层层封装(由内到外就是应用层—>传输层->网络层->以太网帧头),然后把数据放到网络中(如:网线)。
第二步:在网络传输中,每经过一个路由器就进行一次不完全的拆包和解包的过程,主要是对最外层(帧头帧尾)进行处理。具体是路由器1拆掉帧头帧尾,在网络层中找到最终目的的IP地址,然后通过路由器自身的路由表去查找下一跳路由器2的目的IP地址,然后路由器2的收到路由器1发来的ARP请求,填充目的MAC和源MAC地址后回发,这样路由器1就可以知道路由器2的MAC地址,然后就可以把数据包发到路由2中。
第三步:送达目的主机后,将数据包进行逐层拆解,拆解和封装的顺序相反。
下面画了个小图来说明:
【网络基础理解笔记之三】网络数据包通信小结_第1张图片
封装的具体过程
【网络基础理解笔记之三】网络数据包通信小结_第2张图片
注意事项: ARP数据报格式中,目的IP地址指的是下一跳(即下一个要经过的路由)的,而最终目的端的IP地址是被封装在网络层的IP协议中。目的IP地址会一直改变,随着经过的每一个路由器自己的路由表决定下一跳。

TTL: 以一跳为单位,表示数据包的传输生命周期。不如:如果一个数据包的生命周期为40,每经过一个路由会将TTL减1,到最后一个减为0的路由器会将这个数据包丢掉。

下图是IP数据报格式
【网络基础理解笔记之三】网络数据包通信小结_第3张图片

TCP和UDP数据报协议中的端口号,指的是进程,比如:A发送给B,用的是QQ还是还是微信。下图是数据报格式:
【网络基础理解笔记之三】网络数据包通信小结_第4张图片
【网络基础理解笔记之三】网络数据包通信小结_第5张图片

公网IP访问公网IP:直接访问。
公网IP和私网IP之间的访问:NAT映射。
私网IP和私网IP之间的访问:NAT映射,打洞机制。
如果是两个局域网的私有IP之间的访问,和公网和公网之间的访问一致。

你可能感兴趣的:(网络编程学习笔记)