在浏览器中输入www.baidu.com后执行的全部过程:
浏览器干活:
- 浏览器对用户输入的网址做初步的格式化检查,只有通过以上检查才会进入下一步。
- 然后增加协议类型,默认是http,所以浏览器自动补充为http://www.baidu.com
应用层干的事:
- DNS解析,将域名转化为ip。dns解析过程:先从DNS缓存取,然后到本地hosts文件取,如果还没有去DNS服务器查询
- 应用层处理数据,指定请求ip和响应ip,然后将打包后的数据发送给传输层。
传输层要干的事:
- 接收应用层发送的数据,然后对数据做分段处理
- 并添加源和目的端口。源端口用于后期服务器返回报文的接收端口,目的端口是发送报文的指定端口
- 将报文段发送给网络层,同时提供错误控制、流量控制和确认服务
网络层要干的事:
- 网络层判断是否需要分片,需要的话进行分片;并且对数据进行进一步的封装和处理;
- 路由器根据目的端ip通过查找路由表决定到达服务器的网络路径
链路层的工作
- 接收网络层的数据,然后进行ARP解析,获取目的ip对应的mac地址
- 将数据发送到路由器进入网络,将数据发送给对应mac地址的网卡
然后服务器链路层、网络层和传输层和应用层接收数据,处理后的结果数据再逆向发送给请求端
上面描述的是一次完整的请求和响应的过程,但是一个完整的http会话包括如下内容:
三次握手建立连接,客户端发送具体请求,服务器处理,服务器具体响应返回,四次挥手关闭连接
说明:上面的步骤为个人总结,不对之处请指正
ARP(地址解析协议)的工作原理
ARP是链路层的协议
1.首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
2.当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。
3.当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
4.源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败
RARP逆地址解析协议
RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。工作流程:在网络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到网络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应报文中发回给请求者。因为需要广播请求报文,因此RARP只能用于具有广播能力的网络。
ARP是哪层的协议
TCP/IP模型:ARP协议属于TCP/IP协议簇,在TCP/IP模型中,它所有定义的协议是在网际层上的,所以此时ARP是网络层
OSI模型:数据在传递时每层会加上自己的信息。当网络层的IP包进入链路层时,链路层通过ARP协议获取mac地址并添加链路信息,而这不是网络层的功能。所以此时ARP是属于链路层的
可以这样说,在OSI模型中ARP协议属于链路层;而在TCP/IP模型中,ARP协议属于网络层。其实从ARP的使用角度看其在链路层中更加合理。
原文:https://blog.csdn.net/ysdaniel/article/details/6785257