从浏览器访问http://www.sina.com.cn的全过程

文 | 东临瑞     图 | 网络(侵删)

DNS域名解析

①浏览器先在本地host文件中查找,如果查找到了该www.sina.com.cn主机到相应IP地址的映射条目,则域名解析成功。

②如果没有找到对应的映射,则请求本地所配置的DNS服务器,如果本地的DNS服务器缓存了www.sina.com.cn主机对应的IP地址的信息,则本地DNS服务器返回相关数据,域名解析成功。

③如果没有找到对应的IP地址的信息,浏览器递归查找DNS服务器,服务器进行迭代查找,直到找到www.sina.com.cn主机对应的IP地址的信息,然后返回结果到浏览器,没有找到的话域名解析失败。

递归查找的过程:

浏览器先向DNS服务器发出DNS请求,目的是获取www.sina.com这个域名所对应的IP地址;

浏览器向本机DNS模块发出DNS请求,DNS模块生成相关的DNS报文;接着,DNS模块将生成的DNS报文传递给传输层的UDP协议单元;UDP协议单元将该数据封装成UDP数据报,传递给网络层的IP协议单元;IP协议单元将该数据封装成IP数据包,其中目的IP地址为DNS服务器的IP地址;封装好的IP数据包将传递给数据链路层的协议单元进行发送;发送时如果ARP缓存中没有相关数据,则发送ARP广播请求,等待ARP回应;

数据链路层的作用范围是局域网,那么其MAC地址肯定是局域网内某台机器的MAC地址。并且ARP协议的作用范围也是局域网。但是IP数据包的目的地址未必都是局域网内的,如果不是,在局域网内进行ARP广播查询该IP地址对应的MAC地址,肯定没有人回应,因为大家谁都没有这个IP地址。

使用子网掩码就可以确定IP地址是不是同一个局域网里的。如果是同一个局域网,那么就可以进行ARP。如果不是,这就要靠网络层了。路由表不是只在路由器上才有的,本机上也有,而且也有路由过程。

默认路由路径(因为任何一个IP地址 AND 0.0.0.0 后肯定都是 0.0.0.0 的)意思就是:如果其他路由项都不符合,则发送到默认网关。默认情况下,windows机器不会充当路由器的功能,它不会转发(forward)自己接受到的但是目的地址不是自己的包。但是这是可以设置的,通过开启路由转发功能,就能充当一个路由器了。这样,局域网中另一台机器就可以把默认网关设置为你的IP,然后他的所有到外网的包都先交给你,然后你再路由转发出去。

IP地址转换到MAC地址的过程如下:

 ①首先得到IP包需要送达的目的地址IP-des ;

 ②查路由表,根据匹配IP-des 的路由表项得到下一跳(next hop)的中间目的地址IP-next (可以保证IP-next 是局域网中的地址);

 ③在ARP缓存中查找IP-next 对应的MAC地址,如果缓存中没有,再到局域网中使用ARP协议进行询问;得到了MAC地址后,将MAC地址放到帧头,发送数据。

当得到ARP回应后,将IP地址与路由下一跳MAC地址对应的信息写入ARP缓存表;写入缓存后,以路由下一跳地址填充目的MAC地址,并以数据帧形式转发;因为DNS服务器在网络中的位置不同,所以这个转发过程可能会进行多次;

DNS请求被发送到DNS服务器的数据链路层协议单元;DNS服务器的数据链路层协议单元解析收到的数据帧,将其内部所含有的IP数据包传递给网络层IP协议单元;DNS服务器的IP协议单元解析收到的IP数据包,将其内部所含有的UDP数据报传递给传输层的UDP协议单元;DNS服务器的UDP协议单元解析收到的UDP数据包,将其内部所含有的DNS报文传递给该服务器上的DNS服务单元;DNS服务单元收到DNS请求,将域名解析为对应的IP地址,产生DNS回应报文;

(所有应用层报文必须通过传输层、网络层和数据链路层,其中 网络层主要任务是路由,而数据链路层是提供相邻两个网络实体间端到端的数据传输,可以理解成为局域网内两台机器间的数据传输。下面的过程就不再像之前那样赘述,尽量简写了。)

DNS回应报文→UDP→IP→MAC→→请求域名解析的主机;

