整个过程基本分为下面几个部分: 1、域名解析成IP地址; 2、与目的主机进行TCP连接(三次连接); 3、发送与收取数据; 4、与目的主机断开TCP连接(四次挥手);
域名解析过程如下 1、浏览器向本机DNS模块发出DNS请求,DNS模块生成相关的DNS报文。 2、DNS模块将生成的DNS报文传递给传输层的UDP协议单元。 3、UDP协议单元将该数据封装成UDP数据报,传递给网络层的IP协议单元。 4、IP协议单元将改数据封装成IP数据报,其目的IP地址为DNS服务器的IP地址。 5、封装好的IP数据包将传递给数据链路层的协议单元进行发送。 6、发送时在ARP缓存中查询相关数据,如果没有,就发送ARP广播(包含待查询的IP地址,收到广播的主机检查自己的IP,符合条件的主机将含有自己MAC地址的ARP包发送给ARP广播的主机)请求,等待ARP缓存表。 7、得到ARP回应后,将IP地址与路由的下一跳MAC地址对应的信息写入ARP缓存表。 8、写入缓存后,以路由下一跳的地址填充目的MAC地址,以数据帧形式转发。 9、转发可能进行多次。 10、DNS请求到达DNS服务器的数据链路层协议单元。 11、DNS服务器的数据链路层协议单元解析数据帧,将内部的IP数据包传递给网络层IP协议单元。 12、DNS服务器的IP协议单元解析IP数据包,将内部的UDP数据包传递给传输层UDP协议单元。 13、DNS服务器的UDP协议单元解析收到的UDP数据报,将内部的DNS报文传递给DNS服务单元。 14、DNS服务单元将域名解析成对应IP地址,产生DNS回应报文。 15、DNS回应报文-》UDP-》IP-》MAC-》我的主机。 16、我的主机收到数据帧,将数据帧-》IP-》UDP-》浏览器。 17、将域名解析结果以域名和IP地址对应的形式写入DNS缓存表。
ARP,类似于DNS将域名翻译成IP,ARP则是将IP翻译成MAC地址,我们知道了IP后,需要通过主机的MAC地址来更具体的找到主机。同样的有一个ARP缓存,其中存储了一些IP与MAC地址的对应关系,如果缓存中找不到,就会进行广播来查找MAC地址,收到广播得主机会检查自己的IP是否是待查找的IP,是的话就返回自己的MAC地址。
与目的主机进行TCP连接(三次握手) 得到域名对应的IP地址后,也就表示可以将数据送达目的主机了,开始三次握手建立连接。
1、向目的主机发送TCP连接请求报文。 2、该TCP报文中SYN标志位设为1,表示连接请求。 3、该TCP报文通过IP(DNS)-》MAC(ARP)-》网关-》目的主机。 4、目的主机收到数据帧,通过IP-》TCP,TCP协议单元回应请求应答报文。 5、该报文中SYN和ACK标志设为1,表示连接请求应答。 6、该TCP报文通过IP(DNS)-》MAC(ARP)-》网关-》我的主机。 7、我的主机收到数据帧,通过IP-》TCP,TCP协议单元回应请求确认报文。 8、该TCP报文通过IP(DNS)-》MAC(ARP)-》网关-》目的主机。 9、目的主机收到数据帧,通过IP-》TCP,连接建立完成。
发送与收取数据 只有建立连接后才能开始传输数据,数据其实有多种传输方式,比如分段、分组、分时等。一个数据包的传输过程如下,以HTTP的GET方法请求为例: 1、浏览器向域名发出GET方法报文。 2、该GET方法报文通过TCP-》IP(DNS)-》MAC(ARP)-》网关-》目的主机。 3、目的主机收到数据帧,通过IP-》TCP-》HTTP,HTTP协议单元会回应HTTP协议格式封装好的HTML形式数据。 4、该HTML数据通过TCP-》IP(DNS)-》MAC(ARP)-》网关-》我的主机。 5、我的主机收到数据帧,通过IP-》TCP-》HTTP-》浏览器,浏览器以网页形式显示HTML内容。
与目的主机断开TCP连接(四次挥手) 1、浏览器向目的主机发出TCP连接结束请求报文,此时进入FIN WAIT状态。 2、该报文FIN标志位设为1,表示结束请求。 3、TCP结束请求报文通过IP(DNS)-》MAC(ARP)-》网关-》目的主机 4、目的主机收到数据帧,通过IP-》TCP,TCP协议单元回应结束应答报文。 5、当前只是进行回应,因为目的主机可能还有数据要传,并不急着断开连接。 6、该报文中ACK标志位设为1,表示收到结束请求。 7、目的数据发送完所有数据后,向我的主机发出TCP连接结束请求报文。 8、该报文FIN状态位设为1,表示结束请求。 9、TCP结束请求报文通过IP(DNS)-》MAC(ARP)-》网关-》我的主机。 10、我的主机收到数据帧,通过IP-》TCP,TCP协议单元回应结束应答报文,此时进入TIME WAIT状态,因为不相信网络是可靠的,如果目的主机没收到还可以重发。 11、该报文中的FIN标志位均设为1,表示结束应答。 12、该TCP回应报文通过IP(DNS)-》MAC(ARP)-》网关-》我的主机。 13、目的主机关闭连接。 14、TIME WAIT 等待结束后,没有收到回复,说明目的正常关闭了,我的主机也关闭连接。