前言
TCP/IP协议簇喝底层协议配合,保证了数据能够实现端到端的传输。数据传输过程是一个非常复杂的过程,例如数据在转发的过程中会进行一系列的封装和解封装。对于网络工程师来说,只有深入地了解了数据再各种不同设备上的转发过程,才能对网络进行正确的分析和检测。
网关:
网关(Gateway)的概念与作用如下:
- 位于不同网络间的主机要实现通讯,必须把数据包装发给网关
- 最典型的例子:不同局域网之间要通讯,就必须经过网关
- 网关通常就是一台三层网络设备
- 路由器、三层交换机、防火墙、服务器
- 网关地址就是三层设备的接口地址
- 例如PC接入了一台路由器,那么PC的网关即是路由器的IPv4地址,这时候网关实际上就是这台PC的缺省路由
数据包在发送的时候,进行判断是否在同一网段
不同网段的主机,通过路由器进行通讯
数据转发过程:
假设:主机A访问主机B的HTTP服务
因此主机A输入主机B的域名,然后先封装自己的包:HTTP -> TCP -> IP(发现目标IP未知,因为需要DNS解析)
由于主机A发现自己并不清楚对方的IP地址,那么封装被回滚,因为主机A是使用域名对主机B进行访问,因此主机A这时候打算先询问DNS服务器,让DNS服务器解析这条域名
主机A开始向DNS服务器发送包,主机A有一次封装了自己的包:DNS -> UDP -> IP(DNS服务器IP,此时发现DNS服务器与主机A不在同一网段,需要网关) -> 以太网封装(网关的MAC)
网关收到了主机A发过来的包,开始解封装,首先发现网关的MAC地址是自己,然后继续解封装,发现对方IP地址是NDS服务器的IP地址,查找自己的路由表并将相应的包重新封装然后从对应接口转发出去
此时此刻DNS服务器收到了来自网关发送过来的包,开始进行解封装,解到UDP协议时发现端口为53,这时候DNS服务开始起了作用:DNS服务查看到了包内的域名,查找自己的域名IP对应表,将相应IP地址查到,开始发回去
主机A终于收到了DNS服务器发过来的IP地址,开始再一次尝试封装自己的包:HTTP -> TCP -> IP(域名对应的IP,发现不在统一网段,需要网关) -> 以太网封装(网关的MAC)
网关收到了主机A发过来的包,开始解封装,首先发现网关的MAC地址是自己,然后继续解封装,发现对方IP地址是HTTP服务器的IP地址,查找自己的路由表并将相应的包重新封装然后从对应接口转发出去
以下是封包、解包的示意图:
总结:
- 数据在进行二层和三层封装之前,主机需要了解哪些信息?
- 在第二层需要了解网关的Mac地址,在第三层需要了解目标的IP地址
- 当数据帧发送到非目的的主机时,非目的主机将会如何处理?
- 如果非目的主机是网关,则会通过路由表进行相应转发,若不是网关,则将此包丢弃
- 传输层如何能够准确的将数据交给特定应用?
- 特定的应用也有特定的端口,因此是通过端口来准确的交给特定应用
- 当两台主机同时访问服务器的HTTP服务,这个服务器如何区分数据属于哪个会话?
- 如果两台主机在同一个局域网,此时对于HTTP服务来说,IP地址都一样(通过NAT),此时:通过两台主机的端口进行区分属于哪个会话
- 如果两台主机并不在同一个局域网,此时:通过两台主机的IP、MAC、端口进行区分属于哪个会话
标签:网关,封装,IP,主机,IP地址,网络,DNS,转发,数据 From: https://www.cnblogs.com/kakureru/p/17726549.html