输入url并按下回车的那一刻发生了什么?
一、事前准备
在进行网络通信前,本机需要知道四个参数分别是:
- 本机的IP地址
- 子网掩码
- 网关的IP地址
- DNS的IP地址
这四个参数通常在开机时,通过DHCP服务器获取,该过程遵循DHCP协议,该协议建立在UDP协议的基础之上。基于DHCP协议的参数获取流程如下:
发送标头:本机MAC地址和接收方MAC地址:FF-FF-FF-FF-FF-FF,本机IP:0.0.0.0和接收方IP:255.255.255.255。发送端口:68和接收端口:67
发送方式:通过以太网以广播的形式发送,即该子网中的每个计算机都会收到这个数据包。
处理方式:每个收到数据报的每个计算机会先核对MAC地址,由于地址为FF-FF-FF-FF-FF-FF无法判断,继而核对IP地址,发现与本机不吻合则丢弃。而DHCP服务器也会进行同样的判断,吻合接收该数据包,然后发送向该MAC地址发送,标头:本机MAC地址和接收方MAC地址,发送方IP和接收方IP:255.255.255.255。发送端口:67和接收端口:68。DATA部分:发出请求计算机的IP,子网掩码,网关IP,DNS的IP等。
二、域名解析
经过上一个步骤拿到具体的参数后。这时在浏览器中输入一个网址后,会根据上个步骤拿到的DNS服务器的地址,按DNS协议发一份DNS请求,DNS服务器则会根据根据网址查找对应的IP地址并返回给我们。
拿到IP地址后,本机会拿返回的IP地址与子网掩码做一个二进制的AND运算(两个数位都为1,结果为1,否则为0),并拿本机的IP地址与子网掩码进行二进制的AND运算。然后比较两者的结果是否相等,如果相等则表明要访问的网址与本机在同一个子网络中,此时采取以太网广播的形成进行通信,如果不同则通过网关进行通信。
三、建立通信
经过上一步域名解析如果判断在同一子网中,则采用下面的通信方式:
该通信方式采用以太网广播的形式进行通信,同一子网络的所有计算机都会拿到数据包,并根据MAC地址判断自己是不是接收方,是则打开不是则丢弃。那么如何获得对方的MAC地址呢?这就要用到ARP协议来得到对方的MAC地址。ARP协议也是发出一个数据包(包含在以太网数据包中),其中包含它所要查询主机的IP地址(通过上一步的DNS解析得到),在对方的MAC地址这一栏,填的是FF-FF-FF-FF-FF-FF,表示这是一个"广播"地址。它所在子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的IP地址进行比较。如果两者相同,都做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。这样就可以得到对方的MAC地址了。之后就可以根据MAC地址来进行通信了。
如果不在同一子网中:
这时发送的数据包地址包含网关的MAC地址,和对方的IP地址,网关的MAC地址可以用已有的网关的IP地址拿到。这个时候采用路由的通信方式。会基于内部维护的路由表来查询应该转发给谁,路由表是根据 ip 地址来查询的。
输入url并按下回车的那一刻发生了什么?相关推荐
- 从输入URL到页面加载完成都发生了什么
1.浏览器的地址栏输入URL并按下回车. 1.)名词解释 举个栗子:https://www.baidu.com/send 这个域名由三部分组成:协议名.域名.端口号,这里端口是默认所以隐藏,后边还可以 ...
- 在浏览器中输入URL按下回车键后发生了什么
在浏览器中输入URL按下回车键后发生了什么 [1]解析URL [2]DNS查询,解析域名,将域名解析为IP地址 [3]ARP广播,根据IP地址来解析MAC地址 [4]分别从应用层到传输层.网络层和数据 ...
- 从输入 URL 到浏览器接收的过程中发生了什么事情
从输入 URL 到浏览器接收的过程中发生了什么事情? 原文:http://www.codeceo.com/article/url-cpu-broswer.html 从触屏到 CPU 首先是「输入 U ...
- 在浏览器里,从输入 URL 到页面展示,这中间发生了什么?-学习笔记
参考来源:极客时间-李兵专栏 从图中可以看出,整个过程需要各个进程之间的配合,浏览器进程.渲染进程和网络进程的职责如下: 浏览器进程主要负责用户交互.子进程管理和文件储存等功能. 网络进程是面向渲染进 ...
- 【前端问题分析】从输入 URL 到浏览器接收的过程中发生了什么事情?
从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器,目前大多是基于电容(Capacitive)来实现的,以前都是直接 ...
- 从输入 URL 到浏览器接收的过程中发生了什么事情?
写得很全面,有待进一步展开.. 从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器,目前大多是基于电容(Capaci ...
- 一个页面从输入URL到加载显示完成,发生了什么?
面试经典题--URL加载 一.涉及基本知识点: 1. 计算机网络 五层因特尔协议栈: 应用层(dns.http):DNS解析成IP并完成http请求发送: 传输层(tcp.udp):三次握手四次挥手模 ...
- html页面返回原理,浏览器输入URL到界面显示(HTML渲染)发生了什么?
浏览器从输入URL到界面显示一共经历了6个阶段 1. DNS(域名)解析 2. TCP连接(三次握手) 3. 发送HTTP请求 4. 服务器处理请求并返回HTTP报文 5. 浏览器解析渲染页面 6. ...
- 键入网址再按下回车,后面究竟发生了什么?
说明<透视HTTP协议>是 罗剑锋 (奇虎360技术专家)在极客时间开的一门专栏课,笔者记录一下学习笔记,仅供参考. 经过上一讲的学习,你是否已经在自己的电脑上搭建好了"最小化& ...
最新文章
- 关于60枚一分两分五分硬币凑成一块钱的解决方法
- version.dll劫持注入模版
- 字符在计算机中是如何表示的?
- 分子生物学-氨基酸电中性与肽键
- 树链剖分概念及模板 + 例题 [POJ3237 tree + 软件包管理器]
- 【Pytorch神经网络基础理论篇】 02 pytorch环境的安装
- MQ中将消息发送至远程队列的配置
- SQL 内置排名函数 DENSE_RANK
- centos安装rabbitmq_SpringCloud之RabbitMQ安装
- Atitit 项目管理 提升开发效率的项目流程方法模型 哑铃型 橄榄型 直板型
- 内存模型与C++ 内存序
- 计算机中rom的意思是什么,ROM 是什么意思
- eureka相同服务名注册多个不同服务
- 数据库查询简单练习(五)
- 教你六种方式实现聊天室
- ElementUI级联框回显问题
- 需求分析——什么是需求分析?
- 这5个app一定能让你的生活变得五颜六色!有趣的人手机上都装有哦
- 用NERO刻录ISO等镜像光盘的方法
- 汉字乱码状态下的编码转换将导致的问题