数据包历程

数据包历程

从最初的url进行解析之后,写一个HTTP协议报文——对于url来说/之前为服务器名称,之后为在服务器中请求的文件所处路径

然后查询DNS域名解析服务,获取其对应的IP地址——将上面处理好的HTTP请求报文附带上本地DNS服务器的TCP报文段和IP报文段,发往本地的DNS服务器查询是否有该url的IP缓存,如果没有则先是向根服务器发送请求然后定位到顶级域服务器再到权威服务器然后返回目标服务器的IP

之后讲HTTP报文交给操作系统协议栈,协议栈分为TCP/UDP层(传输层)和IP/ICMP/ARP(网络层),由于HTTP是基于TCP建立的所以会在HTTP的请求头之前加上TCP协议的协议头,在TCP传输层还会对于数据进行切片,切片的最大字节数为MSS,是因为在最后传输时采用的是以太网帧的形式而以太网帧的最大长度为MTU,在减去TCP/IP的协议头部之后留下的最大传输数据长度为MSS,MTU一般为1500字节,TCP头部一般会包括源端口和目标端口(用于对于应用程序的指定)、标志位(用于三次握手,四次挥手,快速重传的SACK)、确认序号(用于重传——快速重传和超时重传)、窗口大小(用于实现滑动窗口)等

接着放到下一层级网络层——采用IP协议,在TCP的协议头部之前加上IP的协议头部,包括源IP和目标IP,TTL,协议号,当有多个网卡时,会根据本机路由表来决定采用哪个网卡作为源地址的IP(采用子网掩码的方式)

再往下走需要再IP头部加上MAC头部,在此协议中只有源MAC地址、目标MAC以及协议类型(ARP或者IP协议),如果不知道目标的MAC地址则广播发送ARP协议,来根据IP寻找MAC地址(RARP协议可以通过MAC地址请求IP地址)

接下来需要网卡来完成,网卡依靠网卡驱动将数据包复制到网卡的缓存区中在其开头加上报头和起始分界符,在其末尾加上用于检验错误的帧校验序列,然后将数字信号转换为电信号

接下来交给交换机,从外面接收到电信号转化为数字信号,然后查询MAC地址对应表,从对应的端口进行转发——交换机不具备MAC地址,只有MAC地址对应表(每一个MAC地址对应哪一个端口),只做转发服务,如果查不到表则进行广播

下一步交给路由器,路由器是三层设计结构,路由器的每个端口都有MAC地址和IP地址,在路由器中首先会进行包末尾网卡设置的校验,校验成功后会核对其MAC地址,如果是自己的MAC地址则留下,否则抛弃,留下的会将MAC协议头去掉根据其IP头部的目标IP来在路由表中对照下一个MAC地址,(MAC头部的作用就是将数据包送到路由器中)对照过程为根据子网掩码来跟路由表中的目标地址比对如果符合则在其记录的网关列来判断,如果网关列为空则表示这个IP地址为最终目标IP地址,不为空,则对应的IP地址为需要转发的下一个路由IP地址,此时不知道其MAC地址,如果本地缓存没有则又发送ARP广播获取其MAC地址

在整个传输过程中源IP和目标IP是不变的,变换的是MAC地址,因为需要各个路由器来进行转发,到最后目标主机再一层一层拆开各个协议头获取数据。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值