011-通过网络协议解析网络请求-DNS-ARP-TCPIP

Posted bjlhx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了011-通过网络协议解析网络请求-DNS-ARP-TCPIP相关的知识,希望对你有一定的参考价值。

一、概述

1.1、tcp/ip概述

  TCP/IP不是一个协议,而是一个协议族的统称。里面包括IP协议、IMCP协议、TCP协议。跨越了多层模型的多层

  TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用层,这里面有http,ftp,等等我们熟悉的协议。而第二层则是传输层,著名的TCP和UDP协议就在这个层次。第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标。第四层是数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。

    技术图片     

1.2、数据协议封装过程

  技术图片

  上图清楚地表示了TCP/IP协议中每个层的作用,而TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程。入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地。出栈的过程,数据接收方每层不断地拆除首部与尾部,得到最终传输的数据。

  技术图片

1.3、数据链路层

  物理层负责0、1比特流与物理设备电压高低、光的闪灭之间的互换。 数据链路层负责将0、1序列划分为数据帧从一个节点传输到临近的另一个节点,这些节点是通过MAC来唯一标识的(MAC,物理地址,一个主机会有一个MAC地址)。

    技术图片

  • 封装成帧: 把网络层数据报加头和尾,封装成帧,帧头中包括源MAC地址和目的MAC地址。
  • 透明传输:零比特填充、转义字符。
  • 可靠传输: 在出错率很低的链路上很少用,但是无线链路WLAN会保证可靠传输。
  • 差错检测(CRC):接收者检测错误,如果发现差错,丢弃该帧。

 

 

 

1.4、如果发生网络请求,如:get http://jd.com/auth/user/currentUser.以下叙述其过程

应用层

1、DNS(53):

  输入的是一个URL需要转化成IP地址。首先我们知道我们本地的机器上在配置网络时都会填写DNS,这样本机就会把这个url发给这个配置的DNS服务器,如果能够找到相应的url则返回其ip,否则该DNS将继续将该解析请求发送给上级DNS,整个DNS可以看做是一个树状结构,该请求将一直发送到根直到得到结果。

2、http(80)

  主要职责是生成针对目标web服务器的http请求报文(请求行、请求头部)

传输层

3、TCP

  将http请求报文分割成报文段,按序号分为多个报文段。(三次握手四次挥手)

网络层

4、ICMP

  辅助IP协议的协议

5、IP

  搜索目标的地址,一边中转一边传送。(路由)

6、ARP

  因为最终都要在数据链路层上进行传输,而数据链路层并不认识IP地址,所以ARP的职责就是把IP地址转换成数据链路层认识的MAC地址。

接下来到了数据链路层,把网络层交下来的IP数据报添加首部和尾部,封装为MAC帧,现在根据目的mac开始建立TCP连接,三次握手,接收端在收到物理层上交的比特流后,根据首尾的标记,识别帧的开始和结束,将中间的数据部分上交给网络层,然后层层向上传递到应用层;

通过数据链路层到达目标机器之后。

网络层

7. RARP

  这其实是ARP的逆过程,将MAC地址转换成Ip地址

传输层

8. TCP

将接收到的报文段按序号进行重组。

应用层

9、HTTP

HTTP协议对http请求进行解析处理。这里以javaweb为例:

  

 

    

 

以上是关于011-通过网络协议解析网络请求-DNS-ARP-TCPIP的主要内容,如果未能解决你的问题,请参考以下文章

RPC协议解析

OKHttp源码解析之网络请求

带你一步步剖析Retrofit 源码解析:一款基于 OkHttp 实现的网络请求框架

通过Wireshark抓取直连设备的IP地址

ARP 协议

RPC原理解析