网络技术-数据转发过程

前言

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、端口进行区分属于哪个会话

 

🌏 记录时间:2023年9月24日 21点05分

posted @   犯愁の难瓜  阅读(240)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示