浏览器输入URL访问服务器过程

来源:互联网 发布:怎么判断两个矩阵相似 编辑:程序博客网 时间:2024/06/05 11:36

我们来看看在自己的浏览器中输入URL:www.sina.com.cn,连接都经历了哪些过程

域名解析DNS

域名是方便人们记忆的,不然那么多网站,人怎么可能记住所有的ip地址。

www.sina.com.cn这个是新浪的域名,在输入该域名之后,进行的就是域名解析了,经过解析之后,变成相应的ip地址。

但是,很多人都会问,在网上查到新浪的IP地址,在自己的电脑上输入为什么就连接不上。原因是大的门户网站可能不止一个ip地址,根据不同的网络他们会有很多的ip来做集群。有的是通过dns来实现负载均衡,有的是用squid来实现的。这里就不对其展开了。

Socket建立连接

Socket连接是通过ip和端口建立的。当dns解析完成,我们就拥有了目标IP和端口号,这样我们就可以开始建立连接,接下来就是大家都清楚的3次握手,这里就不展开了,相关的内容可以去查看网络通信的三次握手。

通信

连接成功建立后,浏览器开始向web服务器发送请求,这个请求一般是GET或POST命令,之后,web服务器接受到这个请求,进行处理,返回给浏览器相应的内容。这之间传送的就是数据包了。至于数据包在网络分层中的漫游经历接下来会具体的讲述

关闭连接

关闭连接就是大家熟悉的网络通信的4次挥手。

数据包在网络中的漫游经历

首先,你要清楚网络分层模型,OSI7层模型,但对我来说我通常习惯去记忆TCP/IP的四层模型:应用层,传输层,网络层(网际层IP),网络接口层(链路层),不同版本的教材对这四层的名字不一样。

TCP/IP参考模型的相关常用协议

应用层

FTP、TELNET、HTTP

SNMP、TFTP、NTP

传输层

TCP

UDP

网络层

IP、ARP、RARP

注意:这里ARP和RARP是有的教材放到网络层的,但是在OSI模型当中,被划分到链路层,但是讨论ARP协议究竟是属于哪一层一点意义都没有。

 

1.      在应用层中,HTTP协议传输的是web的内容,根据当前的需求和动作,我们确定要发送的数据内容,从而形成了应用层的报文data。

2.      这些报文通过传输层发送,tcp协议或者udp协议,在头部加上指定的端口和其他的信息,这样就组成了传输层的数据报文,单位就是segment。注:TCP和UDP的区别

3.      带发送的数据段送到网络层,在网络层被打包,包头内部含有源以及目的ip地址,该层数据发送单位被成为packet。

4.       在网络层数据被打包后,网络层就开始负责将这样的数据包在网络上传输。如何穿过路由器,最终到达目的地址,这里就是需要知道路由表和路由选择算法了,在这里不做展开。注:数据包中会有一个最大路由跳数,如果在各个路由传输的时候,个数超过了这个跳数,那么就会丢弃这个数据包

5.       经过路由选择,查找到下一跳的ip地址后,还要知道mac地址,这个mac地址作为链路层数据被装进数据报的头部,这个时候的数据单位是Frame

注:在这个链路层中,有一个比较重要的协议ARP,在同一网内可能包含有多个主机,所以如果仅仅知道ip地址是没有用的,这个时候会发生ARP请求,该请求包含源IP和MAC地址以及目的IP和MAC地址,在网内进行广播, 所有的网内主机会检查自己的ip和mac,如果对应,就建立连接传送数据,这样也就避免了,传输过来的数据需要发送到同一网内的所有主机。

附:TCP/IP模型中各层主要的协议简介

 

物理层

设备,中继器(repeater,集线器(hub)。对于这一层来说,从一个端口收到数据,会转发到所有端口。

 

链路层

MAC地址表,一个ip下可能会有多个主机,交换机通过目的MAC地址知道应该把这个数据转发到哪个端口。而不会像HUB一样,会转发到所有滴端口。。

 

网络层

四个主要的协议:   

网际协议IP:负责在主机和网络之间寻址和路由数据包。     

地址解析协议ARP:获得同一物理网络中的硬件主机地址。     

网际控制消息协议ICMP:发送消息,并报告有关数据包的传送错误。     

互联组管理协议IGMP:被IP主机拿来向本地多路广播路由器报告主机组成员。

 

传输层

两个重要协议 TCP UDP

 

应用层

基于tcpTelnet FTP SMTP DNS HTTP 

基于udpRIP NTP(网落时间协议)和DNSDNS也使用TCPSNMP TFTP

 

2 0
原创粉丝点击