网络数据包传送的过程和DNS过程

网络数据包传送的过程


在整个数据报传输过程当中,

发送:
发送端进程首先调用系统调用,然后把数据发送给了socket,然后socket检查数据类型,调用系统调用send函数,send函数检查socket的状态,协议类型,传给了传输层,传输层对应的协议(UDP或者是TCP为这些数据创建数据结构),然后加入对应的传输层协议头部,然后交付给网际层,IP层,IP层加上它的头部,例如ip地址和检验和。然后决定是否分片,然后向下交付给数据链路层,数据链路层进行封装目的MAC和源MAC以及CRC校验。然后网卡调用中断驱动程序,发送到网络当中去。

接受:
数据报从网络中到达网卡,然后网卡接收到数据帧,放入网卡的缓存当中,向系统发送中断请求,执行中断处理程序,从网卡缓存当中读取到数据放入内存当中,然后把数据交给数据链路层,数据链路层进行解包,向上传递,IP层在对这个数据包进行差错检验等,此时如果是要接受的就向上层进行传递,如果不是,那么就丢弃或者转发,到达传输层,进行对应协议交付解包,然后向上到达应用层,交付给对应的协议,放入socket接受队列当中,然后接收的进程进行系统调用,获得数据,拷贝至进程缓冲区。然后返回用户态。

DNS请求过程


  1. 我们从一台主机去访问 www.baidu.com,需要首先知道IP地址,这样我们就需要通过域名解析,PC1首先发出DNS请求,查找www.baidu.com对应的ip。(域名和唯一的ip地址对应这)
  2. 如果此时发现不在同一个网络,就需要通过路由设备转发,这个时候首先通过ARP请求,得到路由器的ip,然后把DNS请求封装成以太网帧发送给路由器。
  3. 路由器收到以太网帧,然后转发给DNS服务器,这个过程当中路由器可能需要发送ARP请求,得到DNS服务器的MAC地址。
  4. 当DNS收到DNS请求,然后这个时候就会把 www.baidu.com 的ip地址发送给路由器,然后路由器再进行转发给PC1
  5. PC1最终收到目的ip地址。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值