美文网首页
输入一个网址后

输入一个网址后

作者: 杨剑锋 | 来源:发表于2020-11-03 11:12 被阅读0次

我们先来看看一个网址由什么组成:

http/https   +   ://  + web.com/cn/net...  +/ + 目录名  + / + ... + 文件名

所以其实一个网址是可以拿到一个远程计算机的某个文件资源的一个地址。当然这也需要一个解析才能拿到真正的地址位置,这个时候,就需要dns出场了。

dns的作用就是根据域名来获取真正的ip地址。我们从网址可以看到,域名都是用句号来分隔开的,这里的句号隔开的代表的就是不同层级的界限,越后面层级也就越高。一般来说,有根域,com/cn/net之类的顶级域dns服务器,具体到baidu.com,google.com之类的权威dns服务器,呈树状的,然后一层层往下可以遍历。

而浏览器所在的客户端,先是从本地dns服务器看看缓存里面有没有,有就直接找到ip地址的了。没有就到根域,然后就可以一层一层玩下找到匹配的域名,获得ip地址。拿到了ip地址,浏览器通过调用系统socket库等方法委托协议栈工作,这个时候数据就到了传输层的tcp(http,http1.1,http 2)/udp(http3)这里。

目前的http一般都是基于tcp的,所以简历连接前,先要进行三次握手


image.png

服务器处于listen状态,客户端发起连接请求syn,然后状态变为syn-send。

服务器收到syn,返回一个ack以及一个syn,并把状态变更为syn-recv。从这里服务器可以确定客户端的发送和服务器的接收功能没问题,现在服务器还需要确认客户端的接收以及服务器自身的发送有没有问题。

客户端收到服务器的syn和ack,状态变为establish,然后发一个ack到服务器。这里客户端可以确定服务器的发送和接收能力没问题,客户端自己的发送接收也正常,所以状态为建立连接。现在要做的就是让服务器知道客户端的接收和服务器的发送没问题,所以需要再给一个ack给服务器。

服务器收到ack,全双工都正常确定了,所以也变成establish。所以三握的根本目的就是确保双方确定对方和自己都能正常收发。

建立连接后就开始进行正常数据收发了,但是如果数据比较大,加上tcp包头和ip头部的数据超过了MTU(一个网络包的最大长度,一般是1500字节)那么tcp会进行切割,切割后的数据加上包头,一个个包进行传输。
每个包加上tcp包头,到ip层,加ip包头,也就是源地址ip和目标地址ip还有协议号06(tcp)到mac层。
mac层通过arp查询到对方的mac地址,加上发送方的mac地址组成mac包头。之后就是调用网卡驱动程序驱动网卡,最后会转换为电信号顺着网线发送出去。发送到交换机再转成数字信号,再到路由器。路由器和交换机的区别是路由器带mac地址。
到对方服务器就是一层一层包头,然后解析得到需要的信息。

解析后,服务器逻辑根据请求进行相应的业务处理,返回发送数据,流程和刚刚一样。最后进行四次挥手断开连接。

相关文章

  • 输入一个网址后

    我们先来看看一个网址由什么组成: 所以其实一个网址是可以拿到一个远程计算机的某个文件资源的一个地址。当然这也需要一...

  • 前端必会的http基础

    一、输入一个网址后都发生了什么 输入网址并回车,浏览器检查网络是否连通2、解析域名(访问DNS服务器)3、浏览器发...

  • DNS域名解析流程

    我们上网时经常在网址栏输入www.xxx.com来访问一个网址,我们在网址上输入的是一个域名,但严格来讲这并不...

  • 当在浏览器输入一个网址后,实际会发生什么?

    那么,输入网址后,实际发生了什么呢?过程如下: 1、输入网址。 2、浏览器查找域名的IP地址。 导航的第一步是通过...

  • 输入网址后发生了什么

    用户打开浏览器,输入 baidu.com,页面展示百度首页。整个过程发生了什么 总述 1、输入网址。2、浏览器查找...

  • 浏览器输入网址后

    https://juejin.cn/post/7041739903431868430[https://juejin...

  • URL和URI浅理解

    有时大家会误以为URL就是网址,其实这是不准确的,在模糊的概念中输入网址后会出现一个页面,为什么输入网址就可以找到...

  • angularjs 路由重定向

    1,解决的问题,当你的网址出现变更,如果用户收录的还是你之前的旧网址,那么当用户输入旧的网址可否能访问你变更后的新...

  • 从url到页面的流程

    当用户在浏览器网址中输入一个网址到打开这个页面浏览器所发生的行为 第一步:用户输入网址(url) 第二步:DNS进...

  • VC++仿IE地址栏网址自动填充功能的提示框,适用开发者需求

    大家在上网的时候,在地址栏输入网址,IE会从已存在的网址列表中自动匹配你未输入完的网址,省去用户输入的麻烦,现在这...

网友评论

      本文标题:输入一个网址后

      本文链接:https://www.haomeiwen.com/subject/rfcmvktx.html