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的主要内容,如果未能解决你的问题,请参考以下文章