当你在Web浏览器中输入一个URL,发生了什么?

当你在Web浏览器中输入一个URL,发生了什么?

分为8步来回答:
1、浏览器(客户端)进行地址解析。

2、将解析出的域名进行dns解析。

3、通过ip寻址和arp,找到目标(服务器)地址。

4、进行tcp三次握手,建立tcp连接。

5、浏览器发送数据,等待服务器响应。

6、服务器处理请求,并对请求做出响应。

7、浏览器收到服务器响应,得到html代码。

8、渲染页面。

应用层

DNS协议
•同一台主机上运行着DNS应用的客户端
•浏览器从URL中抽取出主机名,将主机名传递给DNS应用的客户端
•DNS客户向DNS服务器发送一个包含主机名的请求
•DNS客户最终收到一份回答报文,其中含有主机名的ip地址
•收到ip地址后向位于该IP地址80端口的HTTP服务器进程发起一个TCP连接

HTTP协议
HTTP协议由两个程序实现:一个是客户端程序和一是服务端程序,运行在不同的端系统中,通过HTTP报文进行会话。HTTP定义了Web客户向Web服务器请求Web页面的方式,Web页面是存放在Web服务器中的,Web页面包含有一个HTML基本文件以及几个引用对象,流行的Web服务器有Apache。HTTP使用TCP作为它的支撑运输协议。

传输层
TCP协议

在因特网协议族(Internet protocol suite)四层协议中,TCP层是位于IP层之上,应用层之下的传输层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制)。之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个字节一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算和校验。

首先,TCP建立连接之后,通信双方都同时可以进行数据的传输,其次,它是全双工的;在保证可靠性上,采用超时重传和捎带确认机制。

在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。

在拥塞控制上,采用广受好评的TCP拥塞控制算法(也称AIMD算法),该算法主要包括三个主要部分:1,加性增、乘性减;2,慢启动;3,对超时事件做出反应。

TCP协议通过三个报文段完成连接的建立,这个过程称为三次握手(three-wayhandshake),过程如下图所示。
三次握手

连接终止
建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。具体过程如下图所示。

四次放手

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章