一、事前准备

在进行网络通信前,本机需要知道四个参数分别是:

  • 本机的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并按下回车的那一刻发生了什么?相关推荐

  1. 从输入URL到页面加载完成都发生了什么

    1.浏览器的地址栏输入URL并按下回车. 1.)名词解释 举个栗子:https://www.baidu.com/send 这个域名由三部分组成:协议名.域名.端口号,这里端口是默认所以隐藏,后边还可以 ...

  2. 在浏览器中输入URL按下回车键后发生了什么

    在浏览器中输入URL按下回车键后发生了什么 [1]解析URL [2]DNS查询,解析域名,将域名解析为IP地址 [3]ARP广播,根据IP地址来解析MAC地址 [4]分别从应用层到传输层.网络层和数据 ...

  3. 从输入 URL 到浏览器接收的过程中发生了什么事情

    从输入 URL 到浏览器接收的过程中发生了什么事情? 原文:http://www.codeceo.com/article/url-cpu-broswer.html 从触屏到 CPU  首先是「输入 U ...

  4. 在浏览器里,从输入 URL 到页面展示,这中间发生了什么?-学习笔记

    参考来源:极客时间-李兵专栏 从图中可以看出,整个过程需要各个进程之间的配合,浏览器进程.渲染进程和网络进程的职责如下: 浏览器进程主要负责用户交互.子进程管理和文件储存等功能. 网络进程是面向渲染进 ...

  5. 【前端问题分析】从输入 URL 到浏览器接收的过程中发生了什么事情?

    从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器,目前大多是基于电容(Capacitive)来实现的,以前都是直接 ...

  6. 从输入 URL 到浏览器接收的过程中发生了什么事情?

    写得很全面,有待进一步展开.. 从触屏到 CPU 首先是「输入 URL」,大部分人的第一反应会是键盘,不过为了与时俱进,这里将介绍触摸屏设备的交互. 触摸屏一种传感器,目前大多是基于电容(Capaci ...

  7. 一个页面从输入URL到加载显示完成,发生了什么?

    面试经典题--URL加载 一.涉及基本知识点: 1. 计算机网络 五层因特尔协议栈: 应用层(dns.http):DNS解析成IP并完成http请求发送: 传输层(tcp.udp):三次握手四次挥手模 ...

  8. html页面返回原理,浏览器输入URL到界面显示(HTML渲染)发生了什么?

    浏览器从输入URL到界面显示一共经历了6个阶段 1. DNS(域名)解析 2. TCP连接(三次握手) 3. 发送HTTP请求 4. 服务器处理请求并返回HTTP报文 5. 浏览器解析渲染页面 6.  ...

  9. 键入网址再按下回车,后面究竟发生了什么?

    说明<透视HTTP协议>是 罗剑锋 (奇虎360技术专家)在极客时间开的一门专栏课,笔者记录一下学习笔记,仅供参考. 经过上一讲的学习,你是否已经在自己的电脑上搭建好了"最小化& ...

最新文章

  1. 关于60枚一分两分五分硬币凑成一块钱的解决方法
  2. version.dll劫持注入模版
  3. 字符在计算机中是如何表示的?
  4. 分子生物学-氨基酸电中性与肽键
  5. 树链剖分概念及模板 + 例题 [POJ3237 tree + 软件包管理器]
  6. 【Pytorch神经网络基础理论篇】 02 pytorch环境的安装
  7. MQ中将消息发送至远程队列的配置
  8. SQL 内置排名函数 DENSE_RANK
  9. centos安装rabbitmq_SpringCloud之RabbitMQ安装
  10. Atitit 项目管理 提升开发效率的项目流程方法模型 哑铃型  橄榄型 直板型
  11. 内存模型与C++ 内存序
  12. 计算机中rom的意思是什么,ROM 是什么意思
  13. eureka相同服务名注册多个不同服务
  14. 数据库查询简单练习(五)
  15. 教你六种方式实现聊天室
  16. ElementUI级联框回显问题
  17. 需求分析——什么是需求分析?
  18. 这5个app一定能让你的生活变得五颜六色!有趣的人手机上都装有哦
  19. 用NERO刻录ISO等镜像光盘的方法
  20. 汉字乱码状态下的编码转换将导致的问题

热门文章

  1. 以太坊web3.js文档翻译及说明
  2. 如何利用Webp和http缓存节省30%的网络流量
  3. 将Java项目从maven迁移到gradle
  4. js中函数参数值传递和引用传递
  5. centos7 host修改
  6. 最少拦截系统 贪心
  7. 产品经理应聘之感受漫谈
  8. apache-tomcat集成,转帖
  9. 面向模式的分析和设计(POAD)
  10. S5PV210体系结构与接口05:时钟系统编程