-
我们在用户PC中使用网页浏览器来访问web服务器的内容,在网页浏览器的地址栏中输入web服务器的域名
-
用户PC中的DNS客户端进程会发送一个DNS查询请求报文,其内容为"www.porttest.com所对应的ip地址是什么?"
-
DNS查询请求需要使用运输层的UDP协议,进而封装成用户数据报,其首部中的源端口字段值在短暂端口号49151~65535中挑选一个未被占用的,用来表示DNS客户端进程,例如49152,目的端口字段的值设置为53,这是DNS服务器端所使用的熟知端口号。
-
之后将UDP数据报封装在IP数据报中,通过以太网发送给DNS服务器,DNS服务器端收到该数据报后,从中解析出UDP用户数据包,UDP首部中的目的端口号为53,这表明应该将UDP用户数据报的数据载荷部分,也就是DNS查询请求报文交付给本服务器中的DNS服务器进程,DNS服务器端进程解析DNS查询请求报文的内容,然后按其要求查找对应的ip地址。
-
之后,会给用户PC发送DNS响应报文,其内容为"www.porttest.com所对应的ip地址是192.168.0.3"。
-
DNS响应报文需要使用运输层的UDP协议,封装成用户UDP数据报,其首部中的源端口字段的值设置为熟知端口号53,表明这是DNS服务器端进程所发送的UDP用户数据报,目的端口号的值设置为49152,这是之前用户PC中发送DNS查询请求报文的DNS客户端进程所使用的短暂端口号。
-
之后,将UDP用户数据报封装在IP数据报中,通过以太网发送给用户PC,用户PC收到该数据报后,从中解封出UDP用户数据报,UDP首部中的目的端口号为49152,这表明应将该UDP用户数据报的数据载荷部分,也就是DNS响应报文,交互给用户PC中的DNS客户端进程,DNS客户端进程解析DNS响应报文的内容,就可知道自己之前所请求的Web服务器的域名所对应的ip地址为192.168.0.3。
-
现在用户PC中的HTTP客户端进程,可以向Web服务器发送HTTP请求报文了,其内容为“首页内容是什么?”,HTTP请求报文需要使用运输层的TCP协议封装成TCP报文段,其首部中的源端口字段的值在短暂端口号49151~65535中挑选一个未被占用的,用来表示HTTP客户端进程,例如仍然使用之前用过的49152,目的端口字段的值设置为80,这是HTTP服务器端进程所使用的熟知端口号。
-
之后,将TCP报文段封装在IP数据报中,通过以太网发送给Web服务器,Web服务器收到该数据报后,从中解析出TCP报文段,TCP首部中的目的端口号为80,这表明应将该TCP报文段中的数据载荷部分,也就是HTTP请求报文交付给本服务器中的HTTP服务器端进程,HTTP服务器端进程解析HTTP请求报文的内容,然后按其要求查找首页内容,之后会给用户发送HTTP响应报文,其内容是HTTP客户端所请求的首页内容,HTTP响应报文需要使用运输层的TCP协议封装成TCP报文段,其首部中的源端口字段的值设置为熟知端口号80,表明这是HTTP服务器端进程所发送的TCP报文段,目的端口字段的值设置为49152,这是之前用户PC中发送HTTP请求报文的HTTP客户端进程所使用的短暂端口号
-
之后将TCP报文段封装在IP数据报中,通过以太网发送给用户PC,用户PC收到该数据报之后从中解析出TCP报文段,然后HTTP客户端进程解析HTTP响应报文的内容,并在网页浏览器中进行显示,这样我们就可以在网页浏览器中,看到Web服务器所提供的首页内容了