第一步
在网页中输入网址。
例:https://www.taobao.com
第二步
浏览器会先解析域名,然后与对方的服务器端口进行连接;
源于:https://blog.youkuaiyun.com/u012248450/article/details/51036329
-
Client首先发送一个连接试探,ACK=0 表示确认号无效,SYN = 1 表示这是一个连接请求或连接接受报文,同时表示这个数据报不能携带数据,seq = x 表示Client自己的初始序号(seq = 0 就代表这是第0号包),这时候Client进入syn_sent状态,表示客户端等待服务器的回复
-
Server监听到连接请求报文后,如同意建立连接,则向Client发送确认。TCP报文首部中的SYN 和 ACK都置1 ,ack = x + 1表示期望收到对方下一个报文段的第一个数据字节序号是x+1,同时表明x为止的所有数据都已正确收到(ack=1其实是ack=0+1,也就是期望客户端的第1个包),seq = y 表示Server 自己的初始序号(seq=0就代表这是服务器这边发出的第0号包)。这时服务器进入syn_rcvd,表示服务器已经收到Client的连接请求,等待client的确认。
-
Client收到确认后还需再次发送确认,同时携带要发送给Server的数据。ACK 置1 表示确认号ack= y + 1 有效(代表期望收到服务器的第1个包),Client自己的序号seq= x + 1(表示这就是我的第1个包,相对于第0个包来说的),一旦收到Client的确认之后,这个TCP连接就进入Established状态,就可以发起http请求了。
第三步
接下来浏览器会向对方服务器发送 http请求。这个时候,对方服务器端口上的 javaweb程序会去数据库中获取数据并将其转换为网页源代码的形式。
第四步
服务器将网页源代码发送到用户的浏览器上,浏览器会解析得到的html代码,然后将其渲染后显示给用户。