请求域名解析的主机收到数据帧,该数据帧→IP→UDP→DNS→浏览器;

将域名解析的结果以域名和IP地址对应的形式写入本地DNS缓存表。

浏览器与www.sina.com.cn建立TCP连接

浏览器根据地址类型(IPv4,IPv6),套接字类型(SOCK_STREAM、SOCK_PACKET),协议类型(UDP,TCP)创建套接字(socket(int domain, int type,

int protocol)),并绑定一个地址(IP+端口号),然后监听该端口(listen()),现在服务器端处于监听状态。客户端用服务器IP地址和应用端口号创建一个套接字作为请求的套接字,调用connection函数(这里会为客户端创建一个套接字,客户端IP地址+任意分配的端口号)试图请求连接(整个连接过程就是三次握手的过程)。

浏览器向www.sina.com.cn发出TCP连接请求报文:

  该请求TCP报文中的SYN标志位被设置为1,表示连接请求;

  该TCP请求报文→IP(DNS)→MAC(ARP)→→网关→→www.sina.com.cn主机;

  该TCP请求报文经过IP层时,填入的目的IP地址就是上面DNS过程获得的IP地址;

  经过数据链路层时,若MAC地址不明,还要进行上面所叙述的ARP过程;

  www.sina.com.cn收到的数据帧→IP→TCP,TCP协议单元会回应请求应答报文;

  该请求应答TCP报文中的SYN和ACK标志位均被设置为1,表示连接请求应答;

  该TCP请求应答报文→IP→MAC(ARP)→→网关→→请求主机;

  请求主机收到数据帧→IP→TCP,TCP协议单元会回应请求确认报文;

  该请求应答TCP报文中的ACK标志位被设置为1,表示连接请求确认;

  该TCP请求确认报文→IP→MAC(ARP)→→网关→→www.sina.com.cn主机;

  www.sina.com.cn收到的数据帧→IP→TCP,连接建立完成;

  在这个过程中,任何一个报文出错或超时,都要进行重传;

  这个过程被称为TCP建立连接的三次握手

浏览器开始HTTP访问过程

IE浏览器向www.sina.com.cn发出HTTP-GET方法报文:

  该HTTP-GET方法报文→TCP→IP→MAC→→网关→→www.sina.com.cn主机;

  www.sina.com.cn收到的数据帧→IP→TCP→HTTP,HTTP协议单元会回应HTTP协议格式封装好的HTML超文本形式数据;

  HTTP-HTML数据→TCP→IP→MAC(ARP)→→网关→→请求主机;

  请求主机收到的数据帧→IP→TCP→HTTP→浏览器,浏览器会以网页形式显示HTML超文本,就是我们所看到的网页。

断开TCP连接

浏览器向www.sina.com.cn发出TCP连接结束请求报文:

  该请求TCP报文中的FIN标志位被设置为1,表示结束请求;

  该TCP结束请求报文→IP→MAC(ARP)→→网关→→www.sina.com.cn主机;

  www.sina.com.cn收到的数据帧→IP→TCP,TCP协议单元会回应结束应答报文;

  该结束应答TCP报文中的FIN和ACK标志位均被设置为1,表示结束应答;

  该TCP结束应答报文→IP→MAC(ARP)→→网关→→请求主机;

  这个过程需要双向进行,因此www.sina.com.cn主机也会按上述流程再做一次;

  整个过程被称为TCP断开连接的四次握手。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,425评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,058评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,186评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,848评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,249评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,554评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,830评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,536评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,239评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,505评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,004评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,346评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,999评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,060评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,821评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,574评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,480评论 2 267

推荐阅读更多精彩内容

  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 12,979评论 6 174
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,019评论 0 8
  • 引 打开浏览器,在地址栏输入URL,回车,出现网站内容。这是我们几乎每天都在做的事,那这个过程中到底是什么原理呢?...
    Cloudox_阅读 2,764评论 0 1
  • 假设访问新浪主页。 1.若DNS缓存中没有相关数据,则IE浏览器先向DNS服务器发出DNS请求:这一过程的目的是获...
    Trsfroid阅读 518评论 0 0
  • 在华中科技大学校园网下,在IE输入www.taobao.com之后的过程详解 1.本地过程 若DNS缓存中没有相关...
    DecadeHeart阅读 6,125评论 0 4