浏览器收到URL时(例如: http://www.joes-hardware.com:80/power-tools.html), 会执行如下所示的步骤:

1. 浏览器解析出主机名 即:www.joes-hardware.com

2. 浏览器查询这个主机名的IP地址 (DNS: 202.43.78.3)

3. 浏览器获得端口号 (80)

4. 浏览器发起到202.43.78.3端口80的连接

5. 浏览器向服务器发送一条HTTP GET报文

6. 浏览器从服务器读取HTTP响应报文

7. 浏览器关闭连接

(以上内容摘自HTTP权威指南)

用户输入网址后到收到网页,客户端需要发送三次数据

1. DNS解析 www.163.com对应的IP,
2. 发起tcp三次握手连接,建立TCP/IP连接完成后,进入3步。
3. 发出http请求主页包。
4. browser显示html结果。

首先对URL有一个初步认识,把URL分割成几个部分:协议、网络地址、资源路径。其中网络地址指示该连接网络上哪一台计算机,可以是域名或者IP地址,可以包括端口号;协议是从 该计算机获取资源的方式,常见的是HTTP、FTP,不同协议有不同的通讯内容格式;资源路径指示从服务器上获取哪一项资源。
例如:http://www.guokr.com/question/554991/
协议部分:http
网络地址:www.guokr.com
资源路径:/question/554991/

1. 在浏览器的地址栏输入网址以后, 首先要获得网址所对应的IP地址, 即进行DNS域名解析。 具体过程如下:

首先,客户端的应用层会封装数据到达传输层,在传输层标识源端口号与目的端口号(源端口号为大于1023随机,目的端口号为UDP53端口)及应用层服务(这里因该是请求DNS查询服务吧)。传输层封装数据产生数据段传给网络层,在网络层标识源IP地址及目的IP地址(源IP 地址为客户端IP,目的IP地址为DNS服务器IP地址),网络层将数据段封装为数据包传给数据链路层,在数据链路层将会在数据包里加入源MAC地址及目 的MAC地址(源MAC地址为客户端网卡MAC地址,目的MAC地址为DNS服务器MAC地址),这里应该查询MAC缓存。数据链路层根据客户端与DNS 服务器之间的链路,将数据包封装成帧,传给物理层。物理层会将数据帧转化为电信号放到物理介质上。
电信号到达DNS服务器后会从物理层到达应用层(这里和客户端发送数据差不多,只不过这个过程变成了解封装),DNS服务器做完域名解析会得到 www.163.com所对应的IP地址218.92.221.212,(可以通过ping方式获取网址的IP地址,例如:ping www.163.com) 然后按照同样的方式再将数据返回给客户端。

2. 客户端得到IP地址以后, 会根据所获得的IP地址以及要访问的端口号发起网络连接, 即tcp三次握手连接, 建立起TCP/IP网络连接, 具体过程如下:

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器 进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED状态,完成三次握手。
通过这样的三次握手,客户端与服务端建立起可靠的双工的连接,开始传送数据。

3. 建立起连接以后, 客户端会根据HTTP协议组织一个请求的数据包发送给Web服务器, 具体过程如下:

应用层标识HTTP服务将数据发送到传输层,传输层将数据+源端口号(大于1023)、目的端口号(80)+上层服务WWW封装为数据段传给网路层。网络层将数据段+源ip与目的ip(WWW服务器的ip地址)封装为数据包发送到数据链路层。数据链路层参照ARP缓存表确定源MAC地址(本机MAC地址) 及目的MAC地址(客户端与路由B相连端口的MAC地址)将数据包封装成数据帧。这里还需要CRC校验。。。。。。数据帧到达物理层后变成电信号发送到介质上(这里还需要访问控制方法CSMA/CD)。

4. 服务器响应请求,将数据返回给浏览器。数据可能是根据HTML协议组织的网页,里面包含页面的布局、文字。数据也可能是图片、脚本程序等。然后浏览器再将接收到的内容显示出来,即我们看到的网页信息。

 

posted on 2015-03-02 23:28  beyond_Acm  阅读(268)  评论(0编辑  收藏  举报