点击一个网页链接,然后发生了什么?
本文 Github/javamap 已收录,有Java程序员进阶技术知识地图以及我的系列文章,欢迎大家Star。
基础知识补课来了!!!
首先我们认识下网页链接的组成:
例子:http://www.baidu.com/
1. http是一个应用层的协议,详细的这里不介绍。
http是一个很有意思的东东,推荐大家可以看图解系列的关于http的书,很清晰。
2. DNS解析:将www.baidu.com解析成目的IP地址,如果URL里不包含端口号,则会使用该协议的默认端口号。
在本地机器上配置网络时都会填写DNS,这样本机就会把URL发送给这个配置的DNS服务器;如果能够找到相应的URL则返回其IP,否则该DNS将继续将该解析请求发送给上级DNS,整个DNS可以看成一个树状结果,该请求将一直发送到根直到得到结果。
3. 建立socket连接
Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。
4. 请求连接成功建立后,开始向web服务器发送请求,这个请求一般是Get或Post命令(Post用于Form参数的传递))
5. 应答web服务器收到这个请求,进行处理。如果找到文件,web服务器将该内容传送给响应的Web浏览器。
6. 关闭连接
数据包在TCP/IP模型中的过程:
1. 应用层: 根据当前的需求和动作,结合应用层的协议,确定发送的数据内容,会把这些数据放到一个缓冲区内,然后形成了应用层的报文data
2. 传输层: 这些数据通过传输层发送,比如tcp协议。在该层被打上传输层的报头,主要包含端口号,以及tcp的各种制信息。
tcp是一种端到端的协议,利用这些协议,比如tcp首部的确认序号,根据这些数字,发送的一方不断的进行发送等待确认,发送一个数据段后,会开启一个计数器,只有收到确认后才会发送下一个,如果超过计数时间仍未收到确认则重发,在接受端收到错误数据,则将其丢弃,这将导致发送端超时重发。
3. 网络层:待发送的数据段送到网络层,在网络层被打包,这样封装上了网络层的报头,报头内容含有源及目的地IP地址,该层数据发送单元被称为packet。查找过程如下:
查找过程:
1. 根据目的地址,得到目的网络号,如果处在同一个内网,则可以直接发送
2. 如果不是,则查询路由器,找到一个路由
3. 如果找不到明确的路由,此时路由表中还会有默认网关,也可称为缺省网关,IP用缺省的网关地址将一个数据传送到下一个指定的路由器,所以网关也可能是路由器,也可能只是内网向特定路由器传输数据的网关。
4. 路由器接收到数据后,它再次为远程主机或网络查询路由,若还未找到路由,该数据包将发送到该路由器的缺省网关地址,而数据包中包含一个最大路由跳数。如果超过这个条数,则会丢弃数据包,这样可以防止无限传递。工作在网络层,传输层的数据对它是透明的
5. 如果上述步骤还未成功,则该数据包就不能被传送。
-- END --
日常求赞:你好技术人,先赞后看养成习惯,你的赞是我前进道路上的动力,对我非常重要。
加油技术人!
简介: 博主从华中科技大学硕士毕业,是一个对技术有追求,对生活有激情的程序员。几年间浪迹于多个一线互联网大厂,具有多年开发实战经验。
微信搜索公众号【爱笑的架构师】,我有技术和故事,等你来。
文章持续更新,在 Github/javamap 中可以看到我归档的系列文章,有面试经验和技术干货,欢迎Star。
点击一个网页链接,然后发生了什么?相关推荐
- 键入一个网页后了发生什么
面试中经常会被问到,键入一个网页后后发生什么?这是一个非常详细的帖子,http://blog.jobbole.com/84870/ 但是太详细了,如果吧啦吧啦把这些给面试官们说完,估计就到了吃午饭的时 ...
- 在html中怎么制作友情链接,如何制作一个网页链接,用描文本、友情链接交易方式教你如何制作?...
如何制作一个网页链接,用描文本.友情链接交易方式教你如何制作?作为seo优化人员如何运用外界链接开展百度搜索引擎提升?下面和小编一起看看! 1.锚点链接链接应该是有关的 优先,百度搜索引擎提升锚点链接 ...
- 纠结了一晚上的问题---点击导航栏的一个文本链接后所有导航栏文本链接颜色都变成访问过的颜色了
代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3. ...
- ios App加载网页,点击网页链接调用App处理
一.如何在APP里加载本地html文件内容: 首先准备一个html文件,比如内容如下: <html> <head><meta http-equiv="Conte ...
- 流量互点PHP源码,点击量软件-求一个网页可以增加流量的软件?要释放。 。 。自由...
求一个网页可以增加流量的软件?要释放. . .自由. 点击量软件好吧,我告诉你,流量是不同的IP地址缓存清理可以 建议您使用下无敌点击软件上的狗,它可以提高页面点击数"无敌点击狗" ...
- ios html转换成网页,ios App加载本地HTML网页,点击网页链接跳转到app页面的方法
一.如何在APP里加载本地html文件内容: 首先准备一个html文件,比如内容如下: title go to app 接下来,在APP里定义一个UIWebView,用来显示html文件内容: //定 ...
- 软件测试面试题:在一个页面上,点击一个链接之后不会在当前页面上打开此链接而是新开一个窗口打开此页面。
在一个页面上,点击一个链接之后不会在当前页面上打开此链接而是新开一个窗口打开此页面. Selenium也提供了对应的API来处理.简述这个查找新窗口的过程.参考答案:1)首先需要了解下,每个窗口都是有 ...
- python如何提取网络链接_Python网络爬虫——把一个网页中所有的链接地址提取出来(去重)...
# 把一个网页中所有的链接地址提取出来. 运行环境Python3.6.4-实现代码:import urllib.request import re #1. 确定好要爬取的入口链接 url = &quo ...
- html点击按钮弹出悬浮窗_9种实现点击一个链接弹出一个小窗口的代码
9 种实现点击一个链接弹出一个小窗口的代码 因为着是一段 javascripts 代码, 所以它们应该放在之间. 是对一些版本低的浏览器起作用,在这些老浏览器中不会将 标签中的代码作为文本显示出来.要 ...
最新文章
- python学习笔记(九)——文件和异常(重点)
- 新版本springboot-整合多数据源拆分思路
- stylus导入时 报错These relative modules were not found
- 验证gpu版pytorch是否可用
- ROS launch文件
- spring集成mybatis后,打印SQL语句
- 猜数游戏python_零基础掌握Python入门到实战
- 天猫精灵X1获德国红点设计大奖
- [置顶] Lucene开发实例(一般企业搜索平台完全够用全程)
- tensorflow 相关的 warning
- 在sublime text 3中让.vue文件的内容变成彩色
- Windows下cuDNN7.6.4下载安装详细步骤
- 内容创作者周刊:第4期
- jQuery到Vue的迁移之路
- 搭档之家:14天1.5万人民币!悉尼将征收入境隔离费
- 人文讲座之《阳明心学与今日中国》
- 【羊了个羊】什么!第二关难如上青天,能不能简单版??
- ThreeJs中给立方体设置没有对角线的border
- T40之小黑不能充电记
- 微信小程序 表情小作坊 — 轻松定制表情包 1